<?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>195827</bug_id>
          
          <creation_ts>2019-03-15 15:24:24 -0700</creation_ts>
          <short_desc>[JSC] Owner of watchpoints should validate at GC finalizing phase</short_desc>
          <delta_ts>2019-03-27 19:36:32 -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>JavaScriptCore</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>
          
          <blocked>196314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517190</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-15 15:24:24 -0700</bug_when>
    <thetext>m_object in ObjectPropertyCondition may no longer be live by the time the watchpoint fires.

&lt;rdar://problem/48845513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517194</commentid>
    <comment_count>1</comment_count>
      <attachid>364857</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-15 15:28:16 -0700</bug_when>
    <thetext>Created attachment 364857
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517206</commentid>
    <comment_count>2</comment_count>
      <attachid>364857</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2019-03-15 15:39:39 -0700</bug_when>
    <thetext>Comment on attachment 364857
proposed patch.

I’m fine with this fix but please file a bug about how we shouldn’t have watchpoints that fire after death and add a fixme at all isStillLive checks that links to that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517226</commentid>
    <comment_count>3</comment_count>
      <attachid>364865</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-15 15:58:39 -0700</bug_when>
    <thetext>Created attachment 364865
patch for landing.

Thanks for the review.  I&apos;ve added the FIXMEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517360</commentid>
    <comment_count>4</comment_count>
      <attachid>364865</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-15 21:45:03 -0700</bug_when>
    <thetext>Comment on attachment 364865
patch for landing.

Clearing flags on attachment: 364865

Committed r243032: &lt;https://trac.webkit.org/changeset/243032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517361</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-15 21:45:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517689</commentid>
    <comment_count>6</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-18 08:25:41 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/243032/webkit

has caused inspector/model/remote-object.html

to become a near constant failure.

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=inspector%2Fmodel%2Fremote-object.html

Diff:
https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK1%20(Tests)/r243061%20(11964)/inspector/model/remote-object-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517722</commentid>
    <comment_count>7</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-18 09:32:10 -0700</bug_when>
    <thetext>Tracking new failing test in https://bugs.webkit.org/show_bug.cgi?id=195892</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519692</commentid>
    <comment_count>8</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-03-21 09:53:13 -0700</bug_when>
    <thetext>It appears that changes in https://trac.webkit.org/changeset/243032

Are causing a JSC failure on the Debug queue

microbenchmarks/data-view-accesses-2.js.ftl-no-cjit-small-pool

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/2348/steps/jscore-test/logs/stdio

Regression range is 243030 to 243033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520670</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-23 20:56:34 -0700</bug_when>
    <thetext>The fix is incorrect: it relies on being able to determine liveness of an object in an ObjectPropertyCondition based on the state of the object&apos;s MarkedBit.  However, there&apos;s no guarantee that GC has run and that the MarkedBit is already set if the object is live.  As a result, we may not re-install adaptive watchpoints based on presumed dead objects which are actually live.

I&apos;m going to roll this out, and implement a more comprehensive fix to handle watchpoint liveness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520797</commentid>
    <comment_count>10</comment_count>
      <attachid>365851</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-24 23:25:07 -0700</bug_when>
    <thetext>Created attachment 365851
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520803</commentid>
    <comment_count>11</comment_count>
      <attachid>365851</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-24 23:48:13 -0700</bug_when>
    <thetext>Comment on attachment 365851
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        responsibility of each Watchpoint subclass to override it to check for if any

/check for if/check if/

&gt; Source/JavaScriptCore/ChangeLog:22
&gt; +        cells it references is till alive or not.

/is till/is still/

&gt; Source/JavaScriptCore/ChangeLog:43
&gt; +        reference in the watchpoints.  I opted not to go fo this approach because it will

/reference/referenced/
/go fo/go for/

&gt; Source/JavaScriptCore/ChangeLog:50
&gt; +        Preliminary perf measurements on JetStream via the CLU shows a possible .36%

/CLU/CLI/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521611</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-26 21:29:10 -0700</bug_when>
    <thetext>Rough thought. I&apos;m now start considering about why these watchpoints are not destroyed.
I think we have only several Cells that are allowed to hold watchpoints (not WatchpointSet).
CodeBlock, JSGlobalObject, FunctionRareData, etc. If they manage these watchpoints lifetime correctly, I think we can destroy watchpoints before we go into super crazy state like having dead objects.
I need to check this is right even with the incremental sweeper, but maybe, it would be OK.

From the viewpoint of the above thought, AllocationProfileClearingWatchpoint&apos;s implementation is right. It only holds FunctionRareData*, and this watchpoint itself is managed by this cell.
ObjectToStringAdaptiveStructureWatchpoint is obviously wrong. Nobody is responsible to m_key&apos;s liveness.
DFG::AdaptiveStructureWatchpoint should be right. Its object cell should be held as weak/strong by DFG code, and CodeBlock should maintain this liveness, and it should destroy this watchpoint if this object cell becomes dead.
I believe StructureStubClearingWatchpoint is right. Its object cell should be managed by PolymorphicAccess. I need to look into it deeply but I think it should be right. And if it has a bug, fixing it should be easy.
LLIntPrototypeLoadAdaptiveStructureWatchpoint should be right because it is managed by CodeBlock. Actually, we are reaping dead watchpoint in CodeBlock::finalizeLLIntInlineCaches.
CodeBlockJettisoningWatchpoint is obviously right, managed by CodeBlock.
ObjectPropertyChangeAdaptiveWatchpoint is only used by JSGlobalObject. I think we should rename ObjectPropertyChangeAdaptiveWatchpoint to JSGlobalObjectPropertyChangeAdaptiveWatchpoint or something like that, and we should insert liveness check of JSGlobalObject here. And it should be safe.

I need to check the other watchpoints, but I think we do not need to iterate all the watchpoints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521615</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-26 22:05:32 -0700</bug_when>
    <thetext>These watchpoints&apos; fire procedure should be guarded by owner cell&apos;s isLive check. Let&apos;s consider the following case,

Watchpoint
    JSCell* owner;
    ObjectConditionProperty m_key;

This watchpoint can be live until owner cell&apos;s destructor is called. And m_key&apos;s object&apos;s destructor can be called earlier because GC does not have any restriction on the order of destructions. As long as we check owner-&gt;isLive(), we can ensure that this watchpoint is correctly maintained by the owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521621</commentid>
    <comment_count>14</comment_count>
      <attachid>366051</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-26 22:34:47 -0700</bug_when>
    <thetext>Created attachment 366051
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521629</commentid>
    <comment_count>15</comment_count>
      <attachid>366056</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-26 23:44:09 -0700</bug_when>
    <thetext>Created attachment 366056
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521634</commentid>
    <comment_count>16</comment_count>
      <attachid>366058</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 00:03:21 -0700</bug_when>
    <thetext>Created attachment 366058
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521637</commentid>
    <comment_count>17</comment_count>
      <attachid>366060</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 00:28:29 -0700</bug_when>
    <thetext>Created attachment 366060
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521638</commentid>
    <comment_count>18</comment_count>
      <attachid>366061</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 00:30:04 -0700</bug_when>
    <thetext>Created attachment 366061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521641</commentid>
    <comment_count>19</comment_count>
      <attachid>366061</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 00:51:10 -0700</bug_when>
    <thetext>Comment on attachment 366061
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:78
&gt; +        * runtime/ArrayBufferNeuteringWatchpointSet.h: Renamed from Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.h.

This is renaming. It is not Watchpoint, it is WatchpointSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521742</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 10:53:02 -0700</bug_when>
    <thetext>I&apos;ll check JSGlobalObjects&apos; watchpoints too in a follow-up bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521803</commentid>
    <comment_count>21</comment_count>
      <attachid>366061</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-27 13:16:50 -0700</bug_when>
    <thetext>Comment on attachment 366061
Patch

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

r=me too

&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.cpp:39
&gt; +    if (!m_holder.isValid())

why not call it m_owner?

&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:82
&gt; +    bool isValid() const;

why not call it isLive() in line with your naming elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521807</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 13:29:38 -0700</bug_when>
    <thetext>Committed r243560: &lt;https://trac.webkit.org/changeset/243560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521811</commentid>
    <comment_count>23</comment_count>
      <attachid>366061</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 13:36:59 -0700</bug_when>
    <thetext>Comment on attachment 366061
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.cpp:39
&gt;&gt; +    if (!m_holder.isValid())
&gt; 
&gt; why not call it m_owner?

I used the original field name but we can consistently use the name &quot;owner&quot;, I&apos;ll fix it in a follow-up patch :D

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:82
&gt;&gt; +    bool isValid() const;
&gt; 
&gt; why not call it isLive() in line with your naming elsewhere?

I think the name &quot;isValid()&quot; is nice because it means that this function name indicates that this returns &quot;isValid&quot; boolean.
Checking the liveness of the owner is the implementation of validity checking, and I think watchpoints can be invalid due to the other reasons.
And AdaptiveInferredPropertyValueWatchpointBase uses &quot;isValid()&quot; for this purpose already. So I like &quot;isValid()&quot; name here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521964</commentid>
    <comment_count>24</comment_count>
      <attachid>366061</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-27 18:41:36 -0700</bug_when>
    <thetext>Comment on attachment 366061
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:82
&gt;&gt;&gt; +    bool isValid() const;
&gt;&gt; 
&gt;&gt; why not call it isLive() in line with your naming elsewhere?
&gt; 
&gt; I think the name &quot;isValid()&quot; is nice because it means that this function name indicates that this returns &quot;isValid&quot; boolean.
&gt; Checking the liveness of the owner is the implementation of validity checking, and I think watchpoints can be invalid due to the other reasons.
&gt; And AdaptiveInferredPropertyValueWatchpointBase uses &quot;isValid()&quot; for this purpose already. So I like &quot;isValid()&quot; name here :)

But this is so close to the name isStillValid() 

I think it&apos;s confusing to have two methods you can invoke on this type, &quot;isValid()&quot; and &quot;isStillValid()&quot;. How am i supposed to know the difference just based on their names?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521979</commentid>
    <comment_count>25</comment_count>
      <attachid>366061</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-27 19:36:32 -0700</bug_when>
    <thetext>Comment on attachment 366061
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:82
&gt;&gt;&gt;&gt; +    bool isValid() const;
&gt;&gt;&gt; 
&gt;&gt;&gt; why not call it isLive() in line with your naming elsewhere?
&gt;&gt; 
&gt;&gt; I think the name &quot;isValid()&quot; is nice because it means that this function name indicates that this returns &quot;isValid&quot; boolean.
&gt;&gt; Checking the liveness of the owner is the implementation of validity checking, and I think watchpoints can be invalid due to the other reasons.
&gt;&gt; And AdaptiveInferredPropertyValueWatchpointBase uses &quot;isValid()&quot; for this purpose already. So I like &quot;isValid()&quot; name here :)
&gt; 
&gt; But this is so close to the name isStillValid() 
&gt; 
&gt; I think it&apos;s confusing to have two methods you can invoke on this type, &quot;isValid()&quot; and &quot;isStillValid()&quot;. How am i supposed to know the difference just based on their names?

Talked with Saam. Watchpoint does not have &quot;isStillValid()&quot; method (it is defined in WatchpointSet).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364857</attachid>
            <date>2019-03-15 15:28:16 -0700</date>
            <delta_ts>2019-03-15 15:58:39 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195827.patch</filename>
            <type>text/plain</type>
            <size>8532</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDMwMTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBOZWVkIHRvIGNoZWNrIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGxpdmVu
ZXNzIGJlZm9yZSBhY2Nlc3NpbmcgaXQgd2hlbiBmaXJpbmcgd2F0Y2hwb2ludHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4ODQ1NTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2NoZWNrLW9iamVjdC1wcm9wZXJ0eS1jb25kaXRp
b24tbGl2ZW5lc3MtYmVmb3JlLWFjY2Vzc2luZy1pdC13aGVuLXdhdGNocG9pbnRzLWZpcmUuanM6
IEFkZGVkLgorCiAyMDE5LTAzLTE1ICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtBUk0sTUlQU10gU2tpcCBzbG93IHRlc3RzCkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9jaGVjay1vYmplY3QtcHJvcGVydHktY29uZGl0aW9uLWxpdmVuZXNzLWJlZm9yZS1h
Y2Nlc3NpbmctaXQtd2hlbi13YXRjaHBvaW50cy1maXJlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL2NoZWNrLW9iamVjdC1wcm9wZXJ0eS1jb25kaXRpb24tbGl2ZW5lc3MtYmVmb3Jl
LWFjY2Vzc2luZy1pdC13aGVuLXdhdGNocG9pbnRzLWZpcmUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3MvY2hlY2stb2JqZWN0LXByb3BlcnR5LWNvbmRpdGlvbi1saXZlbmVzcy1i
ZWZvcmUtYWNjZXNzaW5nLWl0LXdoZW4td2F0Y2hwb2ludHMtZmlyZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZm9yY2VFYWdlckNvbXBp
bGF0aW9uPXRydWUiKQorCisvLyBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KKworbGV0IGE7
CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICBhIC8gMTsKKyAgICBhID0gbnVsbDsKK30KKworZnVu
Y3Rpb24gZm9vKHMpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHMpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgYmFyKCk7CisgICAgICAgICcnICsgZSArIDA7
CisgICAgfQorfQorCitmb28oJ3p6Jyk7Citmb28oJ2NsYXNzIEEgeyB5KCkge30gfTsgYT1uZXcg
QTsgenonKTsKK2ZvbygnY2xhc3MgQyB7IHkoKSB7fSB9OyBnYygpOycpOworCitjbGFzcyBBIHsK
KyAgICB5KCkge30KK30KKworQS5wcm90b3R5cGUueiA9IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjQzMDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTAzLTE1ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIHRvIGNoZWNrIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGxpdmVuZXNzIGJlZm9yZSBhY2Nlc3NpbmcgaXQgd2hlbiBmaXJpbmcg
d2F0Y2hwb2ludHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODQ1NTEzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG1fb2JqZWN0IGluIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIG1heSBubyBsb25nZXIgYmUgbGl2ZSBieSB0aGUgdGltZSB0aGUg
d2F0Y2hwb2ludCBmaXJlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb24uY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcElu
Q29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKwogMjAxOS0wMy0xNSAgRG9taW5payBJbmZ1ZWhyICA8
ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgdGVzdCAuanMgZmls
ZXMgaW50byB0ZXN0YXBpU2NyaXB0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAkocmV2aXNpb24gMjQzMDA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwCiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNv
bmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgeworICAgIGlmIChtX2tleS5pc1N0aWxsTGl2
ZSgpICYmIG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFi
aWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDI0MzAwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmUKIAogdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQog
ewotICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0
Y2hhYmlsaXR5KSkgeworICAgIGlmIChtX2tleS5pc1N0aWxsTGl2ZSgpICYmIG1fa2V5LmlzV2F0
Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAg
IGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRp
b24uY3BwCShyZXZpc2lvbiAyNDMwMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDEx
IEBAIHZvaWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmR1bXBJbkNvbnQKICAgICAgICAgb3V0
LnByaW50KCI8aW52YWxpZD4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKyAgICBp
ZiAoIWlzU3RpbGxMaXZlKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCI8bm90IGxpdmU+Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBvdXQucHJpbnQoIjwiLCBpbkNvbnRleHQoSlNW
YWx1ZShtX29iamVjdCksIGNvbnRleHQpLCAiOiAiLCBpbkNvbnRleHQobV9jb25kaXRpb24sIGNv
bnRleHQpLCAiPiIpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
Y3BwCShyZXZpc2lvbiAyNDMwMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
KQogewotICAgIGlmICghbV9rZXkgfHwgIW1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0
aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CisgICAgaWYgKCFtX2tleS5pc1N0aWxsTGl2ZSgp
IHx8ICFtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmls
aXR5KSkgewogICAgICAgICAvLyBUaGlzIHdpbGwgaW1wbGljaXRseSBjYXVzZSBteSBvd24gZGVt
aXNlOiBzdHViIHJlc2V0IHJlbW92ZXMgYWxsIHdhdGNocG9pbnRzLgogICAgICAgICAvLyBUaGF0
IHdvcmtzLCBiZWNhdXNlIGRlbGV0aW5nIGEgd2F0Y2hwb2ludCByZW1vdmVzIGl0IGZyb20gdGhl
IHNldCdzIGxpc3QsIGFuZAogICAgICAgICAvLyB0aGUgc2V0J3MgbGlzdCB0cmF2ZXJzYWwgZm9y
IGZpcmluZyBpcyByb2J1c3QgYWdhaW5zdCB0aGUgc2V0IGNoYW5naW5nLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMjQzMDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUyLDcgKzUyLDcgQEAgdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbAog
CiB2b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwg
Y29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewotICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQ
cm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgeworICAgIGlmIChtX2tleS5p
c1N0aWxsTGl2ZSgpICYmIG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1
cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjQzMDA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTkxLDcgKzE5MSw3IEBAIHZvaWQgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGMK
ICAgICBpZiAoIW1fc3RydWN0dXJlUmFyZURhdGEtPmlzTGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdh
dGNoYWJpbGl0eSkpIHsKKyAgICBpZiAobV9rZXkuaXNTdGlsbExpdmUoKSAmJiBtX2tleS5pc1dh
dGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewogICAgICAg
ICBpbnN0YWxsKHZtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>
<flag name="review"
          id="381337"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364865</attachid>
            <date>2019-03-15 15:58:39 -0700</date>
            <delta_ts>2019-03-24 21:33:25 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-195827.patch</filename>
            <type>text/plain</type>
            <size>9674</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDMwMjApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBOZWVkIHRvIGNoZWNrIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGxpdmVu
ZXNzIGJlZm9yZSBhY2Nlc3NpbmcgaXQgd2hlbiBmaXJpbmcgd2F0Y2hwb2ludHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4ODQ1NTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBp
emxvLgorCisgICAgICAgICogc3RyZXNzL2NoZWNrLW9iamVjdC1wcm9wZXJ0eS1jb25kaXRpb24t
bGl2ZW5lc3MtYmVmb3JlLWFjY2Vzc2luZy1pdC13aGVuLXdhdGNocG9pbnRzLWZpcmUuanM6IEFk
ZGVkLgorCiAyMDE5LTAzLTE1ICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtBUk0sTUlQU10gU2tpcCBzbG93IHRlc3RzCkluZGV4OiBKU1Rlc3RzL3N0
cmVzcy9jaGVjay1vYmplY3QtcHJvcGVydHktY29uZGl0aW9uLWxpdmVuZXNzLWJlZm9yZS1hY2Nl
c3NpbmctaXQtd2hlbi13YXRjaHBvaW50cy1maXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMv
c3RyZXNzL2NoZWNrLW9iamVjdC1wcm9wZXJ0eS1jb25kaXRpb24tbGl2ZW5lc3MtYmVmb3JlLWFj
Y2Vzc2luZy1pdC13aGVuLXdhdGNocG9pbnRzLWZpcmUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9zdHJlc3MvY2hlY2stb2JqZWN0LXByb3BlcnR5LWNvbmRpdGlvbi1saXZlbmVzcy1iZWZv
cmUtYWNjZXNzaW5nLWl0LXdoZW4td2F0Y2hwb2ludHMtZmlyZS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZm9yY2VFYWdlckNvbXBpbGF0
aW9uPXRydWUiKQorCisvLyBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KKworbGV0IGE7CisK
K2Z1bmN0aW9uIGJhcigpIHsKKyAgICBhIC8gMTsKKyAgICBhID0gbnVsbDsKK30KKworZnVuY3Rp
b24gZm9vKHMpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHMpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgYmFyKCk7CisgICAgICAgICcnICsgZSArIDA7Cisg
ICAgfQorfQorCitmb28oJ3p6Jyk7Citmb28oJ2NsYXNzIEEgeyB5KCkge30gfTsgYT1uZXcgQTsg
enonKTsKK2ZvbygnY2xhc3MgQyB7IHkoKSB7fSB9OyBnYygpOycpOworCitjbGFzcyBBIHsKKyAg
ICB5KCkge30KK30KKworQS5wcm90b3R5cGUueiA9IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjQzMDIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTAzLTE1ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIHRvIGNoZWNrIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGxpdmVuZXNzIGJlZm9yZSBhY2Nlc3NpbmcgaXQgd2hlbiBmaXJpbmcgd2F0
Y2hwb2ludHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODQ1NTEzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIG1fb2JqZWN0IGluIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIG1heSBubyBsb25nZXIgYmUgbGl2ZSBieSB0aGUgdGltZSB0aGUgd2F0Y2hw
b2ludCBmaXJlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZp
cmVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24u
Y3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcEluQ29udGV4
dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6
OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6ZmlyZUludGVybmFsKToKKwogMjAxOS0wMy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgbW9yZSBwcm9wZXJ0aWVzIGxhemlseS1h
bGxvY2F0ZWQgaW4gSlNHbG9iYWxPYmplY3QsIGluY2x1ZGluZyBwcm9wZXJ0aWVzIG9ubHkgdXNl
ZCBpbiBKSVQgbW9kZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlLmNwcAkocmV2aXNpb24gMjQzMDIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjIsOSBAQCB2b2lkIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6
RW5zdXJlV2F0Y2hhYmlsaXR5KSkgeworICAgIC8vIEZJWE1FOiBUaGUgbV9rZXkuaXNTdGlsbExp
dmUoKSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZCBpZiB0aGlzIHdhdGNocG9pbnQgd2FzIHJl
bW92ZWQKKyAgICAvLyB3aGVuIG1fa2V5J3MgbV9vYmplY3QgZGllZC4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgyOQorICAgIGlmIChtX2tleS5pc1N0aWxsTGl2
ZSgpICYmIG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFi
aWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDI0MzAyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw5IEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmUKIAogdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQog
ewotICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0
Y2hhYmlsaXR5KSkgeworICAgIC8vIEZJWE1FOiBUaGUgbV9rZXkuaXNTdGlsbExpdmUoKSBjaGVj
ayBzaG91bGQgbm90IGJlIG5lZWRlZCBpZiB0aGlzIHdhdGNocG9pbnQgd2FzIHJlbW92ZWQKKyAg
ICAvLyB3aGVuIG1fa2V5J3MgbV9vYmplY3QgZGllZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTgyOQorICAgIGlmIChtX2tleS5pc1N0aWxsTGl2ZSgpICYmIG1f
a2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7
CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24uY3BwCShyZXZpc2lvbiAyNDMwMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3
LDcgKzM3LDE0IEBAIHZvaWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmR1bXBJbkNvbnQKICAg
ICAgICAgb3V0LnByaW50KCI8aW52YWxpZD4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKworICAgIC8vIEZJWE1FOiBUaGUgbV9rZXkuaXNTdGlsbExpdmUoKSBjaGVjayBzaG91bGQg
bm90IGJlIG5lZWRlZCBpZiB0aGUgd2F0Y2hwb2ludCB1c2luZyB0aGlzCisgICAgLy8gY29uZGl0
aW9uIHdhcyByZW1vdmVkIHdoZW4gbV9vYmplY3QgZGllZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NTgyOQorICAgIGlmICghaXNTdGlsbExpdmUoKSkgeworICAg
ICAgICBvdXQucHJpbnQoIjxub3QgbGl2ZT4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIG91dC5wcmludCgiPCIsIGluQ29udGV4dChKU1ZhbHVlKG1fb2JqZWN0KSwgY29udGV4dCks
ICI6ICIsIGluQ29udGV4dChtX2NvbmRpdGlvbiwgY29udGV4dCksICI+Iik7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDI0MzAyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUlu
dGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCiB7Ci0gICAgaWYgKCFtX2tleSB8fCAh
bV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkp
IHsKKyAgICAvLyBGSVhNRTogVGhlIG1fa2V5LmlzU3RpbGxMaXZlKCkgY2hlY2sgc2hvdWxkIG5v
dCBiZSBuZWVkZWQgaWYgdGhpcyB3YXRjaHBvaW50IHdhcyByZW1vdmVkCisgICAgLy8gd2hlbiBt
X2tleSdzIG1fb2JqZWN0IGRpZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU4MjkKKyAgICBpZiAoIW1fa2V5LmlzU3RpbGxMaXZlKCkgfHwgIW1fa2V5LmlzV2F0
Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAg
IC8vIFRoaXMgd2lsbCBpbXBsaWNpdGx5IGNhdXNlIG15IG93biBkZW1pc2U6IHN0dWIgcmVzZXQg
cmVtb3ZlcyBhbGwgd2F0Y2hwb2ludHMuCiAgICAgICAgIC8vIFRoYXQgd29ya3MsIGJlY2F1c2Ug
ZGVsZXRpbmcgYSB3YXRjaHBvaW50IHJlbW92ZXMgaXQgZnJvbSB0aGUgc2V0J3MgbGlzdCwgYW5k
CiAgICAgICAgIC8vIHRoZSBzZXQncyBsaXN0IHRyYXZlcnNhbCBmb3IgZmlyaW5nIGlzIHJvYnVz
dCBhZ2FpbnN0IHRoZSBzZXQgY2hhbmdpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
CShyZXZpc2lvbiAyNDMwMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsOSBAQCB2
b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsCiAKIHZvaWQgQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWls
JiBkZXRhaWwpCiB7Ci0gICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9u
OjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CisgICAgLy8gRklYTUU6IFRoZSBtX2tleS5pc1N0aWxs
TGl2ZSgpIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkIGlmIHRoaXMgd2F0Y2hwb2ludCB3YXMg
cmVtb3ZlZAorICAgIC8vIHdoZW4gbV9rZXkncyBtX29iamVjdCBkaWVkLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODI5CisgICAgaWYgKG1fa2V5LmlzU3RpbGxM
aXZlKCkgJiYgbV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNo
YWJpbGl0eSkpIHsKICAgICAgICAgaW5zdGFsbCh2bSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNDMwMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTEsNyAr
MTkxLDkgQEAgdm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0YwogICAgIGlm
ICghbV9zdHJ1Y3R1cmVSYXJlRGF0YS0+aXNMaXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmls
aXR5KSkgeworICAgIC8vIEZJWE1FOiBUaGUgbV9rZXkuaXNTdGlsbExpdmUoKSBjaGVjayBzaG91
bGQgbm90IGJlIG5lZWRlZCBpZiB0aGlzIHdhdGNocG9pbnQgd2FzIHJlbW92ZWQKKyAgICAvLyB3
aGVuIG1fa2V5J3MgbV9vYmplY3QgZGllZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTgyOQorICAgIGlmIChtX2tleS5pc1N0aWxsTGl2ZSgpICYmIG1fa2V5Lmlz
V2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAg
ICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365851</attachid>
            <date>2019-03-24 23:25:07 -0700</date>
            <delta_ts>2019-03-26 22:34:46 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195827b.patch</filename>
            <type>text/plain</type>
            <size>45743</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDM0MjkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAzLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBHQyBzaG91bGQgcmVhcCBkZWFkIHdhdGNocG9pbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODI3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODg0NTUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRz
LmpzOiBBZGRlZC4KKwogMjAxOS0wMy0yNCAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBNb3ZlIHRlc3QgaW50byBkaXJlY3RvcnkgZm9yIFdB
U00gdGVzdHMKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hw
b2ludHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVh
ZC13YXRjaHBvaW50cy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9nYy1zaG91
bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1mb3JjZUVhZ2VyQ29tcGlsYXRpb249dHJ1ZSIpCisK
Ky8vIFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitsZXQgYTsKKworZnVuY3Rpb24gZm9v
KHMpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHMpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZ2MoKTsKKyAgICAgICAgYSAvIDE7CisgICAgICAgIGEgPSBudWxsOworICAgIH0KK30K
KworZm9vKCd6eicpOworZm9vKCdjbGFzcyBBIHsgeSgpIHt9IH07IGE9bmV3IEE7IHp6Jyk7Citm
b28oJ2NsYXNzIEMgeyB5KCkge30gfTsgZ2MoKTsnKTsKKworY2xhc3MgQSB7CisgICAgeSgpIHt9
Cit9CisKK0EucHJvdG90eXBlLnogPSAwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzQyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMzAgQEAKKzIwMTktMDMtMjQgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEdDIHNob3VsZCByZWFwIGRlYWQgd2F0Y2hwb2ludHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODQ1NTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIgdGhlIHllYXJzLCB3ZSd2ZSBoYWQgbWFu
eSBidWdzIHdoZXJlIHNvbWUgd2F0Y2hwb2ludCB0aGF0IHdvcmtzIG9uIGEgY2VsbAorICAgICAg
ICBzdGF5cyBhY3RpdmUgZXZlbiBhZnRlciBHQyBoYXMgY29sbGVjdGVkIHRoZSBjZWxsLiAgRXZl
bnR1YWxseSwgd2hlbiB0aGUKKyAgICAgICAgd2F0Y2hwb2ludCBmaXJlcywgaXRzIGFjY2VzcyBv
ZiB0aGUgY2VsbCBjYXVzZXMgY3Jhc2hlcyBvciBvdGhlciB1bmRlc2lyYWJsZQorICAgICAgICBl
ZmZlY3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0IGFsbCBhY3RpdmUgV2F0
Y2hwb2ludFNldHMgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgSGVhcC4KKyAgICAgICAgQWZ0ZXIg
ZWFjaCBHQywgd2Ugbm93IHJlYXBEZWFkV2F0Y2hwb2ludHMoKSBieSBpdGVyYXRpbmcgZWFjaCBX
YXRjaHBvaW50IGluIHRoZQorICAgICAgICBhY3RpdmUgV2F0Y2hwb2ludFNldHMsIGFuZCBjaGVj
a2luZyBpZiBpdCBpc0xpdmVBdEdDRW5kKCkuICBJZiB0aGUgd2F0Y2hwb2ludCBpcworICAgICAg
ICBkZWFkLCB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgV2F0Y2hwb2ludFNldCB0aGVyZWJ5IHByZXZl
bnRpbmcgaXQgZnJvbSBiZWluZyBmaXJlZAorICAgICAgICB0aGVyZWFmdGVyLgorCisgICAgICAg
IFRoZSBpc0xpdmVBdEdDRW5kKCkgbWV0aG9kIGlzIGltcGxlbWVudGVkIGFzIGEgdmlydHVhbCBt
ZXRob2QsIGFuZCBpdCBpcyB0aGUKKyAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgZWFjaCBXYXRj
aHBvaW50IHN1YmNsYXNzIHRvIG92ZXJyaWRlIGl0IHRvIGNoZWNrIGZvciBpZiBhbnkKKyAgICAg
ICAgY2VsbHMgaXQgcmVmZXJlbmNlcyBpcyB0aWxsIGFsaXZlIG9yIG5vdC4KKworICAgICAgICBU
aGlzIHBhdGNoIGFsc28gcmVtb3ZlcyBzb21lIGNoZWNrcyBpbiB0aGUgImZpcmUiIG1ldGhvZHMg
c2luY2Ugd2Ugbm93IGd1YXJhbnRlZQorICAgICAgICB0aGF0IHRoZSB3YXRjaHBvaW50IGlzIHN0
aWxsIGxpdmUgaWYgaXQgY2FuIGZpcmUuCisKKyAgICAgICAgQ29sbGVjdGluZyBzb21lIHN0YXRp
c3RpY3Mgb24gd2F0Y2hwb2ludCB1c2FnZSBmb3IgZWFjaCBHQyBjeWNsZSB1c2luZyBhIHJ1biBv
ZgorICAgICAgICBKZXRTdHJlYW0yIHZpYSB0aGUgQ0xJIChvbiBhIE1hY0Jvb2sgUHJvIChSZXRp
bmEsIDE1LWluY2gsIE1pZCAyMDE0KSksIHdlIHNlZToKKworICAgICAgICAxLiBudW1iZXIgb2Yg
V2F0Y2hwb2ludFNldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBIZWFwOiBwZWFrIDcxNjcsIGF2ZXJh
Z2UgMTYzMAorICAgICAgICAyLiBudW1iZXIgb2YgV2F0Y2hwb2ludHMgc2Nhbm5lZCBieSB0aGUg
R0MgZHVyaW5nIHJlYXBpbmc6IHBlYWsgNjkwMzIsIGF2ZXJhZ2UgMjUyMjUKKyAgICAgICAgMy4g
bnVtYmVyIG9mIGRlYWQgV2F0Y2hwb2ludHMgcmVhcGVkIGJ5IHRoZSBHQzogcGVhayA2MDMwOSwg
YXZlcmFnZSAyMTUxCisgICAgICAgIDQuIG51bWJlciBvZiBsaXZlIFdhdGNocG9pbnRzIGZvdW5k
IGJ5IHRoZSBHQzogcGVhayA1MDg4OCwgYXZlcmFnZSAyMzA3MworICAgICAgICA1LiB0aW1lIHRv
IHNjYW4gd2F0Y2hwb2ludHMgYXQgZW5kIG9mIEdDOiBwZWFrIDYuMDEgbXMsIGF2ZXJhZ2UgMS40
NyBtcworCisgICAgICAgIEltcGxlbWVudGF0aW9uIG5vdGVzOgorCisgICAgICAgIFRoaXMgaW1w
bGVtZW50YXRpb24gcHV0cyBhY3RpdmUgV2F0Y2hwb2ludFNldHMgaW50byBhIFNlbnRpbmVsTGlu
a2VkTGlzdCwgYW5kCisgICAgICAgIGl0ZXJhdGVzIHRoZSBsaXN0IGF0IEdDIGVuZC4gIEZvciBl
YWNoIHNldCwgd2Ugd2FsayBpdHMgbGlzdCBvZiB3YXRjaHBvaW50cywgYW5kCisgICAgICAgIGNo
ZWNrIGlmIHRoZXkgYXJlIGFsaXZlIHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBpc0xp
dmVBdEdDKCkuCisKKyAgICAgICAgQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gd291bGQg
YmUgdG8gYWRkIFdlYWsgcG9pbnRlcnMgZm9yIGVhY2ggY2VsbAorICAgICAgICByZWZlcmVuY2Ug
aW4gdGhlIHdhdGNocG9pbnRzLiAgSSBvcHRlZCBub3QgdG8gZ28gZm8gdGhpcyBhcHByb2FjaCBi
ZWNhdXNlIGl0IHdpbGwKKyAgICAgICAgY29zdCBhIGxvdCBtb3JlIG1lbW9yeS4gIEZyb20gdGhl
IG51bWJlciBvZiBXYXRjaHBvaW50cyBzY2FubmVkIGVhY2ggR0MgY3ljbGUsCisgICAgICAgIHRo
ZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCBmb3IgV2VhayBwb2ludHMgd291bGQgYmUgYWJvdXQg
MjAwSyBvbiBhdmVyYWdlLgorCisgICAgICAgIEluc3RlYWQsIHRoZSBjaG9zZW4gaW1wbGVtZW50
YXRpb24gYWJvdmUgb25seSBhZGRzIHRoZSBzaXplIG9mIGEgQmFzaWNSYXdTZW50aW5lbE5vZGUK
KyAgICAgICAgdG8gZWFjaCBXYXRjaHBvaW50U2V0LCB3aGljaCBhZGRzIGFib3V0IDI2SyBvbiBh
dmVyYWdlLgorCisgICAgICAgIFByZWxpbWluYXJ5IHBlcmYgbWVhc3VyZW1lbnRzIG9uIEpldFN0
cmVhbSB2aWEgdGhlIENMVSBzaG93cyBhIHBvc3NpYmxlIC4zNiUKKyAgICAgICAgcmVncmVzc2lv
bi4gIEknbSBzdGlsbCBjb2xsZWN0aW5nIG1vcmUgY29uY3JldGUgbnVtYmVycy4gIElmIHRoZSBy
ZWdyZXNzaW9uIHByb3ZlcworICAgICAgICB0byBiZSByZWFsLCB3ZSBjYW4gbG9vayBpbnRvIG9w
dGltaXppbmcgdGhlIHNjYW4uICBPbmUgcG9zc2liaWxpdHkgaXMgdG8gZGUtdmlydHVhbGl6ZQor
ICAgICAgICBhbmQgaW5saW5lIHRoZSBjYWxscyB0byBpc0xpdmVBdEdDRW5kKCkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6OkFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUpOgorICAgICAg
ICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjppc0xp
dmVBdEdDRW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6OlByb3BlcnR5V2F0Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6Omlz
VmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmlzTGl2ZUF0R0NFbmQgY29uc3QpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCBjb25zdCk6CisgICAgICAgICogYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAg
ICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmlsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaDoKKyAgICAgICAgKEpTQzo6
T2JqZWN0UHJvcGVydHlDb25kaXRpb246Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uKToKKyAgICAg
ICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHlt
b3JwaGljQWNjZXNzOjpjb21taXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50Ojppc0xpdmVBdEdDRW5kIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpT
Qzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3cpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50
U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpy
ZWFwKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6dGFrZSk6CisgICAgICAgIChKU0M6
OklubGluZVdhdGNocG9pbnRTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV2F0Y2hw
b2ludEZpcmU6OnRha2VXYXRjaHBvaW50c1RvRmlyZSk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojppc1JlZ2lzdGVyZWRXaXRo
SGVhcCBjb25zdCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnVucmVnaXN0ZXJGcm9t
SGVhcCk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50Ojppc0xpdmVBdEdDRW5kIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZH
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Lmg6CisgICAgICAgICogZGZn
L0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmlzTGl2ZUF0R0NFbmQgY29uc3QpOgorICAg
ICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBk
ZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjpyZWFsbHlBZGQpOgorICAgICAgICAqIGRmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5QnVmZmVyVmlld1dh
dGNocG9pbnRBZGFwdG9yOjphZGQpOgorICAgICAgICAoSlNDOjpERkc6OkluZmVycmVkVmFsdWVB
ZGFwdG9yOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTZXRQb2ludGVyQWRhcHRvcjo6YWRkKToKKyAgICAgICAgKiBoZWFw
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlYXBEZWFkV2F0Y2hwb2ludHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdp
c3RlcldhdGNocG9pbnRTZXQpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUmFyZURh
dGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Ojppc0xpdmVBdEdDRW5kIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL0luZmVycmVkVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbCk6CisgICAg
ICAgIChKU0M6Ok9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojppc0xp
dmVBdEdDRW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6Ok9iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpoYW5kbGVGaXJl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnQ6OmlzTGl2ZUF0R0NFbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aXNWYWxp
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpyZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eSk6CisKIDIwMTktMDMt
MjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGxpbmcgb3V0
IHIyNDMwMzIgYW5kIHIyNDMwNzEgYmVjYXVzZSB0aGUgZml4IGlzIGluY29ycmVjdC4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlz
aW9uIDI0MzQyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBj
b25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7CiAKICAgICAgICAgaWYgKGNvbmRpdGlv
bi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKLSAgICAg
ICAgICAgIHN0cnVjdHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoc3RhdGUuYWRkV2F0Y2hw
b2ludChjb25kaXRpb24pKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+YWRkVHJhbnNpdGlvbldh
dGNocG9pbnQodm0sIHN0YXRlLmFkZFdhdGNocG9pbnQoY29uZGl0aW9uKSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCShyZXZpc2lvbiAyNDM0MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMSArNDIsMTEgQEAg
dm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKIAotICAgIHN0cnVj
dHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoJm1fc3RydWN0dXJlV2F0Y2hwb2ludCk7Cisg
ICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh2bSwgJm1fc3RydWN0dXJlV2F0
Y2hwb2ludCk7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENv
bmN1cnJlbnRseShtX2tleS51aWQoKSk7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0
dXJlLT5wcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwotICAgIHNldC0+
YWRkKCZtX3Byb3BlcnR5V2F0Y2hwb2ludCk7CisgICAgc2V0LT5hZGQodm0sICZtX3Byb3BlcnR5
V2F0Y2hwb2ludCk7CiB9CiAKIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50QmFzZTo6ZmlyZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKQEAgLTU5
LDkgKzU5LDYgQEAgdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogICAg
IGlmIChtX3Byb3BlcnR5V2F0Y2hwb2ludC5pc09uTGlzdCgpKQogICAgICAgICBtX3Byb3BlcnR5
V2F0Y2hwb2ludC5yZW1vdmUoKTsKIAotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3Vy
ZVdhdGNoYWJpbGl0eSkpIHsKICAgICAgICAgaW5zdGFsbCh2bSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTcwLDkgKzY3LDkgQEAgdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cAogICAgIGhhbmRsZUZpcmUodm0sIGRldGFpbCk7CiB9CiAKLWJvb2wgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aXNWYWxpZCgpIGNvbnN0Citib29sIEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmlzTGl2ZUF0R0NFbmQoKSBj
b25zdAogewotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX2tleS5pc1N0aWxsTGl2ZSgp
OwogfQogCiB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6
OlN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRh
aWwmIGRldGFpbCkKQEAgLTg0LDYgKzgxLDE1IEBAIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHAKICAgICBwYXJlbnQtPmZpcmUodm0sIGRldGFpbCk7CiB9CiAKK2Jvb2wg
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0
Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcHRyZGlmZl90IG15T2Zmc2V0
ID0gT0JKRUNUX09GRlNFVE9GKEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UsIG1fc3RydWN0dXJlV2F0Y2hwb2ludCk7CisKKyAgICBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKiBwYXJlbnQgPSBiaXR3aXNlX2Nhc3Q8QWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSo+KGJpdHdpc2VfY2FzdDxjaGFyKj4o
dGhpcykgLSBteU9mZnNldCk7CisKKyAgICByZXR1cm4gcGFyZW50LT5pc0xpdmVBdEdDRW5kKCk7
Cit9CisKIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6
UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWls
JiBkZXRhaWwpCiB7CiAgICAgcHRyZGlmZl90IG15T2Zmc2V0ID0gT0JKRUNUX09GRlNFVE9GKEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UsIG1fcHJvcGVydHlXYXRj
aHBvaW50KTsKQEAgLTkzLDQgKzk5LDEzIEBAIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHAKICAgICBwYXJlbnQtPmZpcmUodm0sIGRldGFpbCk7CiB9CiAgICAgCitib29s
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OlByb3BlcnR5V2F0
Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcHRyZGlmZl90IG15T2Zmc2V0
ID0gT0JKRUNUX09GRlNFVE9GKEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UsIG1fcHJvcGVydHlXYXRjaHBvaW50KTsKKworICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqIHBhcmVudCA9IGJpdHdpc2VfY2FzdDxBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0
aGlzKSAtIG15T2Zmc2V0KTsKKworICAgIHJldHVybiBwYXJlbnQtPmlzTGl2ZUF0R0NFbmQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgJKHJldmlzaW9uIDI0MzQyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
KCkgPSBkZWZhdWx0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBjbGFzcyBTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgewpA
QCAtNTUsMTIgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cnVjdHVyZVdhdGNocG9pbnQo
KSB7IH0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgICAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBj
b25zdCBvdmVycmlkZTsKICAgICB9OwogICAgIGNsYXNzIFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1
YmxpYyBXYXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFByb3BlcnR5V2F0Y2hwb2lu
dCgpIHsgfQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNMaXZlQXRHQ0VuZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIH07CiAKICAgICB2b2lkIGZpcmUoVk0mLCBjb25zdCBGaXJl
RGV0YWlsJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAkocmV2aXNp
b24gMjQzNDI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw1ICs0MCwxMCBA
QCB2b2lkIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyCiAgICAgbV9jb2RlQmxv
Y2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvVW5wcm9maWxlZFdhdGNocG9pbnQs
IENvdW50UmVvcHRpbWl6YXRpb24sICZkZXRhaWwpOwogfQogCitib29sIENvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhl
YXA6OmlzTWFya2VkKG1fY29kZUJsb2NrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgJKHJldmlzaW9uIDI0MzQyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDI0MzQy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmUKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNoYWJsZSgpKTsKIAotICAgIG1fa2V5Lm9iamVjdCgp
LT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKKyAgICBtX2tl
eS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodm0sIHRo
aXMpOwogfQogCiB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCkBAIC01Nyw2ICs1
NywxMSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlCiAgICAgY2xl
YXJMTEludEdldEJ5SWRDYWNoZShtX2dldEJ5SWRNZXRhZGF0YSk7CiB9CiAKK2Jvb2wgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojppc0xpdmVBdEdDRW5kKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9rZXkuaXNTdGlsbExpdmUoKTsKK30KKwogdm9pZCBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgbWV0YWRhdGEu
bV9tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAyNDM0Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsNyBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZp
cmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBtX2tleTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDI0MzQyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjcsNyArMTI3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIE9i
amVjdEFsbG9jYXRpb25Qcm9maQogICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhcHBlbiB0byBn
byBwb2x5IHByb3RvIGluIHRoZSBmdXR1cmUsIHdlIHdhbnQgdG8gY2xlYXIgdGhpcyBwYXJ0aWN1
bGFyCiAgICAgICAgICAgICAgICAgLy8gb2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZSBzbyB3ZSBj
YW4gdHJhbnNpdGlvbiB0byBhbGxvY2F0aW5nIHBvbHkgcHJvdG8gb2JqZWN0cy4KICAgICAgICAg
ICAgICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gZnVuY3Rpb25SYXJlRGF0YS0+Y3JlYXRl
QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKTsKLSAgICAgICAgICAgICAgICBw
b2x5UHJvdG9XYXRjaHBvaW50U2V0LmFkZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgICAgICBw
b2x5UHJvdG9XYXRjaHBvaW50U2V0LmFkZCh2bSwgd2F0Y2hwb2ludCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgJKHJldmlzaW9uIDI0MzQyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTQgKzM1LDEwIEBAIGNsYXNzIFRyYWNrZWRSZWZlcmVu
Y2VzOwogCiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiB7CiBwdWJsaWM6Ci0gICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24oKQotICAgICAgICA6IG1fb2JqZWN0KG51bGxwdHIpCi0gICAg
ewotICAgIH0KKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbigpID0gZGVmYXVsdDsKICAgICAK
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUgdG9rZW4pCi0gICAgICAgIDogbV9vYmplY3QobnVsbHB0cikKLSAgICAgICAgLCBtX2NvbmRp
dGlvbih0b2tlbikKKyAgICAgICAgOiBtX2NvbmRpdGlvbih0b2tlbikKICAgICB7CiAgICAgfQog
ICAgIApAQCAtMjU2LDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBhdHRlbXB0VG9NYWtlRXF1aXZhbGVuY2VXaXRob3V0QmFycmllcihWTSYpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIEpTT2JqZWN0KiBtX29iamVjdDsKKyAgICBKU09iamVjdCogbV9vYmpl
Y3QgeyBudWxscHRyIH07CiAgICAgUHJvcGVydHlDb25kaXRpb24gbV9jb25kaXRpb247CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAJKHJldmlzaW9uIDI0MzQyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjMs
NyArMzYzLDcgQEAgdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6Y29tbWl0KAogICAgICAgICAgICAg
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRBZGRXYXRj
aHBvaW50KAogICAgICAgICAgICAgICAgIHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssICZzdHViSW5m
bywgT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKSk7CiAgICAgICAgIAotICAgICAgICBzZXQtPmFk
ZCh3YXRjaHBvaW50KTsKKyAgICAgICAgc2V0LT5hZGQodm0sIHdhdGNocG9pbnQpOwogICAgIH0K
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAkocmV2aXNpb24g
MjQzNDI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNyArNTEs
MTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaQogICAgICAgICBt
X2tleS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVw
bGFjZW1lbnRzKHZtLCBtX2tleS5vZmZzZXQoKSk7CiAgICAgfQogCi0gICAgbV9rZXkub2JqZWN0
KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOworICAgIG1f
a2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh2bSwg
dGhpcyk7Cit9CisKK2Jvb2wgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6aXNMaXZl
QXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKG1faG9sZGVyLmNv
ZGVCbG9jaygpKSAmJiBtX2tleS5pc1N0aWxsTGl2ZSgpOwogfQogCiBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmFkZFdhdGNo
cG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuaAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAg
IGJvb2wgaXNMaXZlQXRHQ0VuZCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjksMTQgKzY5LDE4IEBAIFdhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KCkKICAgICAv
LyBlaXRoZXIga2VlcGluZyB0aGUgd2F0Y2hwb2ludCBzZXQncyBvd25lciBhbGl2ZSwgb3IgZG9l
cyBzb21lIHdlYWsgcmVmZXJlbmNlIHRoaW5nLgogICAgIHdoaWxlICghbV9zZXQuaXNFbXB0eSgp
KQogICAgICAgICBtX3NldC5iZWdpbigpLT5yZW1vdmUoKTsKKyAgICBpZiAoaXNSZWdpc3RlcmVk
V2l0aEhlYXAoKSkKKyAgICAgICAgdW5yZWdpc3RlckZyb21IZWFwKCk7CiB9CiAKLXZvaWQgV2F0
Y2hwb2ludFNldDo6YWRkKFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit2b2lkIFdhdGNocG9pbnRT
ZXQ6OmFkZChWTSYgdm0sIFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCiB7CiAgICAgQVNTRVJUKCFp
c0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVChzdGF0ZSgpICE9IElzSW52YWxpZGF0
ZWQpOwogICAgIGlmICghd2F0Y2hwb2ludCkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghaXNS
ZWdpc3RlcmVkV2l0aEhlYXAoKSkKKyAgICAgICAgdm0uaGVhcC5yZWdpc3RlcldhdGNocG9pbnRT
ZXQodGhpcyk7CiAgICAgbV9zZXQucHVzaCh3YXRjaHBvaW50KTsKICAgICBtX3NldElzTm90RW1w
dHkgPSB0cnVlOwogICAgIG1fc3RhdGUgPSBJc1dhdGNoZWQ7CkBAIC05MiwxMiArOTYsMTIgQEAg
dm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyhWTSYgdm0sIAogICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CiB9CiAKLXZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coVk0mLCBE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKiBkZWZlcnJlZFdhdGNocG9pbnRzKQordm9pZCBXYXRjaHBv
aW50U2V0OjpmaXJlQWxsU2xvdyhWTSYgdm0sIERlZmVycmVkV2F0Y2hwb2ludEZpcmUqIGRlZmVy
cmVkV2F0Y2hwb2ludHMpCiB7CiAgICAgQVNTRVJUKHN0YXRlKCkgPT0gSXNXYXRjaGVkKTsKIAog
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgZGVmZXJyZWRXYXRjaHBvaW50cy0+dGFr
ZVdhdGNocG9pbnRzVG9GaXJlKHRoaXMpOworICAgIGRlZmVycmVkV2F0Y2hwb2ludHMtPnRha2VX
YXRjaHBvaW50c1RvRmlyZSh2bSwgdGhpcyk7CiAgICAgbV9zdGF0ZSA9IElzSW52YWxpZGF0ZWQ7
IC8vIERvIGFmdGVyIG1vdmluZyB3YXRjaHBvaW50cyB0byBkZWZlcnJlZFdhdGNocG9pbnRzIHNv
IGRlZmVycmVkV2F0Y2hwb2ludHMgZ2V0cyBvdXIgY3VycmVudCBzdGF0ZS4KICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOwogfQpAQCAtMTQxLDIwICsxNDUsMzkgQEAgdm9pZCBXYXRjaHBvaW50
U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoVgogICAgICAgICAvLyBBZnRlciB3ZSBmaXJlIHRoZSB3
YXRjaHBvaW50LCB0aGUgd2F0Y2hwb2ludCBwb2ludGVyIG1heSBiZSBhIGRhbmdsaW5nIHBvaW50
ZXIuIFRoYXQncwogICAgICAgICAvLyBmaW5lLCBiZWNhdXNlIHdlIGhhdmUgbm8gdXNlIGZvciB0
aGUgcG9pbnRlciBhbnltb3JlLgogICAgIH0KKyAgICBpZiAoaXNSZWdpc3RlcmVkV2l0aEhlYXAo
KSkKKyAgICAgICAgdW5yZWdpc3RlckZyb21IZWFwKCk7CiB9CiAKLXZvaWQgV2F0Y2hwb2ludFNl
dDo6dGFrZShXYXRjaHBvaW50U2V0KiBvdGhlcikKK3ZvaWQgV2F0Y2hwb2ludFNldDo6cmVhcCgp
Cit7CisgICAgQVNTRVJUKGlzUmVnaXN0ZXJlZFdpdGhIZWFwKCkpOworICAgIGZvciAoV2F0Y2hw
b2ludCogd2F0Y2hwb2ludCA9IG1fc2V0LmJlZ2luKCk7IHdhdGNocG9pbnQgIT0gbV9zZXQuZW5k
KCk7KSB7CisgICAgICAgIFdhdGNocG9pbnQqIG5leHQgPSB3YXRjaHBvaW50LT5uZXh0KCk7Cisg
ICAgICAgIGlmICghd2F0Y2hwb2ludC0+aXNMaXZlQXRHQ0VuZCgpKQorICAgICAgICAgICAgd2F0
Y2hwb2ludC0+cmVtb3ZlKCk7CisgICAgICAgIHdhdGNocG9pbnQgPSBuZXh0OworICAgIH0KKyAg
ICBpZiAobV9zZXQuaXNFbXB0eSgpKQorICAgICAgICB1bnJlZ2lzdGVyRnJvbUhlYXAoKTsKK30K
Kwordm9pZCBXYXRjaHBvaW50U2V0Ojp0YWtlKFZNJiB2bSwgV2F0Y2hwb2ludFNldCogb3RoZXIp
CiB7CiAgICAgQVNTRVJUKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KTsKICAgICBtX3NldC50
YWtlRnJvbShvdGhlci0+bV9zZXQpOwogICAgIG1fc2V0SXNOb3RFbXB0eSA9IG90aGVyLT5tX3Nl
dElzTm90RW1wdHk7CiAgICAgbV9zdGF0ZSA9IG90aGVyLT5tX3N0YXRlOwogICAgIG90aGVyLT5t
X3NldElzTm90RW1wdHkgPSBmYWxzZTsKKyAgICBpZiAob3RoZXItPmlzUmVnaXN0ZXJlZFdpdGhI
ZWFwKCkpCisgICAgICAgIG90aGVyLT51bnJlZ2lzdGVyRnJvbUhlYXAoKTsKKyAgICBpZiAoIWlz
UmVnaXN0ZXJlZFdpdGhIZWFwKCkpCisgICAgICAgIHZtLmhlYXAucmVnaXN0ZXJXYXRjaHBvaW50
U2V0KHRoaXMpOwogfQogCi12b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmFkZChXYXRjaHBvaW50
KiB3YXRjaHBvaW50KQordm9pZCBJbmxpbmVXYXRjaHBvaW50U2V0OjphZGQoVk0mIHZtLCBXYXRj
aHBvaW50KiB3YXRjaHBvaW50KQogewotICAgIGluZmxhdGUoKS0+YWRkKHdhdGNocG9pbnQpOwor
ICAgIGluZmxhdGUoKS0+YWRkKHZtLCB3YXRjaHBvaW50KTsKIH0KIAogdm9pZCBJbmxpbmVXYXRj
aHBvaW50U2V0OjpmaXJlQWxsKFZNJiB2bSwgY29uc3QgY2hhciogcmVhc29uKQpAQCAtMTk0LDEx
ICsyMTcsMTEgQEAgdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjpmaXJlQWxsKCkKICAgICAg
ICAgbV93YXRjaHBvaW50c1RvRmlyZS5maXJlQWxsKG1fdm0sICp0aGlzKTsKIH0KIAotdm9pZCBE
ZWZlcnJlZFdhdGNocG9pbnRGaXJlOjp0YWtlV2F0Y2hwb2ludHNUb0ZpcmUoV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludHNUb0ZpcmUpCit2b2lkIERlZmVycmVkV2F0Y2hwb2ludEZpcmU6OnRha2VX
YXRjaHBvaW50c1RvRmlyZShWTSYgdm0sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzVG9GaXJl
KQogewogICAgIEFTU0VSVChtX3dhdGNocG9pbnRzVG9GaXJlLnN0YXRlKCkgPT0gQ2xlYXJXYXRj
aHBvaW50KTsKICAgICBBU1NFUlQod2F0Y2hwb2ludHNUb0ZpcmUtPnN0YXRlKCkgPT0gSXNXYXRj
aGVkKTsKLSAgICBtX3dhdGNocG9pbnRzVG9GaXJlLnRha2Uod2F0Y2hwb2ludHNUb0ZpcmUpOwor
ICAgIG1fd2F0Y2hwb2ludHNUb0ZpcmUudGFrZSh2bSwgd2F0Y2hwb2ludHNUb0ZpcmUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk5LDYgKzk5LDcg
QEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnRlcm5hbChW
TSYsIGNvbnN0IEZpcmVEZXRhaWwmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGl2ZUF0R0NF
bmQoKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CkBAIC0xMTUsNyArMTE2LDggQEAgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIGNsYXNz
IERlZmVycmVkV2F0Y2hwb2ludEZpcmU7CiBjbGFzcyBWTTsKIAotY2xhc3MgV2F0Y2hwb2ludFNl
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXYXRjaHBvaW50U2V0PiB7CitjbGFzcyBX
YXRjaHBvaW50U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdhdGNocG9pbnRTZXQ+
LCBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludFNldD4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVycmVkV2F0Y2hwb2ludEZpcmU7CiBwdWJsaWM6CkBA
IC0xNjUsOCArMTY3LDggQEAgcHVibGljOgogICAgIC8vIEFzIGEgY29udmVuaWVuY2UsIHRoaXMg
d2lsbCBpZ25vcmUgMC4gVGhhdCdzIGJlY2F1c2UgY29kZSBwYXRocyBpbiB0aGUgREZHCiAgICAg
Ly8gdGhhdCBjcmVhdGUgc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgbWF5IGNob29zZSB0byBiYWls
IG91dCBpZiBzcGVjdWxhdGlvbgogICAgIC8vIGhhZCBhbHJlYWR5IGJlZW4gdGVybWluYXRlZC4K
LSAgICB2b2lkIGFkZChXYXRjaHBvaW50Kik7Ci0gICAgCisgICAgdm9pZCBhZGQoVk0mLCBXYXRj
aHBvaW50Kik7CisKICAgICAvLyBGb3JjZSB0aGUgd2F0Y2hwb2ludCBzZXQgdG8gYmVoYXZlIGFz
IGlmIGl0IHdhcyBiZWluZyB3YXRjaGVkIGV2ZW4gaWYgbm8KICAgICAvLyB3YXRjaHBvaW50cyBo
YXZlIGJlZW4gaW5zdGFsbGVkLiBUaGlzIHdpbGwgcmVzdWx0IGluIGludmFsaWRhdGlvbiBpZiB0
aGUKICAgICAvLyB3YXRjaHBvaW50IHdvdWxkIGhhdmUgZmlyZWQuIFRoYXQncyBhIHByZXR0eSBn
b29kIGluZGljYXRpb24gdGhhdCB5b3UKQEAgLTIxOSw3ICsyMjEsOSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9zZXRJc05vdEVtcHR5OwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgcmVhcCgpOworCiAgICAgaW50OF90KiBhZGRyZXNzT2ZTdGF0ZSgpIHsgcmV0dXJuICZtX3N0
YXRlOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0YXRlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFdhdGNocG9pbnRTZXQsIG1fc3RhdGUpOyB9CiAgICAgaW50OF90KiBhZGRy
ZXNzT2ZTZXRJc05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQpAQCAtMjI4
LDEwICsyMzIsMTQgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZUFs
bFNsb3coVk0mLCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlKiBkZWZlcnJlZFdhdGNocG9pbnRzKTsg
Ly8gRGl0dG8uCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIGNv
bnN0IGNoYXIqIHJlYXNvbik7IC8vIERpdHRvLgogICAgIAorICAgIGJvb2wgaXNSZWdpc3RlcmVk
V2l0aEhlYXAoKSBjb25zdCB7IHJldHVybiBpc09uTGlzdCgpOyB9CisKIHByaXZhdGU6CisgICAg
dm9pZCB1bnJlZ2lzdGVyRnJvbUhlYXAoKSB7IHJlbW92ZSgpOyB9CisKICAgICB2b2lkIGZpcmVB
bGxXYXRjaHBvaW50cyhWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsKLSAgICB2b2lkIHRha2UoV2F0
Y2hwb2ludFNldCogb3RoZXIpOwotICAgIAorICAgIHZvaWQgdGFrZShWTSYsIFdhdGNocG9pbnRT
ZXQqIG90aGVyKTsKKwogICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVXYXRjaHBvaW50U2V0OwogCiAg
ICAgaW50OF90IG1fc3RhdGU7CkBAIC0zMDksOSArMzE3LDkgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuICFoYXNCZWVuSW52YWxpZGF0ZWQoKTsKICAgICB9Ci0gICAgCi0gICAgdm9p
ZCBhZGQoV2F0Y2hwb2ludCopOwotICAgIAorCisgICAgdm9pZCBhZGQoVk0mLCBXYXRjaHBvaW50
Kik7CisKICAgICB2b2lkIHN0YXJ0V2F0Y2hpbmcoKQogICAgIHsKICAgICAgICAgaWYgKGlzRmF0
KCkpIHsKQEAgLTQ2OCw3ICs0NzYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
RGVmZXJyZWRXYXRjaHBvaW50RmlyZShWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5EZWZl
cnJlZFdhdGNocG9pbnRGaXJlKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRha2VX
YXRjaHBvaW50c1RvRmlyZShXYXRjaHBvaW50U2V0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCB0YWtlV2F0Y2hwb2ludHNUb0ZpcmUoVk0mLCBXYXRjaHBvaW50U2V0Kik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3Qgb3ZlcnJpZGUgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDYgKzUxLDExIEBAIHZvaWQgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHAKICAgICBtX2NvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2ludCwgQ291bnRSZW9wdGltaXphdGlvbiwg
JmxhenlEZXRhaWwpOwogfQogCitib29sIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhlYXA6OmlzTWFy
a2VkKG1fY29kZUJsb2NrKSAmJiBCYXNlOjppc0xpdmVBdEdDRW5kKCk7Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAyNDM0Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBv
dmVycmlkZTsKKyAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDggKzQ2LDggQEAg
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpBZGFwdGl2ZVN0cgogdm9pZCBBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KG1fa2V5LmlzV2F0Y2hhYmxlKCkpOwotICAgIAotICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1
cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKKworICAgIG1fa2V5Lm9iamVj
dCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh2bSwgdGhpcyk7CiB9
CiAKIHZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZt
LCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCkBAIC02OCw2ICs2OCwxMSBAQCB2b2lkIEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUluCiAgICAgICAgIFByb2ZpbGVyOjpKZXR0aXNv
bkR1ZVRvVW5wcm9maWxlZFdhdGNocG9pbnQsIENvdW50UmVvcHRpbWl6YXRpb24sICZsYXp5RGV0
YWlsKTsKIH0KIAorYm9vbCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmlzTGl2ZUF0R0NF
bmQoKSBjb25zdAoreworICAgIHJldHVybiBIZWFwOjppc01hcmtlZChtX2NvZGVCbG9jaykgJiYg
bV9rZXkuaXNTdGlsbExpdmUoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgJKHJldmlz
aW9uIDI0MzQyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwm
KSBvdmVycmlkZTsKKyAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBtX2tleTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3Bl
cnRpZXMuY3BwCShyZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNyBAQCB2b2lkIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjpyZWFsbHlBZGQoCiAgICAgICAg
IGF1dG8qIHVpZCA9IGlkZW50aWZpZXJzLmF0KHByb3BlcnR5LmlkZW50aWZpZXJOdW1iZXIoKSk7
CiAgICAgICAgIGF1dG8mIHdhdGNocG9pbnRTZXQgPSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+
ZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldCh1aWQpOwogICAgICAgICBBU1NF
UlQod2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSk7Ci0gICAgICAgIHdhdGNocG9pbnRTZXQu
YWRkKGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2NrKSk7CisgICAgICAgIHdhdGNocG9p
bnRTZXQuYWRkKHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT52bSgpLCBjb21tb24ud2F0Y2hwb2lu
dHMuYWRkKGNvZGVCbG9jaykpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAkocmV2aXNpb24gMjQz
NDI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEFycmF5QnVmZmVyVmll
d1dhdGNocG9pbnRBZGFwdG9yOjphCiAgICAgV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IGNvbW1v
bi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2NrKTsKICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQogICAgICAgICBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQ6OmNyZWF0ZSh2bSk7Ci0gICAgbmV1dGVyaW5nV2F0Y2hwb2ludC0+c2V0
KCkuYWRkKHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh2
bSwgd2F0Y2hwb2ludCk7CiAgICAgY29kZUJsb2NrLT5hZGRDb25zdGFudChuZXV0ZXJpbmdXYXRj
aHBvaW50KTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0byBzZXQgdGhpcyB3YXRjaHBv
aW50IGF0IGFsbCBmb3Igc2hhcmVkIGJ1ZmZlcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEwOApAQCAtNTEsOCArNTEsOSBAQCB2b2lkIEFycmF5
QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOjphCiB2b2lkIEluZmVycmVkVmFsdWVBZGFwdG9y
OjphZGQoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluZmVycmVkVmFsdWUqIGluZmVycmVk
VmFsdWUsIENvbW1vbkRhdGEmIGNvbW1vbikKIHsKKyAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52
bSgpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQoaW5mZXJyZWRWYWx1ZSk7IC8vIEZvciBj
b21tb24gdXNlcnMsIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBpZiBpdCdzIHdlYWsgb3Igbm90
LiBJZiByZWZlcmVuY2VzIHRvIGl0IGdvIGF3YXksIHdlIGdvIGF3YXksIHRvby4KLSAgICBpbmZl
cnJlZFZhbHVlLT5hZGQoY29tbW9uLndhdGNocG9pbnRzLmFkZChjb2RlQmxvY2spKTsKKyAgICBp
bmZlcnJlZFZhbHVlLT5hZGQodm0sIGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2NrKSk7
CiB9CiAKIHZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50QWRhcHRvcjo6YWRkKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50
cy5oCShyZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
RkdDb21tb25EYXRhLmgiCiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCkBAIC00Myw3ICs0NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiBzdHJ1Y3QgU2V0UG9pbnRlckFkYXB0b3IgewogICAgIHN0YXRpYyB2b2lkIGFkZChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVCBzZXQsIENvbW1vbkRhdGEmIGNvbW1vbikKICAgICB7Ci0gICAgICAg
IHJldHVybiBzZXQtPmFkZChjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jaykpOworICAg
ICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOworICAgICAgICByZXR1cm4gc2V0LT5hZGQo
dm0sIGNvbW1vbi53YXRjaHBvaW50cy5hZGQoY29kZUJsb2NrKSk7CiAgICAgfQogICAgIHN0YXRp
YyBib29sIGhhc0JlZW5JbnZhbGlkYXRlZChUIHNldCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDksNyArMTUwOSw5IEBA
IE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkVuZFBoYXNlKEdDQ28KICAgICAgICAgICAgIHdy
aXRlQmFycmllcihjb2RlQmxvY2spOwogICAgICAgICB9KTsKICAgICBtX2NvZGVCbG9ja3MtPmNs
ZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7Ci0gICAgICAgIAorCisgICAgcmVhcERlYWRXYXRjaHBv
aW50cygpOworCiAgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAg
IHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKIApAQCAtMjIxMCw2ICsyMjEyLDE1IEBAIHZvaWQg
SGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWEKICAgICAgICAgd2Vha0dDTWFwLT5w
cnVuZVN0YWxlRW50cmllcygpOwogfQogCit2b2lkIEhlYXA6OnJlYXBEZWFkV2F0Y2hwb2ludHMo
KQoreworICAgIGZvciAoV2F0Y2hwb2ludFNldCogc2V0ID0gbV93YXRjaHBvaW50U2V0cy5iZWdp
bigpOyBzZXQgIT0gbV93YXRjaHBvaW50U2V0cy5lbmQoKTspIHsKKyAgICAgICAgV2F0Y2hwb2lu
dFNldCogbmV4dCA9IHNldC0+bmV4dCgpOworICAgICAgICBzZXQtPnJlYXAoKTsKKyAgICAgICAg
c2V0ID0gbmV4dDsKKyAgICB9Cit9CisKIHZvaWQgSGVhcDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQog
ewogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVwKCk7CkBAIC0yOTkxLDQgKzMwMDIsMTAgQEAgdm9p
ZCBIZWFwOjpydW5UYXNrSW5QYXJhbGxlbChSZWZQdHI8U2hhcgogICAgIH0KIH0KIAordm9pZCBI
ZWFwOjpyZWdpc3RlcldhdGNocG9pbnRTZXQoV2F0Y2hwb2ludFNldCogc2V0KQoreworICAgIEFT
U0VSVCghc2V0LT5pc1JlZ2lzdGVyZWRXaXRoSGVhcCgpKTsKKyAgICBtX3dhdGNocG9pbnRTZXRz
LnB1c2goc2V0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgY2xhc3MgU3BhY2VU
aW1lTXV0YXRvclNjaGVkdWxlcjsKIGNsYXNzIFN0b3BJZk5lY2Vzc2FyeVRpbWVyOwogY2xhc3Mg
U3dlZXBpbmdTY29wZTsKIGNsYXNzIFZNOworY2xhc3MgV2F0Y2hwb2ludFNldDsKIGNsYXNzIFdl
YWtHQ01hcEJhc2U7CiBzdHJ1Y3QgQ3VycmVudFRocmVhZFN0YXRlOwogCkBAIC0zOTcsNiArMzk4
LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBTZWNvbmRzIHRvdGFsR0NUaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3RhbEdDVGltZTsgfQogCisgICAgLy8gVGhlcmUgaXMgbm8gbWF0Y2hpbmcgdW5y
ZWdpc3RlciBmdW5jdGlvbiBmb3IgdGhpcy4gV2F0Y2hwb2ludFNldHMgY2FuCisgICAgLy8gdW5y
ZWdpc3RlciB0aGVtc2VsdmVzLgorICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50U2V0KFdhdGNo
cG9pbnRTZXQqKTsKKwogICAgIEhhc2hNYXA8SlNJbW11dGFibGVCdXR0ZXJmbHkqLCBKU1N0cmlu
Zyo+IGltbXV0YWJsZUJ1dHRlcmZseVRvU3RyaW5nQ2FjaGU7CiAKIHByaXZhdGU6CkBAIC01MTMs
NiArNTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU9iamVjdENvdW50cygpOwogICAg
IHZvaWQgZW5kTWFya2luZygpOwogCisgICAgdm9pZCByZWFwRGVhZFdhdGNocG9pbnRzKCk7CiAg
ICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJv
bVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZmZXJzKCk7CkBAIC03NDcsNiAr
NzUzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCB7
IGZhbHNlIH07CiAgICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwogICAgIENvbmRp
dGlvbiBtX2NvbGxlY3RDb250aW51b3VzbHlDb25kaXRpb247CisKKyAgICBTZW50aW5lbExpbmtl
ZExpc3Q8V2F0Y2hwb2ludFNldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludFNldD4+
IG1fd2F0Y2hwb2ludFNldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCShy
ZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1LDQgKzk1LDkgQEAgdm9pZCBGdW5j
dGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZQogICAgIG1fcmFyZURhdGEtPmNsZWFyKCJB
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCBmaXJlZC4iKTsKIH0KIAorYm9vbCBG
dW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDo6aXNM
aXZlQXRHQ0VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKG1fcmFyZURh
dGEpOwogfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgJKHJldmlzaW9uIDI0MzQyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEyMyw2ICsxMjMsNyBAQCBwcml2YXRlOgogICAgICAgICB7IH0KICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFp
bCYpIG92ZXJyaWRlOworICAgICAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblJhcmVEYXRhKiBtX3JhcmVEYXRhOwog
ICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRW
YWx1ZS5oCShyZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbmZlcnJlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICBXYXRjaHBvaW50U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NldC5zdGF0
ZSgpOyB9CiAgICAgYm9vbCBpc1N0aWxsVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc1N0
aWxsVmFsaWQoKTsgfQogICAgIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zZXQuaGFzQmVlbkludmFsaWRhdGVkKCk7IH0KLSAgICB2b2lkIGFkZChXYXRjaHBvaW50
KiB3YXRjaHBvaW50KSB7IG1fc2V0LmFkZCh3YXRjaHBvaW50KTsgfQorICAgIHZvaWQgYWRkKFZN
JiB2bSwgV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkgeyBtX3NldC5hZGQodm0sIHdhdGNocG9pbnQp
OyB9CiAgICAgCiAgICAgdm9pZCBub3RpZnlXcml0ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjQzNDI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MCwxMCAr
NTcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdhdGNoSWZQb3NzaWJs
ZSgpICYmIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCk7CiAgICAgfQogICAg
ICAgICAKLSAgICB2b2lkIGFkZFRyYW5zaXRpb25XYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNo
cG9pbnQpIGNvbnN0CisgICAgdm9pZCBhZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChWTSYgdm0sIFdh
dGNocG9pbnQqIHdhdGNocG9pbnQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQodHJhbnNp
dGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSk7Ci0gICAgICAgIG1fdHJhbnNpdGlvbldh
dGNocG9pbnRTZXQuYWRkKHdhdGNocG9pbnQpOworICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBv
aW50U2V0LmFkZCh2bSwgd2F0Y2hwb2ludCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZGlkVHJh
bnNpdGlvbkZyb21UaGlzU3RydWN0dXJlKERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKiA9IG51bGxwdHIpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjQzNDI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgT2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mLCBTdHJ1Y3R1cmVSYXJlRGF0YSopOwogCiBwcml2YXRlOgotICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRmlyZShWTSYs
IGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICBib29sIGlzTGl2ZUF0R0NFbmQoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBtX3N0cnVjdHVyZVJhcmVE
YXRhOwogfTsKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwg
U3RydWN0dXJlUmFyZURhdGEqKTsKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOworICAgIGJvb2wg
aXNMaXZlQXRHQ0VuZCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CkBAIC0xODMsMTQg
KzE4NCwxNyBAQCB2b2lkIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CiAKLSAgICBtX2tleS5vYmpl
Y3QoKS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CisgICAg
bV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHZt
LCB0aGlzKTsKIH0KIAotdm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCitib29sIE9iamVj
dFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojppc0xpdmVBdEdDRW5kKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fc3RydWN0dXJlUmFyZURhdGEtPmlzTGl2ZSgpKQotICAgICAgICBy
ZXR1cm47CisgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKG1fc3RydWN0dXJlUmFyZURhdGEpICYm
IG1fa2V5LmlzU3RpbGxMaXZlKCk7Cit9CiAKK3ZvaWQgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
KQoreworICAgIEFTU0VSVChtX3N0cnVjdHVyZVJhcmVEYXRhLT5pc0xpdmUoKSk7CiAgICAgaWYg
KG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkp
KSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47CkBAIC0yMDUsMTQgKzIw
OSwxNCBAQCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhCiB7CiB9CiAK
LWJvb2wgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQ6OmlzVmFsaWQoKSBjb25zdAordm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwm
KQogewotICAgIHJldHVybiBtX3N0cnVjdHVyZVJhcmVEYXRhLT5pc0xpdmUoKTsKKyAgICBtX3N0
cnVjdHVyZVJhcmVEYXRhLT5jbGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKTsKIH0KIAotdm9pZCBP
YmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFu
ZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKQorYm9vbCBPYmplY3RUb1N0cmluZ0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aXNMaXZlQXRHQ0VuZCgpIGNvbnN0
CiB7Ci0gICAgbV9zdHJ1Y3R1cmVSYXJlRGF0YS0+Y2xlYXJPYmplY3RUb1N0cmluZ1ZhbHVlKCk7
CisgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKG1fc3RydWN0dXJlUmFyZURhdGEpICYmIEJhc2U6
OmlzTGl2ZUF0R0NFbmQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNDM0MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsNyArMTAx
Miw3IEBAIFdhdGNocG9pbnRTZXQqIFZNOjplbnN1cmVXYXRjaHBvaW50U2V0Rm8KIAogdm9pZCBW
TTo6cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBXYXRjaHBvaW50KiB3YXRjaHBvaW50KQogewotICAgIGVuc3VyZVdhdGNo
cG9pbnRTZXRGb3JJbXB1cmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpLT5hZGQod2F0Y2hwb2ludCk7
CisgICAgZW5zdXJlV2F0Y2hwb2ludFNldEZvckltcHVyZVByb3BlcnR5KHByb3BlcnR5TmFtZSkt
PmFkZCgqdGhpcywgd2F0Y2hwb2ludCk7CiB9CiAKIHZvaWQgVk06OmFkZEltcHVyZVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366051</attachid>
            <date>2019-03-26 22:34:47 -0700</date>
            <delta_ts>2019-03-26 23:44:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195827-20190326223446.patch</filename>
            <type>text/plain</type>
            <size>25186</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmY2MDQyZWIyZmFjNzc4NzE4ODg5ZWE5NTY2Yjk2ZWQ3NWEyN2VlLi5mMDU0OWI4ZjZiYTA0OTEx
MTJkZmU2ODRjMjA5NDQxZGU0M2JjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOS0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEdDIHNob3VsZCByZWFwIGRlYWQgd2F0Y2hwb2ludHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDoKKyAgICAgICAgKEpTQzo6QWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hw
b2ludDo6U3RydWN0dXJlV2F0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OlByb3BlcnR5V2F0Y2hwb2lu
dDo6UHJvcGVydHlXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50OjpDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAgICAgICAo
SlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmtleSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50OjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Lmg6CisgICAg
ICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmtleSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsRmluYWxpemVycyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKwogMjAxOS0wMy0yNiAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEw6IEVtaXQgY29kZSB0byB2YWxp
ZGF0ZSBBSSdzIHN0YXRlIHdoZW4gcnVubmluZyB0aGUgY29tcGlsZWQgY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKaW5kZXggNTBkODRi
YTg4OGQ1MWI5MjkyMDM3ZjExNDRlNDg2YmRiZGUyZTJhMy4uNWQ0ZTAyYWFlZmU5NjYwMDNmNjUy
MTg0MDA4ODdlNDJmMTQzNWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZS5oCkBAIC01MCwxMyArNTAsMTMgQEAgY2xhc3MgQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgPSAwOwogCiBwcml2YXRlOgotICAgIGNs
YXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CisgICAgY2xhc3Mg
U3RydWN0dXJlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFN0cnVjdHVyZVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRl
OwogICAgIH07Ci0gICAgY2xhc3MgUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9p
bnQgeworICAgIGNsYXNzIFByb3BlcnR5V2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBv
aW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFByb3BlcnR5V2F0Y2hwb2ludCgpIHsgfQogICAg
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaAppbmRleCA2MTAyNjFmNmE1
NThjNTJlZmQwNjJmZjIxM2QyZDUyY2RjOGVlMDVjLi5hZjI0ZWEzYTZmYjMwMmI3OTI2MGFhZmNm
N2VmZTZmYWY2OWNlYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CiAKLWNsYXNzIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKK2NsYXNz
IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50
IHsKIHB1YmxpYzoKICAgICBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiAgICAgICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRl
eCA2YmVkZGY5Y2NkNjJlNjcxNmFiNDA4NmVmMDE4MTM1ZjIzY2UyZjUwLi4xYmViYzQ4YzA0NzRm
OTU1MGU3ZGYyMzYzZjdkMWNiOGI2ZjY3ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtMzIsOCArMzIsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQo
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSwgT3BHZXRCeUlkOjpNZXRhZGF0YSYg
Z2V0QnlJZE1ldGFkYXRhKQotICAgIDogbV9rZXkoa2V5KQorTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24mIGtleSwgT3BHZXRCeUlkOjpNZXRhZGF0YSYgZ2V0QnlJZE1ldGFkYXRhKQorICAgIDog
bV9vd25lcihvd25lcikKKyAgICAsIG1fa2V5KGtleSkKICAgICAsIG1fZ2V0QnlJZE1ldGFkYXRh
KGdldEJ5SWRNZXRhZGF0YSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChrZXkud2F0Y2hpbmdSZXF1
aXJlc1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KCkpOwpAQCAtNDksNiArNTAsOSBAQCB2
b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFs
bChWTSYgdm0pCiAKIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikKIHsKKyAgICBp
ZiAoIW1fb3duZXItPmlzTGl2ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9rZXku
aXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKICAg
ICAgICAgaW5zdGFsbCh2bSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCAwYTE3MzBhZjdhYjkx
NjA0ZGVjNTE4MDBlMDI1Yzc0YmZmODc2ZTYwLi45ZTExODA4ZjNmNDg2NzRmMGUxYWY4OWExMTM3
MzI4NmFhMjIyM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBw
dWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6Ci0gICAg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uJiwgT3BHZXRCeUlkOjpNZXRhZGF0YSYpOworICAgIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChDb2RlQmxvY2sqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIE9wR2V0QnlJZDo6TWV0YWRhdGEmKTsKIAogICAgIHZv
aWQgaW5zdGFsbChWTSYpOwogCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAg
ICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKKyAgICBDb2RlQmxvY2sqIG1fb3duZXI7CiAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gbV9rZXk7CiAgICAgT3BHZXRCeUlkOjpNZXRhZGF0YSYgbV9nZXRCeUlkTWV0YWRhdGE7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKaW5kZXggMDdlMWY3NDZlZGE5NTJj
MDY0Mjc1YjkyNjUyN2ZhOTg3NjE1YjdjMC4uZGY3MTkwYTQ3ZjhlZTgyYTFhNzBmODI4MmEwNzY3
NDJkMDY0MTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogY2xhc3Mg
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOwogCi1jbGFzcyBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3MgU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludC5oCmluZGV4IDYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4Njc0MGE0
NjQxZDQwNDcuLjg1MDE2NTYzNmQwZWZmMjliNzNiNTk2YzE2ZTg2OWRkZjkwODNiYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaApAQCAtMzEsNyArMzEsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKK2NsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgQmFzZTsKICAgICBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBD
b2RlQmxvY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCBkNGE4YjlhN2Q4Yzc4MmJk
ZGI5YzFlNGFjNzFmY2IyNTRmMGJkNjBkLi41YjlkZGE2ZmIwYjE3NGFhYzk0YTc5N2NhMTE5MGNj
NTQ5NmEyNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC01Miw2ICs1Miw5IEBAIHZv
aWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKFZNJiB2bSkKIAogdm9pZCBB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZp
cmVEZXRhaWwmIGRldGFpbCkKIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0xpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0
aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCBjMWY1NzRmNTMzOTI2ZDQzMDdiMmRl
MzA2ZDUzN2YxMGJiN2RlNDcyLi45NDAxM2RjOTY4M2YzOGE5ZDk0Mzc2ODlmMmRhYzBhODRlNjMw
MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAgQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwgQ29kZUJsb2Nr
Kik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDlkZGQxMzc1ZjY2
ZjQxYjYyMTY0ZTEwZmMzZDhmZmIwMGQ5ZGFiOWUuLjQ5NTNhYzI1OTIyM2YzMmExYTBhZDZlOTYx
ODJmZmJjMTZhYWE1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC01OTUs
NiArNTk1LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkK
ICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
Q29kZUJsb2NrPihzcGFjZS5zZXQpOwogICAgICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOworICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVj
dHVyZVJhcmVEYXRhU3BhY2UpOwogICAgIGlmICh2bSgpLT5tX3dlYWtTZXRTcGFjZSkKICAgICAg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bSgp
LT5tX3dlYWtTZXRTcGFjZSk7CiAgICAgaWYgKHZtKCktPm1fd2Vha01hcFNwYWNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggN2ZjMzcz
MDNkMGY1YWQ1Y2ZlZjY3YzZjOTJlNDgxYmRjNWMwYWM2Ny4uOWQxZDgxOTA5NDU1MWFlMWFhMDdk
NzdjMjQ0OTgwNjdkOGIwZjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC03MjcsNyArNzI3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IEluc3Ry
dWN0aW8KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRp
b24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKQogICAgICAgICAgICAg
b2Zmc2V0ID0gY29uZGl0aW9uLmNvbmRpdGlvbigpLm9mZnNldCgpOwotICAgICAgICB3YXRjaHBv
aW50cy5hZGQoY29uZGl0aW9uLCBtZXRhZGF0YSktPmluc3RhbGwodm0pOworICAgICAgICB3YXRj
aHBvaW50cy5hZGQoY29kZUJsb2NrLCBjb25kaXRpb24sIG1ldGFkYXRhKS0+aW5zdGFsbCh2bSk7
CiAgICAgfQogCiAgICAgQVNTRVJUKChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgPT0gc2xvdC5p
c1Vuc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25S
YXJlRGF0YS5oCmluZGV4IGJmNzMwMzExMjZhN2NjNjI0ZGZiYTFkNTZmODlhYTc3NDIyNTlkMDcu
LjEzMmMyNzk2MDI2NmY3ZjBmZWY1OWNhNmRlMjU2MzQ1ZjAyZjUzMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTExNiw3ICsx
MTYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAK
IHByaXZhdGU6CiAKLSAgICBjbGFzcyBBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKKyAgICBjbGFzcyBBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KEZ1bmN0aW9uUmFyZURh
dGEqIHJhcmVEYXRhKQogICAgICAgICAgICAgOiBtX3JhcmVEYXRhKHJhcmVEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDdh
ZmU3MDMyYjE2OGM2YmNiNTQzMzNjYjJjZWFiOTAxYmExNGY2ZmEuLmFkZWY2OWIyMmY0ZDU2YTU3
NTNhNWE5NjQ5YTFjNmU0NzI4ZjEzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTExMDMsNTcgKzExMDMsNTcgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9y
UHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJy
YXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0
b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRl
cmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRp
dGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRl
cmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1f
bWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0
b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21h
cEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1i
b2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0g
ICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1f
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlv
biwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywg
Y29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9z
ZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmlu
Z0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJp
bmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmlu
Z0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0
cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAg
fQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBz
ZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5zZXQpOwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAg
IG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVT
ZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1f
c2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1f
c2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlv
biwgbV9zZXRBZGRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNo
cG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIApAQCAtMTE2NCw3ICsxMTY0LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QK
ICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJv
dG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQ
cm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRp
b24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5
cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5
cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3Rv
VG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVy
UHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwog
ICAgIH0KQEAgLTE4OTIsMTAgKzE4OTIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5z
dGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAg
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMg
d2F0Y2hwb2ludC4iKTsKIAotICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9p
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNw
ZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9y
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVz
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHNwZWNpZXNDb25kaXRpb24sIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNo
cG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50LmgKaW5kZXggNGUwYzIwOTA1ZTYzODhkMzg0MTVjN2VhZTQyMzQxMzAwOTMwNGEw
NC4uYTQ0ZWUyMjVmYTNjMjY2ODBmYjRiNTJiMWNlOWRhMGQ5YzRjNTU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXYXRjaHBvaW50PgotY2xhc3MgT2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CitjbGFzcyBPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTsKLSAgICBPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYgY29uZGl0aW9uLCBXYXRjaHBvaW50JiB3YXRjaHBvaW50KQorICAgIE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50KEpTQ2VsbCogb3duZXIsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJiBjb25kaXRpb24sIFdhdGNocG9pbnQmIHdhdGNocG9pbnQpCiAgICAgICAg
IDogQmFzZShjb25kaXRpb24pCisgICAgICAgICwgbV9vd25lcihvd25lcikKICAgICAgICAgLCBt
X3dhdGNocG9pbnQod2F0Y2hwb2ludCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHdh
dGNocG9pbnQuc3RhdGVPbkpTVGhyZWFkKCkgPT0gSXNXYXRjaGVkKTsKICAgICB9CiAKKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3du
ZXItPmlzTGl2ZSgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUZpcmUoVk0m
IHZtLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fd2F0Y2hw
b2ludC5maXJlQWxsKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJPYmplY3QgUHJvcGVydHkgaXMgY2hh
bmdlZC4iKSk7CiAgICAgfQogCisgICAgSlNDZWxsKiBtX293bmVyOwogICAgIFdhdGNocG9pbnQm
IG1fd2F0Y2hwb2ludDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCBkNTYwNmNkNDEwNWFjYTYwZGUwZjRhYWQ4
NTVkMjQ4MTMxNDlmMGM3Li41YzFjNWY3ZjliZjIyNmNjYWFkNDBkOTRkZDZjY2Q5Y2RlOTdjZmMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogLy8gLS0tLS0t
LS0tLS0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpIGhlbHBlciB3YXRjaHBvaW50IGNsYXNz
ZXMgLS0tLS0tLS0tLS0KIAotY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZSB7CitjbGFzcyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgQmFzZTsKICAgICBPYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYsIFN0cnVjdHVyZVJhcmVEYXRhKik7CkBAIC05MCwxMiArOTAsMTQg
QEAgY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmYKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogbV9zdHJ1
Y3R1cmVSYXJlRGF0YTsKIH07CiAKLWNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3MgT2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBw
dWJsaWM6CiAgICAgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBTdHJ1Y3R1cmVSYXJlRGF0YSopOwogCiAgICAg
dm9pZCBpbnN0YWxsKFZNJik7CiAKKyAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYg
a2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmly
ZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogICAgIApAQCAtMTY5
LDYgKzE3MSwyMiBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2xlYXJPYmplY3RU
b1N0cmluZ1ZhbHVlKCkKICAgICBtX29iamVjdFRvU3RyaW5nVmFsdWUuY2xlYXIoKTsKIH0KIAor
dm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQor
eworICAgIGlmIChtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2lu
dCkgeworICAgICAgICBpZiAoIW1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50LT5rZXkoKS5pc1N0aWxsTGl2ZSh2bSkpIHsKKyAgICAgICAgICAgIGNsZWFyT2Jq
ZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorICAgIGZvciAoYXV0byogd2F0Y2hwb2ludCA6IG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdh
dGNocG9pbnRTZXQpIHsKKyAgICAgICAgaWYgKCF3YXRjaHBvaW50LT5rZXkoKS5pc1N0aWxsTGl2
ZSh2bSkpIHsKKyAgICAgICAgICAgIGNsZWFyT2JqZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiAvLyAtLS0tLS0tLS0tLS0tIE1l
dGhvZHMgZm9yIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBj
bGFzc2VzIC0tLS0tLS0tLS0tLS0tCiAKIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5LCBTdHJ1Y3R1cmVSYXJlRGF0YSogc3RydWN0
dXJlUmFyZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuaAppbmRleCBjNGJlNzE0MGNlODJjMjk0MWQyMjQxZjM4ZDhkNWFmMzhmOGJj
NjE4Li5lMDNiMjNmMjJiMjk0YTEyNDhjMWVlZDllMDE0MDhhNTU0ODQyYTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTkw
LDYgKzkwLDggQEAgY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25k
aXRpb25hbGx5KFZNJik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsK
ICAgICBmcmllbmQgY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZhZDNiOGM3N2NmOTBmZTM2NjAwZTQ3MmQ5ZGExMjk4MWExYWI1ZWIuLmNkYmQ4N2NmZGQ0
ZjlhMTA2NWE1YmY2ZGE4NmNkYjE4NjFkYTY1MmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMtMjYg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBHQyBzaG91bGQg
cmVhcCBkZWFkIHdhdGNocG9pbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAoQS5wcm90b3R5cGUueSk6CisgICAg
ICAgIChBKToKKwogMjAxOS0wMy0yNiAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBTa2lwIFdlYkFzc2VtYmx5IHRlc3Qgb24gMzItYml0IHN5c3RlbXMK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2lu
dHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUwNmM3NTQ2OTI2NDAwZWUzZjYzMGY2ZDQwZWJiNmIyNjhmNTkwMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNo
cG9pbnRzLmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1mb3JjZUVh
Z2VyQ29tcGlsYXRpb249dHJ1ZSIpCisKKy8vIFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgor
CitsZXQgYTsKKworZnVuY3Rpb24gZm9vKHMpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHMp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgYSAvIDE7CisgICAg
ICAgIGEgPSBudWxsOworICAgIH0KK30KKworZm9vKCd6eicpOworZm9vKCdjbGFzcyBBIHsgeSgp
IHt9IH07IGE9bmV3IEE7IHp6Jyk7Citmb28oJ2NsYXNzIEMgeyB5KCkge30gfTsgZ2MoKTsnKTsK
KworY2xhc3MgQSB7CisgICAgeSgpIHt9Cit9CisKK0EucHJvdG90eXBlLnogPSAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366056</attachid>
            <date>2019-03-26 23:44:09 -0700</date>
            <delta_ts>2019-03-27 00:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195827-20190326234408.patch</filename>
            <type>text/plain</type>
            <size>47979</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmY2MDQyZWIyZmFjNzc4NzE4ODg5ZWE5NTY2Yjk2ZWQ3NWEyN2VlLi44NTBiMGUyMjcxZGU2ZmE4
ZGM3NTYyZDA3N2I0NDBiMWRkM2RmYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxOS0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE93bmVyIG9mIHdhdGNocG9pbnRzIHNob3VsZCB2YWxpZGF0ZSBh
dCBHQyBmaW5hbGl6aW5nIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oOgorICAgICAgICAoSlNDOjpBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpTdHJ1Y3R1cmVXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpQ
cm9wZXJ0eVdhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQ6OkNvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCk6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6
OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6a2V5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHVi
SW5mbzo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQ6OlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQu
aDoKKyAgICAgICAgKiBkZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6a2V5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKToKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAg
ICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojpub3RpZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2Zlcik6CisgICAgICAgICogcnVudGlt
ZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmguCisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3Rh
bGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50OjpPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorCiAyMDE5LTAzLTI2
ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZUTDogRW1pdCBj
b2RlIHRvIHZhbGlkYXRlIEFJJ3Mgc3RhdGUgd2hlbiBydW5uaW5nIHRoZSBjb21waWxlZCBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRiMjViNzIzNjQ4ZGM4NWM4MWYzZDdl
ZWI2ODc1NTIxNmU0MTk5NjUuLjc1NzQ1ODc3MjkxNjMyYTEzYTY1ZGUyNjcwNmY5ZmViZTdhMjgy
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDQsNyArNzQ0LDcgQEAKIAkJ
MEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgy
RDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3Bl
cnR5VHlwZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGQzkyMTUxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovOyB9
OwogCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5
QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyB9OwogCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1
MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRkZDOTRFMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oICovOyB9
OwogCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZHUGhhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTUwMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdQaGFzZS5oICovOyB9OwpAQCAtMzExMyw4ICszMTEzLDggQEAKIAkJMEZGQjgwQkIy
MEE3OTQ3MDAwMDZBQUY2IC8qIEpJVENvZGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVENvZGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJvcGVydHlUeXBlS2V5Lmg7IHBhdGgg
PSBkZmcvREZHUHJvcGVydHlUeXBlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5
RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZD
OTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QjE0
RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NG
QVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjMy
LDggKzY2MzIsOCBAQAogCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNr
TW9kZS5oICovLAogCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5j
cHAgKi8sCiAJCQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8s
Ci0JCQkJMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAgKi8sCi0JCQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICovLAorCQkJCTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBB
QiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICovLAorCQkJCTBGRkM5
OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQu
aCAqLywKIAkJCQkwRjMwRkI2MDFEQzJERTk2MDAzMTI0RjIgLyogQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZS5oICovLAogCQkJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZp
ZXcuY3BwICovLAogCQkJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZp
ZXcuaCAqLywKQEAgLTg1MTIsNyArODUxMiw3IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIg
LyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMwRkI2MTFEQzJERTk5MDAzMTI0RjIgLyogQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFy
cmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGYwNWEzZmU5ZTAzM2QyZTFhNDk0YzQ2MTk0YWMxMjQ5OWQzMzMxMWUuLjU5YTM1YjJk
N2Q0NjYzMmMzNzA1ZDM2Mjk0YmJjYTM4ZjAwYjVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTY5Miw3ICs2OTIsNyBAQCBwcm9maWxlci9Qcm9maWxlclVJRC5jcHAKIHJ1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCiBydW50aW1lL0FyZ0xpc3QuY3BwCiBydW50aW1l
L0FycmF5QnVmZmVyLmNwcAotcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwCitydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAKIHJ1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9BcnJheUNvbnZlbnRpb25zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKaW5kZXggNTBkODRiYTg4OGQ1MWI5MjkyMDM3ZjExNDRl
NDg2YmRiZGUyZTJhMy4uNWQ0ZTAyYWFlZmU5NjYwMDNmNjUyMTg0MDA4ODdlNDJmMTQzNWU4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5o
CkBAIC01MCwxMyArNTAsMTMgQEAgY2xhc3MgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZSB7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZpcmUoVk0mLCBjb25zdCBG
aXJlRGV0YWlsJikgPSAwOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CisgICAgY2xhc3MgU3RydWN0dXJlV2F0Y2hwb2ludCBm
aW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVy
ZVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmlyZUludGVy
bmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogICAgIH07Ci0gICAgY2xhc3Mg
UHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworICAgIGNsYXNzIFByb3Bl
cnR5V2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFByb3BlcnR5V2F0Y2hwb2ludCgpIHsgfQogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuaAppbmRleCA2MTAyNjFmNmE1NThjNTJlZmQwNjJmZjIxM2QyZDUy
Y2RjOGVlMDVjLi5hZjI0ZWEzYTZmYjMwMmI3OTI2MGFhZmNmN2VmZTZmYWY2OWNlYmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CiAKLWNsYXNzIENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKK2NsYXNzIENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKIHB1YmxpYzoKICAgICBDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCA2YmVkZGY5Y2NkNjJlNjcxNmFi
NDA4NmVmMDE4MTM1ZjIzY2UyZjUwLi4xYmViYzQ4YzA0NzRmOTU1MGU3ZGYyMzYzZjdkMWNiOGI2
ZjY3ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcApAQCAtMzIsOCArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mIGtleSwgT3BHZXRCeUlkOjpNZXRhZGF0YSYgZ2V0QnlJZE1ldGFkYXRhKQotICAg
IDogbV9rZXkoa2V5KQorTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoQ29kZUJs
b2NrKiBvd25lciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSwgT3BHZXRCeUlk
OjpNZXRhZGF0YSYgZ2V0QnlJZE1ldGFkYXRhKQorICAgIDogbV9vd25lcihvd25lcikKKyAgICAs
IG1fa2V5KGtleSkKICAgICAsIG1fZ2V0QnlJZE1ldGFkYXRhKGdldEJ5SWRNZXRhZGF0YSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChrZXkud2F0Y2hpbmdSZXF1aXJlc1N0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50KCkpOwpAQCAtNDksNiArNTAsOSBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiAKIHZvaWQgTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwo
Vk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikKIHsKKyAgICBpZiAoIW1fb3duZXItPmlzTGl2ZSgp
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlD
b25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKICAgICAgICAgaW5zdGFsbCh2bSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaAppbmRleCAwYTE3MzBhZjdhYjkxNjA0ZGVjNTE4MDBlMDI1Yzc0YmZm
ODc2ZTYwLi45ZTExODA4ZjNmNDg2NzRmMGUxYWY4OWExMTM3MzI4NmFhMjIyM2U2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBA
IC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7Citj
bGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6Ci0gICAgTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwg
T3BHZXRCeUlkOjpNZXRhZGF0YSYpOworICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYsIE9wR2V0QnlJZDo6TWV0YWRhdGEmKTsKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCkBA
IC00NSw2ICs0NSw3IEBAIGNsYXNzIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICB2b2lkIGZpcmVJbnRlcm5hbChW
TSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICBDb2RlQmxv
Y2sqIG1fb3duZXI7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CiAgICAgT3BH
ZXRCeUlkOjpNZXRhZGF0YSYgbV9nZXRCeUlkTWV0YWRhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDY0OGIxZThmNThkNjhhZGM1ZjRlZTZkZGVlZTc2OTEx
ZjllNzc4OTguLmJkNTM1NGM0NjdhNTYwYTFhNjU1OTBiYWI1NTAzZjg3Mzk5ZDU1N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTM2LDYgKzM2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUlu
dGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCiB7CisgICAgaWYgKCFtX2hvbGRlci5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9rZXkgfHwgIW1fa2V5Lmlz
V2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAg
ICAgIC8vIFRoaXMgd2lsbCBpbXBsaWNpdGx5IGNhdXNlIG15IG93biBkZW1pc2U6IHN0dWIgcmVz
ZXQgcmVtb3ZlcyBhbGwgd2F0Y2hwb2ludHMuCiAgICAgICAgIC8vIFRoYXQgd29ya3MsIGJlY2F1
c2UgZGVsZXRpbmcgYSB3YXRjaHBvaW50IHJlbW92ZXMgaXQgZnJvbSB0aGUgc2V0J3MgbGlzdCwg
YW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAppbmRleCAwN2UxZjc0NmVkYTk1MmMw
NjQyNzViOTI2NTI3ZmE5ODc2MTViN2MwLi4wNDhjNWEwYjIxNjQ4YjZlN2UzZDY0NTliZjg1ZTA1
YmMxNzk1OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiBjbGFzcyBX
YXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm87CiAKLWNsYXNzIFN0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIFdhdGNocG9pbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNzgsNiArNzgsOCBAQCBjbGFzcyBX
YXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8gewogICAgIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBtX3N0dWJJbmZvOyB9CisKKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNMaXZlKCk7IH0KICAgICAK
IHByaXZhdGU6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCmluZGV4IDYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4
Njc0MGE0NjQxZDQwNDcuLmM0N2YwNmRmNzk4ZTRmZWNkMDFkNjY3YjE1YzQ2ZjBkNGZhNjIzMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaApAQCAtMzEsMTIg
KzMxLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgeworY2xhc3MgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgewogcHVibGljOgogICAgIHR5cGVkZWYgQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSBCYXNlOwogICAgIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYsIENvZGVCbG9jayopOwogCiBwcml2YXRlOgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzTGl2ZSgpOwor
ICAgIH0KKwogICAgIHZvaWQgaGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVy
cmlkZTsKIAogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKaW5kZXggZDRhOGI5YTdkOGM3ODJiZGRiOWMxZTRhYzcxZmNiMjU0ZjBiZDYwZC4uNWI5ZGRh
NmZiMGIxNzRhYWM5NGE3OTdjYTExOTBjYzU0OTZhMjQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcApAQCAtNTIsNiArNTIsOSBAQCB2b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
aW5zdGFsbChWTSYgdm0pCiAKIHZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJl
SW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CisgICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNMaXZlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2tleS5p
c1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewogICAg
ICAgICBpbnN0YWxsKHZtKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5k
ZXggYzFmNTc0ZjUzMzkyNmQ0MzA3YjJkZTMwNmQ1MzdmMTBiYjdkZTQ3Mi4uOTQwMTNkYzk2ODNm
MzhhOWQ5NDM3Njg5ZjJkYWMwYTg0ZTYzMDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3Mg
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3Mg
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIFdhdGNocG9pbnQgewog
cHVibGljOgogICAgIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiYsIENvZGVCbG9jayopOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IGE0Y2IwMGZhNzVj
ODY3MTRhYmEzYTBmMjA3OWQyM2Y1OTNlZjczOWUuLjFhYzg2YWNmMzI3NDNmM2E2ZjdlMDFjYjFj
MWM0YjhiNzdlZTRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisj
aW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCkBAIC0zOSw4ICszOSw4IEBA
IHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKIHsKICAgICBWTSYg
dm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgIFdhdGNocG9pbnQqIHdhdGNocG9pbnQgPSBjb21t
b24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KLSAgICAgICAgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOworICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CisgICAgICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKHZtKTsKICAgICBuZXV0ZXJpbmdXYXRjaHBvaW50
LT5zZXQoKS5hZGQod2F0Y2hwb2ludCk7CiAgICAgY29kZUJsb2NrLT5hZGRDb25zdGFudChuZXV0
ZXJpbmdXYXRjaHBvaW50KTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0byBzZXQgdGhp
cyB3YXRjaHBvaW50IGF0IGFsbCBmb3Igc2hhcmVkIGJ1ZmZlcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCmluZGV4IDlkZGQxMzc1ZjY2ZjQxYjYyMTY0ZTEwZmMzZDhmZmIwMGQ5ZGFi
OWUuLjQ5NTNhYzI1OTIyM2YzMmExYTBhZDZlOTYxODJmZmJjMTZhYWE1MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC01OTUsNiArNTk1LDcgQEAgdm9pZCBIZWFwOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwogICAg
ICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwogICAgIGlm
ICh2bSgpLT5tX3dlYWtTZXRTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bSgpLT5tX3dlYWtTZXRTcGFjZSk7CiAgICAgaWYg
KHZtKCktPm1fd2Vha01hcFNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggN2ZjMzczMDNkMGY1YWQ1Y2ZlZjY3YzZjOTJlNDgxYmRj
NWMwYWM2Ny4uOWQxZDgxOTA5NDU1MWFlMWFhMDdkNzdjMjQ0OTgwNjdkOGIwZjAxNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC03Mjcs
NyArNzI3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IEluc3RydWN0aW8KICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25k
aXRpb246OlByZXNlbmNlKQogICAgICAgICAgICAgb2Zmc2V0ID0gY29uZGl0aW9uLmNvbmRpdGlv
bigpLm9mZnNldCgpOwotICAgICAgICB3YXRjaHBvaW50cy5hZGQoY29uZGl0aW9uLCBtZXRhZGF0
YSktPmluc3RhbGwodm0pOworICAgICAgICB3YXRjaHBvaW50cy5hZGQoY29kZUJsb2NrLCBjb25k
aXRpb24sIG1ldGFkYXRhKS0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgQVNTRVJUKChvZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkgPT0gc2xvdC5pc1Vuc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IDZjNTZkNTlmMTcxYzU5OGQ0
NjI0YWJmZjU5YjE2Yjc0YTBlZjE0YzYuLjhmODU1NmI4OTdiYTcwYWM3ZTlkYjM4ZTBmOGFiOWMw
NDVhZDM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
cnJheUJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0dpZ2FjYWdlLmg+CkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBBcnJheUJ1ZmZl
cjo6bm90aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIoVk0mIHZtKQogICAgICAgICBK
U0NlbGwqIGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5jZUF0KGkpOwogICAgICAgICBpZiAoSlNBcnJh
eUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0s
IGNlbGwpKQogICAgICAgICAgICAgdmlldy0+bmV1dGVyKCk7Ci0gICAgICAgIGVsc2UgaWYgKEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Kj4odm0sIGNlbGwpKQorICAgICAgICBlbHNl
IGlmIChBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIHdhdGNocG9pbnQgPSBqc0R5
bmFtaWNDYXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KHZtLCBjZWxsKSkK
ICAgICAgICAgICAgIHdhdGNocG9pbnQtPmZpcmVBbGwoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmZmY0
YTg3YjA1YzM5OGM4ODExZThkYjZjNWQzZDY2YTEwMDg2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmgiCi0KLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1j
b25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8gPSB7
Ci0gICAgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCi0gICAgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQpCi19OwotCi1BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OkFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCi0gICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX3NldChhZG9w
dFJlZigqbmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCi17Ci19Ci0KLXZvaWQgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBz
dGF0aWNfY2FzdDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqPihjZWxsKS0+QXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Ojp+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
KCk7Ci19Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUoVk0mIHZtKQotewotICAgIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludCogcmVzdWx0ID0gbmV3Ci0gICAgICAgIChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Pih2bS5oZWFwKSkKLSAgICAgICAgQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KHZtKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1TdHJ1Y3R1cmUqIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKLXsKLSAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIGpzTnVsbCgpLCBUeXBlSW5mbyhDZWxsVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi12b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6ZmlyZUFsbCgpCi17Ci0gICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJBcnJh
eSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWQ2
ZDA5NzRhNThlYmIwYjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAgREVDTEFSRV9JTkZP
OwotICAgIAotICAgIHN0YXRpYyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIGNyZWF0
ZShWTSYpOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAgICAKLSAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKLSAgICAKLSAgICBXYXRjaHBvaW50U2V0JiBz
ZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQotICAgIAotICAgIHZvaWQgZmlyZUFsbCgpOwot
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChW
TSYpOwotICAgIAotICAgIFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWYyM2RlMTIzMWFjMGIxN2E0YzBiZTJmZjMzMzg5MWJlNTMzNGY5MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludFNldC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgiCisKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpzX2luZm8gPSB7CisgICAgIkFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldCIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgQ1JFQVRF
X01FVEhPRF9UQUJMRShBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQpCit9OworCitB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldChWTSYgdm0pCisgICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3NldChhZG9wdFJlZigqbmV3IFdh
dGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCit7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqPihjZWxsKS0+QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0Ojp+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
KCk7Cit9CisKK0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGUoVk0mIHZtKQoreworICAgIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludFNldCogcmVzdWx0ID0gbmV3CisgICAgICAgIChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Pih2bS5oZWFwKSkK
KyAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KHZtKTsKKyAgICByZXN1
bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTdHJ1Y3R1
cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIGpzTnVsbCgpLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCgpCit7CisgICAgbV9zZXQt
PmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlOGVkYzZlM2M1Y2Y3MjBhYjQzOTVmYTJiYTEwMDFlZmU4NDUyMDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDYXN0
LmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CisKKyAgICBERUNMQVJFX0lORk87CisgICAgCisgICAgc3RhdGljIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogY3JlYXRlKFZNJik7CisKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYpOworICAgIAorICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgp
OyB9CisgICAgCisgICAgdm9pZCBmaXJlQWxsKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KFZNJik7CisgICAgCisgICAgUmVmPFdh
dGNocG9pbnRTZXQ+IG1fc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggYmY3MzAz
MTEyNmE3Y2M2MjRkZmJhMWQ1NmY4OWFhNzc0MjI1OWQwNy4uMTMyYzI3OTYwMjY2ZjdmMGZlZjU5
Y2E2ZGUyNTYzNDVmMDJmNTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIEZ1bmN0aW9u
UmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKIAotICAgIGNsYXNz
IEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQg
eworICAgIGNsYXNzIEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50IGZpbmFsIDog
cHVibGljIFdhdGNocG9pbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgQWxsb2NhdGlvblByb2Zp
bGVDbGVhcmluZ1dhdGNocG9pbnQoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEpCiAgICAgICAg
ICAgICA6IG1fcmFyZURhdGEocmFyZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggN2FmZTcwMzJiMTY4YzZiY2I1NDMzM2Ni
MmNlYWI5MDFiYTE0ZjZmYS4uYWRlZjY5YjIyZjRkNTZhNTc1M2E1YTk2NDlhMWM2ZTQ3MjhmMTNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtMTEwMyw1NyArMTEwMyw1NyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogCiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOworICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwg
bV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAg
bV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21h
cFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0g
ICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+
aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBt
X3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVy
YXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQp
OwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3Ry
aW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsK
LSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50
KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAg
IG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRp
dGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdh
dGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1f
dm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMTY0LDcg
KzExNjQsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICB0aGlzLT5zeW1ib2xQ
cm90b3R5cGUoKTsKIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dh
dGNocG9pbnQpOworICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dh
dGNocG9pbnQpOwogICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+
aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2
bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAgfQpAQCAtMTg5MiwxMCArMTg5
MiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hw
b2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgpKTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAg
bV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAg
IG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50
KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4oc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsK
KyAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7
CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaAppbmRleCA0ZTBj
MjA5MDVlNjM4OGQzODQxNWM3ZWFlNDIzNDEzMDA5MzA0YTA0Li41NDFmMzQ1ZDM2MWJkMTNlYzRl
NjllNjg3NzQyMTViMGY2YjRhYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50LmgKQEAgLTMwLDIyICszMCwyOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFdhdGNocG9pbnQ+Ci1jbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlIHsKK2NsYXNzIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlOwotICAgIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24sIFdhdGNocG9p
bnQmIHdhdGNocG9pbnQpCisgICAgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQoSlNDZWxsKiBvd25lciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlv
biwgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKICAgICAgICAgOiBCYXNlKGNvbmRpdGlvbikKKyAg
ICAgICAgLCBtX293bmVyKG93bmVyKQogICAgICAgICAsIG1fd2F0Y2hwb2ludCh3YXRjaHBvaW50
KQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2F0Y2hwb2ludC5zdGF0ZU9uSlNUaHJl
YWQoKSA9PSBJc1dhdGNoZWQpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3duZXItPmlzTGl2ZSgp
OworICAgIH0KKwogICAgIHZvaWQgaGFuZGxlRmlyZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV93YXRjaHBvaW50LmZpcmVBbGwodm0sIFN0cmlu
Z0ZpcmVEZXRhaWwoIk9iamVjdCBQcm9wZXJ0eSBpcyBjaGFuZ2VkLiIpKTsKICAgICB9CiAKKyAg
ICBKU0NlbGwqIG1fb3duZXI7CiAgICAgV2F0Y2hwb2ludCYgbV93YXRjaHBvaW50OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwCmluZGV4IGQ1NjA2Y2Q0MTA1YWNhNjBkZTBmNGFhZDg1NWQyNDgxMzE0OWYwYzcuLjVjMWM1
ZjdmOWJmMjI2Y2NhYWQ0MGQ5NGRkNmNjZDljZGU5N2NmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAvLyAtLS0tLS0tLS0tLSBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0tLQogCi1jbGFz
cyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCA6
IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKK2Ns
YXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UgewogcHVibGljOgogICAgIHR5cGVkZWYgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZSBCYXNlOwogICAgIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwgU3Ry
dWN0dXJlUmFyZURhdGEqKTsKQEAgLTkwLDEyICs5MCwxNCBAQCBjbGFzcyBPYmplY3RUb1N0cmlu
Z0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2
ZUluZgogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBtX3N0cnVjdHVyZVJhcmVEYXRhOwogfTsKIAot
Y2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMg
V2F0Y2hwb2ludCB7CitjbGFzcyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKIHB1YmxpYzoKICAgICBPYmplY3RUb1N0
cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYsIFN0cnVjdHVyZVJhcmVEYXRhKik7CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAor
ICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBt
X2tleTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBG
aXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgCkBAIC0xNjksNiArMTcxLDIyIEBAIGlubGluZSB2
b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpjbGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKQogICAgIG1f
b2JqZWN0VG9TdHJpbmdWYWx1ZS5jbGVhcigpOwogfQogCit2b2lkIFN0cnVjdHVyZVJhcmVEYXRh
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7CisgICAgaWYgKG1fb2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50KSB7CisgICAgICAgIGlmICghbV9v
YmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmtleSgpLmlzU3Rp
bGxMaXZlKHZtKSkgeworICAgICAgICAgICAgY2xlYXJPYmplY3RUb1N0cmluZ1ZhbHVlKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvKiB3YXRj
aHBvaW50IDogbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2ludFNldCkgeworICAgICAg
ICBpZiAoIXdhdGNocG9pbnQtPmtleSgpLmlzU3RpbGxMaXZlKHZtKSkgeworICAgICAgICAgICAg
Y2xlYXJPYmplY3RUb1N0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0gTWV0aG9kcyBmb3IgT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZygpIGhlbHBlciB3YXRjaHBvaW50IGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0K
IAogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Ok9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBrZXksIFN0cnVjdHVyZVJhcmVEYXRhKiBzdHJ1Y3R1cmVSYXJlRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCmluZGV4IGM0
YmU3MTQwY2U4MmMyOTQxZDIyNDFmMzhkOGQ1YWYzOGY4YmM2MTguLmUwM2IyM2YyMmIyOTRhMTI0
OGMxZWVkOWUwMTQwOGE1NTQ4NDJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaApAQCAtOTAsNiArOTAsOCBAQCBjbGFzcyBTdHJ1
Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlOwogICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCA0Mzc1M2RhMDYwYWM0NTNjZjhhZGU2MDhlMWVkMzRiZjBlOWIx
NzQ1Li4zZWQ2ZGU5Y2UwYTg0ZGE2NzE5Y2E5NmY0YWVmMTMyODdmNGMzODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiVk0u
aCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
ZXQuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC0zODEsNyAr
MzgxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHN0
cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3Ry
dWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U3RydWN0dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMpKTsKKyAgICBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcykpOwogICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmFkM2I4Yzc3Y2Y5MGZlMzY2MDBlNDcyZDlkYTEyOTgxYTFh
YjVlYi4uYTUxZWJjMDRiODMzYTMzZjU5ZTdkZDBmMWIwMTFhNzRhZWY3ZjRhNiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxOS0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIE93bmVyIG9mIHdhdGNocG9pbnRzIHNob3VsZCB2YWxpZGF0ZSBhdCBHQyBm
aW5hbGl6aW5nIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTU4MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHN0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChBLnByb3RvdHlwZS55KToKKyAgICAgICAgKEEp
OgorCiAyMDE5LTAzLTI2ICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFNraXAgV2ViQXNzZW1ibHkgdGVzdCBvbiAzMi1iaXQgc3lzdGVtcwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2ludHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTA2Yzc1NDY5MjY0MDBlZTNmNjMwZjZkNDBlYmI2YjI2OGY1OTAwMQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2ludHMu
anMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWZvcmNlRWFnZXJDb21w
aWxhdGlvbj10cnVlIikKKworLy8gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2guCisKK2xldCBh
OworCitmdW5jdGlvbiBmb28ocykgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwocyk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBnYygpOworICAgICAgICBhIC8gMTsKKyAgICAgICAgYSA9
IG51bGw7CisgICAgfQorfQorCitmb28oJ3p6Jyk7Citmb28oJ2NsYXNzIEEgeyB5KCkge30gfTsg
YT1uZXcgQTsgenonKTsKK2ZvbygnY2xhc3MgQyB7IHkoKSB7fSB9OyBnYygpOycpOworCitjbGFz
cyBBIHsKKyAgICB5KCkge30KK30KKworQS5wcm90b3R5cGUueiA9IDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366058</attachid>
            <date>2019-03-27 00:03:21 -0700</date>
            <delta_ts>2019-03-27 00:28:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195827-20190327000320.patch</filename>
            <type>text/plain</type>
            <size>50425</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmY2MDQyZWIyZmFjNzc4NzE4ODg5ZWE5NTY2Yjk2ZWQ3NWEyN2VlLi5iZTQ5MWI2ZjI3M2IyYWJi
ZTQyODhiNjY2ODllMDMyYjM1Mjk3NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxOS0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE93bmVyIG9mIHdhdGNocG9pbnRzIHNob3VsZCB2YWxpZGF0ZSBh
dCBHQyBmaW5hbGl6aW5nIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIEpTQydzIHdhdGNocG9pbnQgbGl2ZW5lc3Mg
aXNzdWUgYnkgdGhlIGZvbGxvd2luZyB0d28gcG9saWNpZXMuCisKKyAgICAgICAgMS4gV2F0Y2hw
b2ludCBzaG91bGQgaGF2ZSBvd25lciBjZWxsLCBhbmQgImZpcmUiIG9wZXJhdGlvbiBzaG91bGQg
YmUgZ2F1cmRlZCB3aXRoIG93bmVyIGNlbGwncyBpc0xpdmUgY2hlY2suCisKKyAgICAgICAgV2F0
Y2hwb2ludHMgc2hvdWxkIGhvbGQgaXRzIG93bmVyIGNlbGwsIGFuZCBmaXJlIHByb2NlZHVyZSBz
aG91bGQgYmUgZ3VhcmRlZCBieSBgb3duZXItPmlzTGl2ZSgpYC4KKyAgICAgICAgV2hlbiB0aGUg
b3duZXIgY2VsbCBpcyBkZXN0cm95ZWQsIHRoZXNlIHdhdGNocG9pbnRzIGFyZSBkZXN0cm95ZWQg
dG9vLiBCdXQgdGhpcyBkZXN0cnVjdGlvbiBjYW4KKyAgICAgICAgYmUgZGVsYXllZCBkdWUgdG8g
aW5jcmVtZW50YWwgc3dlZXBlci4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2FuIGhhcHBl
bi4KKworICAgICAgICBXaGVuIHdlIGhhdmUgYSB3YXRjaHBvaW50IGxpa2UgdGhlIGZvbGxvd2lu
Zy4KKworICAgICAgICAgICAgY2xhc3MgWFhYV2F0Y2hwb2ludCB7CisgICAgICAgICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CisgICAgICAgICAgICAgICAgSlNDZWxsKiBt
X293bmVyOworICAgICAgICAgICAgfTsKKworICAgICAgICBCb3RoIG1fa2V5J3MgY2VsbCBhbmQg
bV9vd25lciBpcyBub3cgdW5yZWFjaGFibGUgZnJvbSB0aGUgcm9vdC4gU28gZXZlbnR1YWxseSwg
bV9vd25lciBjZWxsJ3MgZGVzdHJ1Y3RvcgorICAgICAgICBpcyBjYWxsZWQgYW5kIHRoaXMgd2F0
Y2hwb2ludCB3aWxsIGJlIGRlc3Ryb3llZC4gQnV0IGJlZm9yZSB0aGF0LCBtX2tleSdzIGNlbGwg
Y2FuIGJlIGRlc3Ryb3llZC4gQW5kIHRoaXMKKyAgICAgICAgd2F0Y2hwb2ludCdzIGZpcmUgcHJv
Y2VkdXJlIGNhbiBiZSBjYWxsZWQgc2luY2UgbV9vd25lcidzIGRlc3RydWN0b3IgaXMgbm90IGNh
bGxlZCB5ZXQuIEluIHRoaXMgc2l0dWF0aW9uLAorICAgICAgICB3ZSBlbmNvdW50ZXIgdGhlIGRl
c3Ryb3llZCBjZWxsIGhlbGQgaW4gbV9rZXkuIFRoaXMgcHJvYmxlbSBjYW4gYmUgYXZvaWRlZCBp
ZiB3ZSBndWFyZCBmaXJlIHByb2NlZHVyZSB3aXRoCisgICAgICAgIGBtX293bmVyLT5pc0xpdmUo
KWAuIFVudGlsIHRoZSBvd25lciBjZWxsIGlzIGRlc3Ryb3llZCwgdGhpcyBndWFyZCBhdm9pZHMg
ImZpcmUiIHByb2NlZHVyZSBleGVjdXRpb24uIEFuZAorICAgICAgICBvbmNlIHRoZSBkZXN0cnVj
dG9yIG9mIG1fb3duZXIgaXMgY2FsbGVkLCB0aGlzIHdhdGNocG9pbnQgd2lsbCBiZSBkZXN0cm95
ZWQgdG9vLgorCisgICAgICAgIDIuIFdhdGNocG9pbnQgbGl2ZW5lc3Mgc2hvdWxkIGJlIG1haW50
YWluZWQgYnkgb3duZXIgY2VsbCdzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyCisKKyAgICAgICAg
V2F0Y2hwb2ludHMgb2Z0ZW4gaG9sZCB3ZWFrIHJlZmVyZW5jZXMgdG8gdGhlIG90aGVyIGNlbGwg
KGxpa2UsIG1fa2V5IGluIHRoZSBhYm92ZSBleGFtcGxlKS4gSWYgd2UgZG8gbm90CisgICAgICAg
IGRlbGV0ZSB3YXRjaHBvaW50cyB3aXRoIGRlYWQgY2VsbHMgd2hlbiB0aGVzZSB3ZWFrIGNlbGxz
IGJlY29tZSBkZWFkLCB0aGVzZSB3YXRjaHBvaW50cyBjb250aW51ZSBob2xkaW5nIGRlYWQgY2Vs
bHMsCisgICAgICAgIGFuZCB3YXRjaHBvaW50J3MgZmlyZSBvcGVyYXRpb24gY2FuIHVzZSB0aGVz
ZSBkZWFkIGNlbGxzIGFjY2lkZW50YWxseS4gaXNMaXZlIC8gaXNTdGlsbExpdmUgY2hlY2sgZm9y
IHRoZXNlIHdlYWsgY2VsbHMKKyAgICAgICAgaW4gZmlyZSBvcGVyYXRpb24gaXMgbm90IHVzZWZ1
bC4gQmVjYXVzZSB0aGVzZSBkZWFkIGNlbGxzIGNhbiBiZSByZXVzZWQgdG8gdGhlIG90aGVyIGxp
dmUgY2VsbHMgZXZlbnR1YWxseSwgYW5kIHRoaXMKKyAgICAgICAgaXNMaXZlIC8gaXNTdGlsbExp
dmUgY2hlY2tzIGZhaWwgdG8gc2VlIHRoZXNlIGNlbGxzIGFyZSBsaXZlIGlmIHRoZXkgYXJlIHJl
dXNlZC4gQXBwcm9wcmlhdGUgd2F5IGlzIGRlbGV0aW5nIHdhdGNocG9pbnRzCisgICAgICAgIHdp
dGggZGVhZCBjZWxscyB3aGVuIGZpbmFsaXppbmcgR0MuIEluIHRoaXMgcGF0Y2gsIHdlIGRvIHRo
aXMgaW4gdW5jb25kaXRpb25hbCBmaW5hbGl6ZXJzIGluIG93bmVyIGNlbGxzIG9mIHdhdGNocG9p
bnRzLgorICAgICAgICBXZSBhbHJlYWR5IGRpZCB0aGlzIGluIENvZGVCbG9jayBldGMuIFdlIGFk
ZCB0aGUgc2FtZSB0aGluZyB0byBTdHJ1Y3R1cmVSYXJlRGF0YSB3aGljaCBvd25zIHdhdGNocG9p
bnRzIGZvciB0b1N0cmluZyBvcGVyYXRpb25zLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
Lmg6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2U6OlN0cnVjdHVyZVdhdGNocG9pbnQ6OlN0cnVjdHVyZVdhdGNocG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlOjpQcm9wZXJ0eVdhdGNocG9pbnQ6OlByb3BlcnR5V2F0Y2hwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6Q29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OkxMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToK
KyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjprZXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6U3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjprZXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5QnVmZmVyVmlld1dh
dGNocG9pbnRBZGFwdG9yOjphZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldHVwR2V0
QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6Om5vdGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRy
YW5zZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dFNldC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwLgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNl
dCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6ZGVz
dHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAgICAgICBUaGlzIGlzIG5vdCB3YXRjaHBvaW50LiBJ
dCBpcyBXYXRjaHBvaW50U2V0LiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBuYW1lLgorCisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5oLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxOS0wMy0yNiAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEw6IEVtaXQgY29kZSB0
byB2YWxpZGF0ZSBBSSdzIHN0YXRlIHdoZW4gcnVubmluZyB0aGUgY29tcGlsZWQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYjI1YjcyMzY0OGRjODVjODFmM2Q3ZWViNjg3
NTUyMTZlNDE5OTY1Li43NTc0NTg3NzI5MTYzMmExM2E2NWRlMjY3MDZmOWZlYmU3YTI4MmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ0LDcgKzc0NCw3IEBACiAJCTBGRkI5
MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUg
LyogTm9kZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5
cGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLzsgfTsKIAkJ
MEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFC
IC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8q
IERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJ
MEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHUGhhc2UuaCAqLzsgfTsKQEAgLTMxMTMsOCArMzExMyw4IEBACiAJCTBGRkI4MEJCMjBBNzk0
NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRDb2RlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3BlcnR5VHlwZUtleS5oOyBwYXRoID0gZGZn
L0RGR1Byb3BlcnR5VHlwZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZD
OTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkM5OUQyMTg0
RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5RDMx
ODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzMiw4ICs2
NjMyLDggQEAKIAkJCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICov
LAogCQkJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJ
CTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwICovLAotCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaCAqLywKKwkJCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLywKKwkJCQkwRkZDOTlEMzE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi8s
CiAJCQkJMEYzMEZCNjAxREMyREU5NjAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNw
cCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3Lmgg
Ki8sCkBAIC04NTEyLDcgKzg1MTIsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAv
KiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MEZCNjExREMyREU5OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBmMDVhM2ZlOWUwMzNkMmUxYTQ5NGM0NjE5NGFjMTI0OTlkMzMzMTFlLi41OWEzNWIyZDdkNDY2
MzJjMzcwNWQzNjI5NGJiY2EzOGYwMGI1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC02OTIsNyArNjkyLDcgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKLXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAor
cnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCiBydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUv
QXJyYXlDb252ZW50aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5oCmluZGV4IDUwZDg0YmE4ODhkNTFiOTI5MjAzN2YxMTQ0ZTQ4NmJk
YmRlMmUyYTMuLjVkNGUwMmFhZWZlOTY2MDAzZjY1MjE4NDAwODg3ZTQyZjE0MzVlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaApAQCAt
NTAsMTMgKzUwLDEzIEBAIGNsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UgewogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpID0gMDsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBTdHJ1Y3R1cmVXYXRjaHBvaW50IDog
cHVibGljIFdhdGNocG9pbnQgeworICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmVXYXRj
aHBvaW50KCkgeyB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChW
TSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKICAgICB9OwotICAgIGNsYXNzIFByb3Bl
cnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKKyAgICBjbGFzcyBQcm9wZXJ0eVdh
dGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAg
ICBQcm9wZXJ0eVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgKaW5kZXggNjEwMjYxZjZhNTU4YzUyZWZkMDYyZmYyMTNkMmQ1MmNkYzhl
ZTA1Yy4uYWYyNGVhM2E2ZmIzMDJiNzkyNjBhYWZjZjdlZmU2ZmFmNjljZWJhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgQ29kZUJsb2NrOwogCi1jbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAgQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICA6IG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggNmJlZGRmOWNjZDYyZTY3MTZhYjQwODZl
ZjAxODEzNWYyM2NlMmY1MC4uMWJlYmM0OGMwNDc0Zjk1NTBlN2RmMjM2M2Y3ZDFjYjhiNmY2N2Rk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKQEAgLTMyLDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6TExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKLSAgICA6IG1f
a2V5KGtleSkKK0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KENvZGVCbG9jayog
b3duZXIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0
YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKKyAgICA6IG1fb3duZXIob3duZXIpCisgICAgLCBtX2tl
eShrZXkpCiAgICAgLCBtX2dldEJ5SWRNZXRhZGF0YShnZXRCeUlkTWV0YWRhdGEpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoa2V5LndhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludCgpKTsKQEAgLTQ5LDYgKzUwLDkgQEAgdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogCiB2b2lkIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2
bSwgY29uc3QgRmlyZURldGFpbCYpCiB7CisgICAgaWYgKCFtX293bmVyLT5pc0xpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0
aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKaW5kZXggMGExNzMwYWY3YWI5MTYwNGRlYzUxODAwZTAyNWM3NGJmZjg3NmU2
MC4uOWUxMTgwOGYzZjQ4Njc0ZjBlMWFmODlhMTEzNzMyODZhYTIyMjNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzEs
OSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3Mg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZpbmFsIDogcHVi
bGljIFdhdGNocG9pbnQgewogcHVibGljOgotICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIE9wR2V0
QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBP
cEdldEJ5SWQ6Ok1ldGFkYXRhJik7CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgQ29kZUJsb2NrKiBt
X293bmVyOwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgIE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmIG1fZ2V0QnlJZE1ldGFkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcAppbmRleCA2NDhiMWU4ZjU4ZDY4YWRjNWY0ZWU2ZGRlZWU3NjkxMWY5ZTc3
ODk4Li5iZDUzNTRjNDY3YTU2MGExYTY1NTkwYmFiNTUwM2Y4NzM5OWQ1NTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zNiw2ICszNiw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiB2b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogeworICAgIGlmICghbV9ob2xkZXIuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fa2V5IHx8ICFtX2tleS5pc1dhdGNo
YWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewogICAgICAgICAv
LyBUaGlzIHdpbGwgaW1wbGljaXRseSBjYXVzZSBteSBvd24gZGVtaXNlOiBzdHViIHJlc2V0IHJl
bW92ZXMgYWxsIHdhdGNocG9pbnRzLgogICAgICAgICAvLyBUaGF0IHdvcmtzLCBiZWNhdXNlIGRl
bGV0aW5nIGEgd2F0Y2hwb2ludCByZW1vdmVzIGl0IGZyb20gdGhlIHNldCdzIGxpc3QsIGFuZApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKaW5kZXggMDdlMWY3NDZlZGE5NTJjMDY0Mjc1
YjkyNjUyN2ZhOTg3NjE1YjdjMC4uMDQ4YzVhMGIyMTY0OGI2ZTdlM2Q2NDU5YmY4NWUwNWJjMTc5
NTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC00MCw3ICs0MCw3IEBA
IGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogY2xhc3MgV2F0Y2hw
b2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOwogCi1jbGFzcyBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTc4LDYgKzc4LDggQEAgY2xhc3MgV2F0Y2hw
b2ludHNPblN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CiAgICAgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQorCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzTGl2ZSgpOyB9CiAgICAgCiBwcml2
YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnQuaAppbmRleCA2MTk5YTcwOGRlNzZmZjdkODI4ZjJkNTU3ODY3NDBh
NDY0MWQ0MDQ3Li5jNDdmMDZkZjc5OGU0ZmVjZDAxZDY2N2IxNWM0NmYwZDRmYTYyMzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgKQEAgLTMxLDEyICszMSwx
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKK2NsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgQmFzZTsKICAgICBBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
LCBDb2RlQmxvY2sqKTsKIAogcHJpdmF0ZToKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0xpdmUoKTsKKyAgICB9
CisKICAgICB2b2lkIGhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7
CiAKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmlu
ZGV4IGQ0YThiOWE3ZDhjNzgyYmRkYjljMWU0YWM3MWZjYjI1NGYwYmQ2MGQuLjViOWRkYTZmYjBi
MTc0YWFjOTRhNzk3Y2ExMTkwY2M1NDk2YTI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAK
QEAgLTUyLDYgKzUyLDkgQEAgdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3Rh
bGwoVk0mIHZtKQogCiB2b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVy
bmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogeworICAgIGlmICghbV9jb2Rl
QmxvY2stPmlzTGl2ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9rZXkuaXNXYXRj
aGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKICAgICAgICAg
aW5zdGFsbCh2bSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IGMx
ZjU3NGY1MzM5MjZkNDMwN2IyZGUzMDZkNTM3ZjEwYmI3ZGU0NzIuLjk0MDEzZGM5NjgzZjM4YTlk
OTQzNzY4OWYyZGFjMGE4NGU2MzAwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzIsNyAr
MzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKK2NsYXNzIEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKIHB1Ymxp
YzoKICAgICBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mLCBDb2RlQmxvY2sqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCBhNGNiMDBmYTc1Yzg2NzE0
YWJhM2EwZjIwNzlkMjNmNTkzZWY3MzllLi4xYWM4NmFjZjMyNzQzZjNhNmY3ZTAxY2IxYzFjNGI4
Yjc3ZWU0Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1
ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtMzksOCArMzksOCBAQCB2b2lk
IEFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOjphZGQoCiB7CiAgICAgVk0mIHZtID0g
KmNvZGVCbG9jay0+dm0oKTsKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndh
dGNocG9pbnRzLmFkZChjb2RlQmxvY2spOwotICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9Ci0gICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6Y3JlYXRlKHZtKTsKKyAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQorICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OmNyZWF0ZSh2bSk7CiAgICAgbmV1dGVyaW5nV2F0Y2hwb2ludC0+c2V0
KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQobmV1dGVyaW5n
V2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0IHRoaXMgd2F0
Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAppbmRleCA5ZGRkMTM3NWY2NmY0MWI2MjE2NGUxMGZjM2Q4ZmZiMDBkOWRhYjllLi40
OTUzYWMyNTkyMjNmMzJhMWEwYWQ2ZTk2MTgyZmZiYzE2YWFhNTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcApAQCAtNTk1LDYgKzU5NSw3IEBAIHZvaWQgSGVhcDo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsRmluYWxpemVycygpCiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAg
fSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5h
bGl6ZXJzKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVj
dHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKICAgICBpZiAodm0o
KS0+bV93ZWFrU2V0U3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZp
bmFsaXplcnM8SlNXZWFrU2V0Pigqdm0oKS0+bV93ZWFrU2V0U3BhY2UpOwogICAgIGlmICh2bSgp
LT5tX3dlYWtNYXBTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCmluZGV4IDdmYzM3MzAzZDBmNWFkNWNmZWY2N2M2YzkyZTQ4MWJkYzVjMGFj
NjcuLjlkMWQ4MTkwOTQ1NTFhZTFhYTA3ZDc3YzI0NDk4MDY3ZDhiMGYwMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNzI3LDcgKzcy
Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9u
OjpQcmVzZW5jZSkKICAgICAgICAgICAgIG9mZnNldCA9IGNvbmRpdGlvbi5jb25kaXRpb24oKS5v
ZmZzZXQoKTsKLSAgICAgICAgd2F0Y2hwb2ludHMuYWRkKGNvbmRpdGlvbiwgbWV0YWRhdGEpLT5p
bnN0YWxsKHZtKTsKKyAgICAgICAgd2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jaywgY29uZGl0aW9u
LCBtZXRhZGF0YSktPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIEFTU0VSVCgob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpID09IHNsb3QuaXNVbnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCA2YzU2ZDU5ZjE3MWM1OThkNDYyNGFi
ZmY1OWIxNmI3NGEwZWYxNGM2Li44Zjg1NTZiODk3YmE3MGFjN2U5ZGIzOGUwZjhhYjljMDQ1YWQz
OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKIAotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgor
I2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgogI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
PHd0Zi9HaWdhY2FnZS5oPgpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgQXJyYXlCdWZmZXI6Om5v
dGlmeUluY29tbWluZ1JlZmVyZW5jZXNPZlRyYW5zZmVyKFZNJiB2bSkKICAgICAgICAgSlNDZWxs
KiBjZWxsID0gaW5jb21pbmdSZWZlcmVuY2VBdChpKTsKICAgICAgICAgaWYgKEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCBjZWxs
KSkKICAgICAgICAgICAgIHZpZXctPm5ldXRlcigpOwotICAgICAgICBlbHNlIGlmIChBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIHdhdGNocG9pbnQgPSBqc0R5bmFtaWNDYXN0PEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCo+KHZtLCBjZWxsKSkKKyAgICAgICAgZWxzZSBpZiAo
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50ID0ganNEeW5hbWlj
Q2FzdDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqPih2bSwgY2VsbCkpCiAgICAg
ICAgICAgICB3YXRjaHBvaW50LT5maXJlQWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZmZmNGE4N2Iw
NWMzOThjODgxMWU4ZGI2YzVkM2Q2NmExMDA4NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5o
IgotCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3Qg
Q2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewotICAg
ICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLAotICAgIENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50KQotfTsKLQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQoVk0mIHZtKQotICAgIDogQmFzZSh2bSwgdm0uYXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLmdldCgpKQotICAgICwgbV9zZXQoYWRvcHRSZWYo
Km5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQotewotfQotCi12b2lkIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGlj
X2Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Kj4oY2VsbCktPkFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6fkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCgpOwot
fQotCi1BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6Y3JlYXRlKFZNJiB2bSkKLXsKLSAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQqIHJlc3VsdCA9IG5ldwotICAgICAgICAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludD4odm0uaGVhcCkpCi0gICAgICAgIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCh2bSk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2
bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotU3RydWN0dXJlKiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0pCi17Ci0gICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBqc051bGwoKSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQ6OmZpcmVBbGwoKQotewotICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVm
ZmVyIHdhcyBuZXV0ZXJlZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkNmQwOTc0
YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJKU0Nhc3QuaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIERFQ0xBUkVfSU5GTzsKLSAg
ICAKLSAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBjcmVhdGUoVk0m
KTsKLQotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgCi0gICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJik7Ci0gICAgCi0gICAgV2F0Y2hwb2ludFNldCYgc2V0KCkg
eyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KLSAgICAKLSAgICB2b2lkIGZpcmVBbGwoKTsKLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsK
LSAgICAKLSAgICBSZWY8V2F0Y2hwb2ludFNldD4gbV9zZXQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
MjNkZTEyMzFhYzBiMTdhNGMwYmUyZmYzMzM4OTFiZTUzMzRmOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldDo6c19pbmZvID0geworICAgICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTZXQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgIENSRUFURV9NRVRI
T0RfVEFCTEUoQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KQorfTsKKworQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnRTZXQoVk0mIHZtKQorICAgIDogQmFzZSh2bSwgdm0uYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U3RydWN0dXJlLmdldCgpKQorICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRjaHBv
aW50U2V0KElzV2F0Y2hlZCkpKQoreworfQorCit2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFNldDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4oY2VsbCktPkFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldDo6fkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCgpOwor
fQorCitBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQqIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlKFZNJiB2bSkKK3sKKyAgICBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnRTZXQqIHJlc3VsdCA9IG5ldworICAgICAgICAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldD4odm0uaGVhcCkpCisgICAg
ICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCh2bSk7CisgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RydWN0dXJlKiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0p
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBqc051bGwoKSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmZpcmVBbGwoKQoreworICAgIG1fc2V0LT5maXJl
QWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZThlZGM2ZTNjNWNmNzIwYWI0Mzk1ZmEyYmExMDAxZWZlODQ1MjAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ2FzdC5oIgor
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOworCisgICAgREVDTEFSRV9JTkZPOworICAgIAorICAgIHN0YXRpYyBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTZXQqIGNyZWF0ZShWTSYpOworCisgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsK
KyAgICAKKyAgICBXYXRjaHBvaW50U2V0JiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQor
ICAgIAorICAgIHZvaWQgZmlyZUFsbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldChWTSYpOworICAgIAorICAgIFJlZjxXYXRjaHBv
aW50U2V0PiBtX3NldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IGJmNzMwMzExMjZh
N2NjNjI0ZGZiYTFkNTZmODlhYTc3NDIyNTlkMDcuLjEzMmMyNzk2MDI2NmY3ZjBmZWY1OWNhNmRl
MjU2MzQ1ZjAyZjUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVE
YXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAKLSAgICBjbGFzcyBBbGxv
Y2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKKyAg
ICBjbGFzcyBBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1Ymxp
YyBXYXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50KEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKQogICAgICAgICAgICAg
OiBtX3JhcmVEYXRhKHJhcmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDdhZmU3MDMyYjE2OGM2YmNiNTQzMzNjYjJjZWFi
OTAxYmExNGY2ZmEuLmFkZWY2OWIyMmY0ZDU2YTU3NTNhNWE5NjQ5YTFjNmU0NzI4ZjEzYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTExMDMsNTcgKzExMDMsNTcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKIAogICAgIHsK
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAg
fQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJy
YXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlO
YW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90
b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3Rh
bGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUs
IG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQ
cm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAg
ICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ1By
b3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAg
ICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21h
cFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAgICAgICBtX21h
cFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24s
IG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBv
aW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlv
biA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKKyAg
ICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFByb3Rv
dHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTE2NCw3ICsxMTY0
LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBq
c05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90
eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBv
aW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3Rh
bGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRo
aXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE4OTIsMTAgKzE4OTIsMTAg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQo
RXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNo
cG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LnRv
dWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAotICAgIG1fYXJy
YXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihj
b25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2Fy
cmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAg
ICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAK
LSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAg
bV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAg
IG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmgKaW5kZXggNGUwYzIwOTA1
ZTYzODhkMzg0MTVjN2VhZTQyMzQxMzAwOTMwNGEwNC4uNTQxZjM0NWQzNjFiZDEzZWM0ZTY5ZTY4
Nzc0MjE1YjBmNmI0YWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludC5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBXYXRjaHBvaW50PgotY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZSB7CitjbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludCBmaW5h
bCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsK
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTsKLSAgICBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uLCBXYXRjaHBvaW50JiB3
YXRjaHBvaW50KQorICAgIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50KEpT
Q2VsbCogb3duZXIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24sIFdh
dGNocG9pbnQmIHdhdGNocG9pbnQpCiAgICAgICAgIDogQmFzZShjb25kaXRpb24pCisgICAgICAg
ICwgbV9vd25lcihvd25lcikKICAgICAgICAgLCBtX3dhdGNocG9pbnQod2F0Y2hwb2ludCkKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHdhdGNocG9pbnQuc3RhdGVPbkpTVGhyZWFkKCkg
PT0gSXNXYXRjaGVkKTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX293bmVyLT5pc0xpdmUoKTsKKyAg
ICB9CisKICAgICB2b2lkIGhhbmRsZUZpcmUoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIG1fd2F0Y2hwb2ludC5maXJlQWxsKHZtLCBTdHJpbmdGaXJl
RGV0YWlsKCJPYmplY3QgUHJvcGVydHkgaXMgY2hhbmdlZC4iKSk7CiAgICAgfQogCisgICAgSlND
ZWxsKiBtX293bmVyOwogICAgIFdhdGNocG9pbnQmIG1fd2F0Y2hwb2ludDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApp
bmRleCBkNTYwNmNkNDEwNWFjYTYwZGUwZjRhYWQ4NTVkMjQ4MTMxNDlmMGM3Li41YzFjNWY3Zjli
ZjIyNmNjYWFkNDBkOTRkZDZjY2Q5Y2RlOTdjZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIAogLy8gLS0tLS0tLS0tLS0gT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZygpIGhlbHBlciB3YXRjaHBvaW50IGNsYXNzZXMgLS0tLS0tLS0tLS0KIAotY2xhc3MgT2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQgOiBwdWJs
aWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CitjbGFzcyBP
YmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludCBmaW5h
bCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UgQmFzZTsKICAgICBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIFN0cnVjdHVy
ZVJhcmVEYXRhKik7CkBAIC05MCwxMiArOTAsMTQgQEAgY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmYK
ICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogbV9zdHJ1Y3R1cmVSYXJlRGF0YTsKIH07CiAKLWNsYXNz
IE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNo
cG9pbnQgeworY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQg
ZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAgT2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
LCBTdHJ1Y3R1cmVSYXJlRGF0YSopOwogCiAgICAgdm9pZCBpbnN0YWxsKFZNJik7CiAKKyAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7
IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpIG92ZXJyaWRlOwogICAgIApAQCAtMTY5LDYgKzE3MSwyMiBAQCBpbmxpbmUgdm9pZCBT
dHJ1Y3R1cmVSYXJlRGF0YTo6Y2xlYXJPYmplY3RUb1N0cmluZ1ZhbHVlKCkKICAgICBtX29iamVj
dFRvU3RyaW5nVmFsdWUuY2xlYXIoKTsKIH0KIAordm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQoreworICAgIGlmIChtX29iamVjdFRvU3RyaW5n
QWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCkgeworICAgICAgICBpZiAoIW1fb2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50LT5rZXkoKS5pc1N0aWxsTGl2
ZSh2bSkpIHsKKyAgICAgICAgICAgIGNsZWFyT2JqZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byogd2F0Y2hwb2lu
dCA6IG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRTZXQpIHsKKyAgICAgICAgaWYg
KCF3YXRjaHBvaW50LT5rZXkoKS5pc1N0aWxsTGl2ZSh2bSkpIHsKKyAgICAgICAgICAgIGNsZWFy
T2JqZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCiAvLyAtLS0tLS0tLS0tLS0tIE1ldGhvZHMgZm9yIE9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2VzIC0tLS0tLS0tLS0tLS0tCiAKIE9i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpPYmplY3RUb1N0cmluZ0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYg
a2V5LCBTdHJ1Y3R1cmVSYXJlRGF0YSogc3RydWN0dXJlUmFyZURhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCBjNGJlNzE0
MGNlODJjMjk0MWQyMjQxZjM4ZDhkNWFmMzhmOGJjNjE4Li5lMDNiMjNmMjJiMjk0YTEyNDhjMWVl
ZDllMDE0MDhhNTU0ODQyYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTkwLDYgKzkwLDggQEAgY2xhc3MgU3RydWN0dXJl
UmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICBmcmllbmQgY2xhc3MgT2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNDM3NTNkYTA2MGFjNDUzY2Y4YWRlNjA4ZTFlZDM0YmYwZTliMTc0NS4u
M2VkNmRlOWNlMGE4NGRhNjcxOWNhOTZmNGFlZjEzMjg3ZjRjMzg1MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Lmgi
CiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMzgxLDcgKzM4MSw3
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBzdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwotICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzKSk7CisgICAgYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0
dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGZhZDNiOGM3N2NmOTBmZTM2NjAwZTQ3MmQ5ZGExMjk4MWExYWI1ZWIu
LjAxZDJjNmViNmZiZTgyNjg4ZjhhMzcyOTMwZjU4OTMwZTM0OWI2YTYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTktMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBPd25lciBvZiB3YXRjaHBvaW50cyBzaG91bGQgdmFsaWRhdGUgYXQgR0MgZmluYWxp
emluZyBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAoQS5wcm90b3R5cGUueSk6CisgICAgICAgIChBKToKKwog
MjAxOS0wMy0yNiAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBTa2lwIFdlYkFzc2VtYmx5IHRlc3Qgb24gMzItYml0IHN5c3RlbXMKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2ludHMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUwNmM3NTQ2OTI2NDAwZWUzZjYzMGY2ZDQwZWJiNmIyNjhmNTkwMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzCkBA
IC0wLDAgKzEsMjUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1mb3JjZUVhZ2VyQ29tcGlsYXRp
b249dHJ1ZSIpCisKKy8vIFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitsZXQgYTsKKwor
ZnVuY3Rpb24gZm9vKHMpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHMpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgYSAvIDE7CisgICAgICAgIGEgPSBudWxs
OworICAgIH0KK30KKworZm9vKCd6eicpOworZm9vKCdjbGFzcyBBIHsgeSgpIHt9IH07IGE9bmV3
IEE7IHp6Jyk7Citmb28oJ2NsYXNzIEMgeyB5KCkge30gfTsgZ2MoKTsnKTsKKworY2xhc3MgQSB7
CisgICAgeSgpIHt9Cit9CisKK0EucHJvdG90eXBlLnogPSAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366060</attachid>
            <date>2019-03-27 00:28:29 -0700</date>
            <delta_ts>2019-03-27 00:30:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195827-20190327002828.patch</filename>
            <type>text/plain</type>
            <size>51620</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmY2MDQyZWIyZmFjNzc4NzE4ODg5ZWE5NTY2Yjk2ZWQ3NWEyN2VlLi44YjMyOWFmMDUxYWI5M2I0
NTJkMGY0YWZjNDA1MWEyNDcxZGJjOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxOS0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE93bmVyIG9mIHdhdGNocG9pbnRzIHNob3VsZCB2YWxpZGF0ZSBh
dCBHQyBmaW5hbGl6aW5nIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIEpTQydzIHdhdGNocG9pbnQgbGl2ZW5lc3Mg
aXNzdWUgYnkgdGhlIGZvbGxvd2luZyB0d28gcG9saWNpZXMuCisKKyAgICAgICAgMS4gV2F0Y2hw
b2ludCBzaG91bGQgaGF2ZSBvd25lciBjZWxsLCBhbmQgImZpcmUiIG9wZXJhdGlvbiBzaG91bGQg
YmUgZ2F1cmRlZCB3aXRoIG93bmVyIGNlbGwncyBpc0xpdmUgY2hlY2suCisKKyAgICAgICAgV2F0
Y2hwb2ludHMgc2hvdWxkIGhvbGQgaXRzIG93bmVyIGNlbGwsIGFuZCBmaXJlIHByb2NlZHVyZSBz
aG91bGQgYmUgZ3VhcmRlZCBieSBgb3duZXItPmlzTGl2ZSgpYC4KKyAgICAgICAgV2hlbiB0aGUg
b3duZXIgY2VsbCBpcyBkZXN0cm95ZWQsIHRoZXNlIHdhdGNocG9pbnRzIGFyZSBkZXN0cm95ZWQg
dG9vLiBCdXQgdGhpcyBkZXN0cnVjdGlvbiBjYW4KKyAgICAgICAgYmUgZGVsYXllZCBkdWUgdG8g
aW5jcmVtZW50YWwgc3dlZXBlci4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2FuIGhhcHBl
bi4KKworICAgICAgICBXaGVuIHdlIGhhdmUgYSB3YXRjaHBvaW50IGxpa2UgdGhlIGZvbGxvd2lu
Zy4KKworICAgICAgICAgICAgY2xhc3MgWFhYV2F0Y2hwb2ludCB7CisgICAgICAgICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CisgICAgICAgICAgICAgICAgSlNDZWxsKiBt
X293bmVyOworICAgICAgICAgICAgfTsKKworICAgICAgICBCb3RoIG1fa2V5J3MgY2VsbCBhbmQg
bV9vd25lciBpcyBub3cgdW5yZWFjaGFibGUgZnJvbSB0aGUgcm9vdC4gU28gZXZlbnR1YWxseSwg
bV9vd25lciBjZWxsJ3MgZGVzdHJ1Y3RvcgorICAgICAgICBpcyBjYWxsZWQgYW5kIHRoaXMgd2F0
Y2hwb2ludCB3aWxsIGJlIGRlc3Ryb3llZC4gQnV0IGJlZm9yZSB0aGF0LCBtX2tleSdzIGNlbGwg
Y2FuIGJlIGRlc3Ryb3llZC4gQW5kIHRoaXMKKyAgICAgICAgd2F0Y2hwb2ludCdzIGZpcmUgcHJv
Y2VkdXJlIGNhbiBiZSBjYWxsZWQgc2luY2UgbV9vd25lcidzIGRlc3RydWN0b3IgaXMgbm90IGNh
bGxlZCB5ZXQuIEluIHRoaXMgc2l0dWF0aW9uLAorICAgICAgICB3ZSBlbmNvdW50ZXIgdGhlIGRl
c3Ryb3llZCBjZWxsIGhlbGQgaW4gbV9rZXkuIFRoaXMgcHJvYmxlbSBjYW4gYmUgYXZvaWRlZCBp
ZiB3ZSBndWFyZCBmaXJlIHByb2NlZHVyZSB3aXRoCisgICAgICAgIGBtX293bmVyLT5pc0xpdmUo
KWAuIFVudGlsIHRoZSBvd25lciBjZWxsIGlzIGRlc3Ryb3llZCwgdGhpcyBndWFyZCBhdm9pZHMg
ImZpcmUiIHByb2NlZHVyZSBleGVjdXRpb24uIEFuZAorICAgICAgICBvbmNlIHRoZSBkZXN0cnVj
dG9yIG9mIG1fb3duZXIgaXMgY2FsbGVkLCB0aGlzIHdhdGNocG9pbnQgd2lsbCBiZSBkZXN0cm95
ZWQgdG9vLgorCisgICAgICAgIDIuIFdhdGNocG9pbnQgbGl2ZW5lc3Mgc2hvdWxkIGJlIG1haW50
YWluZWQgYnkgb3duZXIgY2VsbCdzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyCisKKyAgICAgICAg
V2F0Y2hwb2ludHMgb2Z0ZW4gaG9sZCB3ZWFrIHJlZmVyZW5jZXMgdG8gdGhlIG90aGVyIGNlbGwg
KGxpa2UsIG1fa2V5IGluIHRoZSBhYm92ZSBleGFtcGxlKS4gSWYgd2UgZG8gbm90CisgICAgICAg
IGRlbGV0ZSB3YXRjaHBvaW50cyB3aXRoIGRlYWQgY2VsbHMgd2hlbiB0aGVzZSB3ZWFrIGNlbGxz
IGJlY29tZSBkZWFkLCB0aGVzZSB3YXRjaHBvaW50cyBjb250aW51ZSBob2xkaW5nIGRlYWQgY2Vs
bHMsCisgICAgICAgIGFuZCB3YXRjaHBvaW50J3MgZmlyZSBvcGVyYXRpb24gY2FuIHVzZSB0aGVz
ZSBkZWFkIGNlbGxzIGFjY2lkZW50YWxseS4gaXNMaXZlIC8gaXNTdGlsbExpdmUgY2hlY2sgZm9y
IHRoZXNlIHdlYWsgY2VsbHMKKyAgICAgICAgaW4gZmlyZSBvcGVyYXRpb24gaXMgbm90IHVzZWZ1
bC4gQmVjYXVzZSB0aGVzZSBkZWFkIGNlbGxzIGNhbiBiZSByZXVzZWQgdG8gdGhlIG90aGVyIGxp
dmUgY2VsbHMgZXZlbnR1YWxseSwgYW5kIHRoaXMKKyAgICAgICAgaXNMaXZlIC8gaXNTdGlsbExp
dmUgY2hlY2tzIGZhaWwgdG8gc2VlIHRoZXNlIGNlbGxzIGFyZSBsaXZlIGlmIHRoZXkgYXJlIHJl
dXNlZC4gQXBwcm9wcmlhdGUgd2F5IGlzIGRlbGV0aW5nIHdhdGNocG9pbnRzCisgICAgICAgIHdp
dGggZGVhZCBjZWxscyB3aGVuIGZpbmFsaXppbmcgR0MuIEluIHRoaXMgcGF0Y2gsIHdlIGRvIHRo
aXMgaW4gdW5jb25kaXRpb25hbCBmaW5hbGl6ZXJzIGluIG93bmVyIGNlbGxzIG9mIHdhdGNocG9p
bnRzLgorICAgICAgICBXZSBhbHJlYWR5IGRpZCB0aGlzIGluIENvZGVCbG9jayBldGMuIFdlIGFk
ZCB0aGUgc2FtZSB0aGluZyB0byBTdHJ1Y3R1cmVSYXJlRGF0YSB3aGljaCBvd25zIHdhdGNocG9p
bnRzIGZvciB0b1N0cmluZyBvcGVyYXRpb25zLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
Lmg6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2U6OlN0cnVjdHVyZVdhdGNocG9pbnQ6OlN0cnVjdHVyZVdhdGNocG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlOjpQcm9wZXJ0eVdhdGNocG9pbnQ6OlByb3BlcnR5V2F0Y2hwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6Q29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OkxMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToK
KyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjprZXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlND
OjpXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmlzVmFsaWQgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6U3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ojppc1ZhbGlkIGNvbnN0KToKKyAgICAg
ICAgKiBkZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Lmg6Cisg
ICAgICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmtleSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90
aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAu
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5oLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxOS0wMy0yNiAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEw6IEVtaXQgY29kZSB0
byB2YWxpZGF0ZSBBSSdzIHN0YXRlIHdoZW4gcnVubmluZyB0aGUgY29tcGlsZWQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYjI1YjcyMzY0OGRjODVjODFmM2Q3ZWViNjg3
NTUyMTZlNDE5OTY1Li43NTc0NTg3NzI5MTYzMmExM2E2NWRlMjY3MDZmOWZlYmU3YTI4MmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ0LDcgKzc0NCw3IEBACiAJCTBGRkI5
MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUg
LyogTm9kZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5
cGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLzsgfTsKIAkJ
MEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFC
IC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8q
IERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJ
MEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHUGhhc2UuaCAqLzsgfTsKQEAgLTMxMTMsOCArMzExMyw4IEBACiAJCTBGRkI4MEJCMjBBNzk0
NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRDb2RlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3BlcnR5VHlwZUtleS5oOyBwYXRoID0gZGZn
L0RGR1Byb3BlcnR5VHlwZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZD
OTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkM5OUQyMTg0
RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5RDMx
ODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzMiw4ICs2
NjMyLDggQEAKIAkJCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICov
LAogCQkJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJ
CTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwICovLAotCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaCAqLywKKwkJCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLywKKwkJCQkwRkZDOTlEMzE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi8s
CiAJCQkJMEYzMEZCNjAxREMyREU5NjAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNw
cCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3Lmgg
Ki8sCkBAIC04NTEyLDcgKzg1MTIsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAv
KiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MEZCNjExREMyREU5OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBmMDVhM2ZlOWUwMzNkMmUxYTQ5NGM0NjE5NGFjMTI0OTlkMzMzMTFlLi41OWEzNWIyZDdkNDY2
MzJjMzcwNWQzNjI5NGJiY2EzOGYwMGI1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC02OTIsNyArNjkyLDcgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKLXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAor
cnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCiBydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUv
QXJyYXlDb252ZW50aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5oCmluZGV4IDUwZDg0YmE4ODhkNTFiOTI5MjAzN2YxMTQ0ZTQ4NmJk
YmRlMmUyYTMuLjVkNGUwMmFhZWZlOTY2MDAzZjY1MjE4NDAwODg3ZTQyZjE0MzVlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaApAQCAt
NTAsMTMgKzUwLDEzIEBAIGNsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UgewogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpID0gMDsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBTdHJ1Y3R1cmVXYXRjaHBvaW50IDog
cHVibGljIFdhdGNocG9pbnQgeworICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmVXYXRj
aHBvaW50KCkgeyB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChW
TSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKICAgICB9OwotICAgIGNsYXNzIFByb3Bl
cnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKKyAgICBjbGFzcyBQcm9wZXJ0eVdh
dGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAg
ICBQcm9wZXJ0eVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgKaW5kZXggNjEwMjYxZjZhNTU4YzUyZWZkMDYyZmYyMTNkMmQ1MmNkYzhl
ZTA1Yy4uYWYyNGVhM2E2ZmIzMDJiNzkyNjBhYWZjZjdlZmU2ZmFmNjljZWJhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgQ29kZUJsb2NrOwogCi1jbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAgQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICA6IG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggNmJlZGRmOWNjZDYyZTY3MTZhYjQwODZl
ZjAxODEzNWYyM2NlMmY1MC4uMWJlYmM0OGMwNDc0Zjk1NTBlN2RmMjM2M2Y3ZDFjYjhiNmY2N2Rk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKQEAgLTMyLDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6TExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKLSAgICA6IG1f
a2V5KGtleSkKK0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KENvZGVCbG9jayog
b3duZXIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0
YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKKyAgICA6IG1fb3duZXIob3duZXIpCisgICAgLCBtX2tl
eShrZXkpCiAgICAgLCBtX2dldEJ5SWRNZXRhZGF0YShnZXRCeUlkTWV0YWRhdGEpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoa2V5LndhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludCgpKTsKQEAgLTQ5LDYgKzUwLDkgQEAgdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogCiB2b2lkIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2
bSwgY29uc3QgRmlyZURldGFpbCYpCiB7CisgICAgaWYgKCFtX293bmVyLT5pc0xpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0
aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKaW5kZXggMGExNzMwYWY3YWI5MTYwNGRlYzUxODAwZTAyNWM3NGJmZjg3NmU2
MC4uOWUxMTgwOGYzZjQ4Njc0ZjBlMWFmODlhMTEzNzMyODZhYTIyMjNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzEs
OSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3Mg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZpbmFsIDogcHVi
bGljIFdhdGNocG9pbnQgewogcHVibGljOgotICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIE9wR2V0
QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBP
cEdldEJ5SWQ6Ok1ldGFkYXRhJik7CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgQ29kZUJsb2NrKiBt
X293bmVyOwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgIE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmIG1fZ2V0QnlJZE1ldGFkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcAppbmRleCA2NDhiMWU4ZjU4ZDY4YWRjNWY0ZWU2ZGRlZWU3NjkxMWY5ZTc3
ODk4Li45NDE2ZDMwOGFkYTJmMGUwM2UyOTE2ZGEzZmQ2Mzk1NWJhNzJhNjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zNiw2ICszNiw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiB2b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogeworICAgIGlmICghbV9ob2xkZXIuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fa2V5IHx8ICFtX2tleS5pc1dhdGNo
YWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewogICAgICAgICAv
LyBUaGlzIHdpbGwgaW1wbGljaXRseSBjYXVzZSBteSBvd24gZGVtaXNlOiBzdHViIHJlc2V0IHJl
bW92ZXMgYWxsIHdhdGNocG9pbnRzLgogICAgICAgICAvLyBUaGF0IHdvcmtzLCBiZWNhdXNlIGRl
bGV0aW5nIGEgd2F0Y2hwb2ludCByZW1vdmVzIGl0IGZyb20gdGhlIHNldCdzIGxpc3QsIGFuZApA
QCAtNTQsNiArNTcsMTEgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikKICAgICBtX2tleS5vYmplY3Qo
KS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CiB9CiAKK2lu
bGluZSBib29sIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0xpdmUoKTsKK30KKwogU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjphZGRX
YXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkpCiB7CiAgICAgcmV0
dXJuIG1fd2F0Y2hwb2ludHMuYWRkKGtleSwgKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmgKaW5kZXggMDdlMWY3NDZlZGE5NTJjMDY0Mjc1YjkyNjUyN2ZhOTg3NjE1YjdjMC4u
NzBiNjk3ZjY5ZmJkY2Q0OTBiMjcwZDU5ODNiOTM1YjRmM2M4MDM4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNs
YXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogY2xhc3MgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvOwogCi1jbGFzcyBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50IDogcHVibGljIFdh
dGNocG9pbnQgeworY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6
IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTc4LDYgKzc4LDggQEAgY2xhc3MgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvIHsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrOyB9CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHViSW5mbzsgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAKaW5kZXggNWI0YTIzNzE4ZDQ2YjY5Y2RkZjEyZGJl
ZmQ2OTYwZmRmOTAzZTFjNS4uNmEwNmViMDFiYTc4NzFmOTNjZTVjZWFmNDNjYjJkZDI5ZGU4Nzc2
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcApAQCAt
NTEsNiArNTEsMTEgQEAgdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQ6OmhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJgogICAgIG1fY29kZUJsb2NrLT5q
ZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LCBDb3Vu
dFJlb3B0aW1pemF0aW9uLCAmbGF6eURldGFpbCk7CiB9CiAKK2Jvb2wgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ojppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb2RlQmxvY2stPmlzTGl2ZSgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludC5oCmluZGV4IDYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4Njc0MGE0NjQxZDQw
NDcuLmQxN2UxOThmNzMwM2VhZTcwYWEwMGE4YmUyZjEwM2IwMzk1NjQ1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UgeworY2xhc3MgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UgewogcHVibGljOgogICAgIHR5cGVkZWYgQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSBCYXNlOwogICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIENvZGVC
bG9jayopOwogCiBwcml2YXRlOgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwor
CiAgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwog
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRl
eCBkNGE4YjlhN2Q4Yzc4MmJkZGI5YzFlNGFjNzFmY2IyNTRmMGJkNjBkLi41YjlkZGE2ZmIwYjE3
NGFhYzk0YTc5N2NhMTE5MGNjNTQ5NmEyNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBA
IC01Miw2ICs1Miw5IEBAIHZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxs
KFZNJiB2bSkKIAogdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKKyAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0xpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hh
YmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGlu
c3RhbGwodm0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCBjMWY1
NzRmNTMzOTI2ZDQzMDdiMmRlMzA2ZDUzN2YxMGJiN2RlNDcyLi45NDAxM2RjOTY4M2YzOGE5ZDk0
Mzc2ODlmMmRhYzBhODRlNjMwMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6
CiAgICAgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uJiwgQ29kZUJsb2NrKik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKaW5kZXggYTRjYjAwZmE3NWM4NjcxNGFi
YTNhMGYyMDc5ZDIzZjU5M2VmNzM5ZS4uMWFjODZhY2YzMjc0M2YzYTZmN2UwMWNiMWMxYzRiOGI3
N2VlNGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
V2F0Y2hwb2ludHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZFdhdGNocG9pbnRzLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRl
ICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTM5LDggKzM5LDggQEAgdm9pZCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogewogICAgIFZNJiB2bSA9ICpj
b2RlQmxvY2stPnZtKCk7CiAgICAgV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRj
aHBvaW50cy5hZGQoY29kZUJsb2NrKTsKLSAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQotICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OmNyZWF0ZSh2bSk7CisgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KKyAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0OjpjcmVhdGUodm0pOwogICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgp
LmFkZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dh
dGNocG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNo
cG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggOWRkZDEzNzVmNjZmNDFiNjIxNjRlMTBmYzNkOGZmYjAwZDlkYWI5ZS4uNDk1
M2FjMjU5MjIzZjMyYTFhMGFkNmU5NjE4MmZmYmMxNmFhYTUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTU5NSw2ICs1OTUsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0p
OwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZT4odm0oKS0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVycyk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1
cmVSYXJlRGF0YT4odm0oKS0+c3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CiAgICAgaWYgKHZtKCkt
Pm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAgICBpZiAodm0oKS0+
bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA3ZmMzNzMwM2QwZjVhZDVjZmVmNjdjNmM5MmU0ODFiZGM1YzBhYzY3
Li45ZDFkODE5MDk0NTUxYWUxYWEwN2Q3N2MyNDQ5ODA2N2Q4YjBmMDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTcyNyw3ICs3Mjcs
NyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgY29uc3QgSW5zdHJ1Y3RpbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBpZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6
UHJlc2VuY2UpCiAgICAgICAgICAgICBvZmZzZXQgPSBjb25kaXRpb24uY29uZGl0aW9uKCkub2Zm
c2V0KCk7Ci0gICAgICAgIHdhdGNocG9pbnRzLmFkZChjb25kaXRpb24sIG1ldGFkYXRhKS0+aW5z
dGFsbCh2bSk7CisgICAgICAgIHdhdGNocG9pbnRzLmFkZChjb2RlQmxvY2ssIGNvbmRpdGlvbiwg
bWV0YWRhdGEpLT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICBBU1NFUlQoKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KSA9PSBzbG90LmlzVW5zZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNmM1NmQ1OWYxNzFjNTk4ZDQ2MjRhYmZm
NTliMTZiNzRhMGVmMTRjNi4uOGY4NTU2Yjg5N2JhNzBhYzdlOWRiMzhlMGY4YWI5YzA0NWFkMzkw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyLmgiCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvR2lnYWNhZ2UuaD4KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEFycmF5QnVmZmVyOjpub3Rp
ZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0pCiAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CiAgICAgICAgIGlmIChKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgY2VsbCkp
CiAgICAgICAgICAgICB2aWV3LT5uZXV0ZXIoKTsKLSAgICAgICAgZWxzZSBpZiAoQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0ganNEeW5hbWljQ2FzdDxBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqPih2bSwgY2VsbCkpCisgICAgICAgIGVsc2UgaWYgKEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nh
c3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4odm0sIGNlbGwpKQogICAgICAg
ICAgICAgd2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGZmZjRhODdiMDVj
Mzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIK
LQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENs
YXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OnNfaW5mbyA9IHsKLSAgICAi
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwKLSAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50KFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKCpu
ZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19j
YXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoKTsKLX0K
LQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KiByZXN1bHQgPSBuZXcKLSAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ+KHZtLmhlYXApKQotICAgICAgICBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQodm0pOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQotewotICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50OjpmaXJlQWxsKCkKLXsKLSAgICBtX3NldC0+ZmlyZUFsbCgqdm0oKSwgIkFycmF5IGJ1ZmZl
ciB3YXMgbmV1dGVyZWQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZDZkMDk3NGE1
OGViYjBiM2EzZTg4MTU1NDRhNWE1OGZjNDIzMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAg
Ci0gICAgc3RhdGljIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogY3JlYXRlKFZNJik7
Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsg
cmV0dXJuIG1fc2V0LmdldCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7Ci0g
ICAgCi0gICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIz
ZGUxMjMxYWMwYjE3YTRjMGJlMmZmMzMzODkxYmU1MzM0ZjkwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OnNfaW5mbyA9IHsKKyAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICBDUkVBVEVfTUVUSE9E
X1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCkKK307CisKK0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KFZNJiB2bSkKKyAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2lu
dFNldChJc1dhdGNoZWQpKSkKK3sKK30KKwordm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKTsKK30K
KworQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCit7CisgICAgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0KiByZXN1bHQgPSBuZXcKKyAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+KHZtLmhlYXApKQorICAgICAg
ICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0pOworICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cnVjdHVyZSogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZv
KENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKK3sKKyAgICBtX3NldC0+ZmlyZUFs
bCgqdm0oKSwgIkFycmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4
ZWRjNmUzYzVjZjcyMGFiNDM5NWZhMmJhMTAwMWVmZTg0NTIwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFNldC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Nhc3QuaCIKKyNp
bmNsdWRlICJXYXRjaHBvaW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUoVk0mKTsKKworICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJik7Cisg
ICAgCisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KKyAg
ICAKKyAgICB2b2lkIGZpcmVBbGwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoVk0mKTsKKyAgICAKKyAgICBSZWY8V2F0Y2hwb2lu
dFNldD4gbV9zZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBiZjczMDMxMTI2YTdj
YzYyNGRmYmExZDU2Zjg5YWE3NzQyMjU5ZDA3Li4xMzJjMjc5NjAyNjZmN2YwZmVmNTljYTZkZTI1
NjM0NWYwMmY1MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCkBAIC0xMTYsNyArMTE2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0
YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogCi0gICAgY2xhc3MgQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CisgICAg
Y2xhc3MgQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMg
V2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSkKICAgICAgICAgICAgIDog
bV9yYXJlRGF0YShyYXJlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3YWZlNzAzMmIxNjhjNmJjYjU0MzMzY2IyY2VhYjkw
MWJhMTRmNmZhLi5hZGVmNjliMjJmNGQ1NmE1NzUzYTVhOTY0OWExYzZlNDcyOGYxM2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMTAzLDU3ICsxMTAzLDU3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAKICAgICB7CiAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVX
YXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAg
ICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0K
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOworICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
bV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAg
ICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNv
bmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBl
TmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBl
TmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldEl0ZXJhdG9yUHJv
dG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAg
ICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90
b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQ
cm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBt
X21hcFNldFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5
cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKQEAgLTExNjQsNyArMTE2NCw3
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlw
ZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dCk7CisgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CkBAIC0xODkyLDEwICsxODkyLDEwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEV4
ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC50b3Vj
aCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQuIik7CiAKLSAgICBtX2FycmF5
UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29u
c3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJh
eVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAg
IG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0g
ICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+PihzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1f
YXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBt
X2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCmluZGV4IDRlMGMyMDkwNWU2
Mzg4ZDM4NDE1YzdlYWU0MjM0MTMwMDkzMDRhMDQuLjU0MWYzNDVkMzYxYmQxM2VjNGU2OWU2ODc3
NDIxNWIwZjZiNGFhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQuaApAQCAtMzAsMjIgKzMwLDI5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgV2F0Y2hwb2ludD4KLWNsYXNzIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UgeworY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludEJhc2U7Ci0gICAgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQo
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiwgV2F0Y2hwb2ludCYgd2F0
Y2hwb2ludCkKKyAgICBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludChKU0Nl
bGwqIG93bmVyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uLCBXYXRj
aHBvaW50JiB3YXRjaHBvaW50KQogICAgICAgICA6IEJhc2UoY29uZGl0aW9uKQorICAgICAgICAs
IG1fb3duZXIob3duZXIpCiAgICAgICAgICwgbV93YXRjaHBvaW50KHdhdGNocG9pbnQpCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXRjaHBvaW50LnN0YXRlT25KU1RocmVhZCgpID09
IElzV2F0Y2hlZCk7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9vd25lci0+aXNMaXZlKCk7CisgICAg
fQorCiAgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBtX3dhdGNocG9pbnQuZmlyZUFsbCh2bSwgU3RyaW5nRmlyZURl
dGFpbCgiT2JqZWN0IFByb3BlcnR5IGlzIGNoYW5nZWQuIikpOwogICAgIH0KIAorICAgIEpTQ2Vs
bCogbV9vd25lcjsKICAgICBXYXRjaHBvaW50JiBtX3dhdGNocG9pbnQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5k
ZXggZDU2MDZjZDQxMDVhY2E2MGRlMGY0YWFkODU1ZDI0ODEzMTQ5ZjBjNy4uNWMxYzVmN2Y5YmYy
MjZjY2FhZDQwZDk0ZGQ2Y2NkOWNkZTk3Y2ZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2
b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAKIC8vIC0tLS0tLS0tLS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2VzIC0tLS0tLS0tLS0tCiAKLWNsYXNzIE9iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGlj
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgeworY2xhc3MgT2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlIEJhc2U7CiAgICAgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBTdHJ1Y3R1cmVS
YXJlRGF0YSopOwpAQCAtOTAsMTIgKzkwLDE0IEBAIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mCiAg
ICAgU3RydWN0dXJlUmFyZURhdGEqIG1fc3RydWN0dXJlUmFyZURhdGE7CiB9OwogCi1jbGFzcyBP
YmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBv
aW50IHsKK2NsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZp
bmFsIDogcHVibGljIFdhdGNocG9pbnQgewogcHVibGljOgogICAgIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwg
U3RydWN0dXJlUmFyZURhdGEqKTsKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCisgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRh
aWwmKSBvdmVycmlkZTsKICAgICAKQEAgLTE2OSw2ICsxNzEsMjIgQEAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlUmFyZURhdGE6OmNsZWFyT2JqZWN0VG9TdHJpbmdWYWx1ZSgpCiAgICAgbV9vYmplY3RU
b1N0cmluZ1ZhbHVlLmNsZWFyKCk7CiB9CiAKK3ZvaWQgU3RydWN0dXJlUmFyZURhdGE6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAobV9vYmplY3RUb1N0cmluZ0Fk
YXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKCFtX29iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+a2V5KCkuaXNTdGlsbExpdmUo
dm0pKSB7CisgICAgICAgICAgICBjbGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8qIHdhdGNocG9pbnQg
OiBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0KSB7CisgICAgICAgIGlmICgh
d2F0Y2hwb2ludC0+a2V5KCkuaXNTdGlsbExpdmUodm0pKSB7CisgICAgICAgICAgICBjbGVhck9i
amVjdFRvU3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKwogLy8gLS0tLS0tLS0tLS0tLSBNZXRob2RzIGZvciBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0tLS0tLQogCiBPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6T2JqZWN0VG9TdHJpbmdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtl
eSwgU3RydWN0dXJlUmFyZURhdGEqIHN0cnVjdHVyZVJhcmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKaW5kZXggYzRiZTcxNDBj
ZTgyYzI5NDFkMjI0MWYzOGQ4ZDVhZjM4ZjhiYzYxOC4uZTAzYjIzZjIyYjI5NGExMjQ4YzFlZWQ5
ZTAxNDA4YTU1NDg0MmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC05MCw2ICs5MCw4IEBAIGNsYXNzIFN0cnVjdHVyZVJh
cmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgZnJpZW5kIGNsYXNzIE9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDQzNzUzZGEwNjBhYzQ1M2NmOGFkZTYwOGUxZWQzNGJmMGU5YjE3NDUuLjNl
ZDZkZTljZTBhODRkYTY3MTljYTk2ZjRhZWYxMzI4N2Y0YzM4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJWTS5oIgogCiAj
aW5jbHVkZSAiQXJnTGlzdC5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKQEAgLTM4MSw3ICszODEsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc3RydWN0dXJl
Q2hhaW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3RydWN0dXJlLnNldCgq
dGhpcywgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcykpOworICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVy
ZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5z
ZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBmYWQzYjhjNzdjZjkwZmUzNjYwMGU0NzJkOWRhMTI5ODFhMWFiNWViLi4w
MWQyYzZlYjZmYmU4MjY4OGY4YTM3MjkzMGY1ODkzMGUzNDliNmE2IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE5LTAzLTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gT3duZXIgb2Ygd2F0Y2hwb2ludHMgc2hvdWxkIHZhbGlkYXRlIGF0IEdDIGZpbmFsaXpp
bmcgcGhhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2ludHMuanM6IEFkZGVkLgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKEEucHJvdG90eXBlLnkpOgorICAgICAgICAoQSk6CisKIDIw
MTktMDMtMjYgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgU2tpcCBXZWJBc3NlbWJseSB0ZXN0IG9uIDMyLWJpdCBzeXN0ZW1zCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDZjNzU0NjkyNjQwMGVlM2Y2MzBmNmQ0MGViYjZiMjY4ZjU5MDAxCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qcwpAQCAt
MCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZm9yY2VFYWdlckNvbXBpbGF0aW9u
PXRydWUiKQorCisvLyBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KKworbGV0IGE7CisKK2Z1
bmN0aW9uIGZvbyhzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGdjKCk7CisgICAgICAgIGEgLyAxOworICAgICAgICBhID0gbnVsbDsK
KyAgICB9Cit9CisKK2ZvbygnenonKTsKK2ZvbygnY2xhc3MgQSB7IHkoKSB7fSB9OyBhPW5ldyBB
OyB6eicpOworZm9vKCdjbGFzcyBDIHsgeSgpIHt9IH07IGdjKCk7Jyk7CisKK2NsYXNzIEEgewor
ICAgIHkoKSB7fQorfQorCitBLnByb3RvdHlwZS56ID0gMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366061</attachid>
            <date>2019-03-27 00:30:04 -0700</date>
            <delta_ts>2019-03-27 07:20:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195827-20190327003003.patch</filename>
            <type>text/plain</type>
            <size>51620</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmY2MDQyZWIyZmFjNzc4NzE4ODg5ZWE5NTY2Yjk2ZWQ3NWEyN2VlLi44YjMyOWFmMDUxYWI5M2I0
NTJkMGY0YWZjNDA1MWEyNDcxZGJjOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxOS0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE93bmVyIG9mIHdhdGNocG9pbnRzIHNob3VsZCB2YWxpZGF0ZSBh
dCBHQyBmaW5hbGl6aW5nIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIEpTQydzIHdhdGNocG9pbnQgbGl2ZW5lc3Mg
aXNzdWUgYnkgdGhlIGZvbGxvd2luZyB0d28gcG9saWNpZXMuCisKKyAgICAgICAgMS4gV2F0Y2hw
b2ludCBzaG91bGQgaGF2ZSBvd25lciBjZWxsLCBhbmQgImZpcmUiIG9wZXJhdGlvbiBzaG91bGQg
YmUgZ2F1cmRlZCB3aXRoIG93bmVyIGNlbGwncyBpc0xpdmUgY2hlY2suCisKKyAgICAgICAgV2F0
Y2hwb2ludHMgc2hvdWxkIGhvbGQgaXRzIG93bmVyIGNlbGwsIGFuZCBmaXJlIHByb2NlZHVyZSBz
aG91bGQgYmUgZ3VhcmRlZCBieSBgb3duZXItPmlzTGl2ZSgpYC4KKyAgICAgICAgV2hlbiB0aGUg
b3duZXIgY2VsbCBpcyBkZXN0cm95ZWQsIHRoZXNlIHdhdGNocG9pbnRzIGFyZSBkZXN0cm95ZWQg
dG9vLiBCdXQgdGhpcyBkZXN0cnVjdGlvbiBjYW4KKyAgICAgICAgYmUgZGVsYXllZCBkdWUgdG8g
aW5jcmVtZW50YWwgc3dlZXBlci4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2FuIGhhcHBl
bi4KKworICAgICAgICBXaGVuIHdlIGhhdmUgYSB3YXRjaHBvaW50IGxpa2UgdGhlIGZvbGxvd2lu
Zy4KKworICAgICAgICAgICAgY2xhc3MgWFhYV2F0Y2hwb2ludCB7CisgICAgICAgICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CisgICAgICAgICAgICAgICAgSlNDZWxsKiBt
X293bmVyOworICAgICAgICAgICAgfTsKKworICAgICAgICBCb3RoIG1fa2V5J3MgY2VsbCBhbmQg
bV9vd25lciBpcyBub3cgdW5yZWFjaGFibGUgZnJvbSB0aGUgcm9vdC4gU28gZXZlbnR1YWxseSwg
bV9vd25lciBjZWxsJ3MgZGVzdHJ1Y3RvcgorICAgICAgICBpcyBjYWxsZWQgYW5kIHRoaXMgd2F0
Y2hwb2ludCB3aWxsIGJlIGRlc3Ryb3llZC4gQnV0IGJlZm9yZSB0aGF0LCBtX2tleSdzIGNlbGwg
Y2FuIGJlIGRlc3Ryb3llZC4gQW5kIHRoaXMKKyAgICAgICAgd2F0Y2hwb2ludCdzIGZpcmUgcHJv
Y2VkdXJlIGNhbiBiZSBjYWxsZWQgc2luY2UgbV9vd25lcidzIGRlc3RydWN0b3IgaXMgbm90IGNh
bGxlZCB5ZXQuIEluIHRoaXMgc2l0dWF0aW9uLAorICAgICAgICB3ZSBlbmNvdW50ZXIgdGhlIGRl
c3Ryb3llZCBjZWxsIGhlbGQgaW4gbV9rZXkuIFRoaXMgcHJvYmxlbSBjYW4gYmUgYXZvaWRlZCBp
ZiB3ZSBndWFyZCBmaXJlIHByb2NlZHVyZSB3aXRoCisgICAgICAgIGBtX293bmVyLT5pc0xpdmUo
KWAuIFVudGlsIHRoZSBvd25lciBjZWxsIGlzIGRlc3Ryb3llZCwgdGhpcyBndWFyZCBhdm9pZHMg
ImZpcmUiIHByb2NlZHVyZSBleGVjdXRpb24uIEFuZAorICAgICAgICBvbmNlIHRoZSBkZXN0cnVj
dG9yIG9mIG1fb3duZXIgaXMgY2FsbGVkLCB0aGlzIHdhdGNocG9pbnQgd2lsbCBiZSBkZXN0cm95
ZWQgdG9vLgorCisgICAgICAgIDIuIFdhdGNocG9pbnQgbGl2ZW5lc3Mgc2hvdWxkIGJlIG1haW50
YWluZWQgYnkgb3duZXIgY2VsbCdzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyCisKKyAgICAgICAg
V2F0Y2hwb2ludHMgb2Z0ZW4gaG9sZCB3ZWFrIHJlZmVyZW5jZXMgdG8gdGhlIG90aGVyIGNlbGwg
KGxpa2UsIG1fa2V5IGluIHRoZSBhYm92ZSBleGFtcGxlKS4gSWYgd2UgZG8gbm90CisgICAgICAg
IGRlbGV0ZSB3YXRjaHBvaW50cyB3aXRoIGRlYWQgY2VsbHMgd2hlbiB0aGVzZSB3ZWFrIGNlbGxz
IGJlY29tZSBkZWFkLCB0aGVzZSB3YXRjaHBvaW50cyBjb250aW51ZSBob2xkaW5nIGRlYWQgY2Vs
bHMsCisgICAgICAgIGFuZCB3YXRjaHBvaW50J3MgZmlyZSBvcGVyYXRpb24gY2FuIHVzZSB0aGVz
ZSBkZWFkIGNlbGxzIGFjY2lkZW50YWxseS4gaXNMaXZlIC8gaXNTdGlsbExpdmUgY2hlY2sgZm9y
IHRoZXNlIHdlYWsgY2VsbHMKKyAgICAgICAgaW4gZmlyZSBvcGVyYXRpb24gaXMgbm90IHVzZWZ1
bC4gQmVjYXVzZSB0aGVzZSBkZWFkIGNlbGxzIGNhbiBiZSByZXVzZWQgdG8gdGhlIG90aGVyIGxp
dmUgY2VsbHMgZXZlbnR1YWxseSwgYW5kIHRoaXMKKyAgICAgICAgaXNMaXZlIC8gaXNTdGlsbExp
dmUgY2hlY2tzIGZhaWwgdG8gc2VlIHRoZXNlIGNlbGxzIGFyZSBsaXZlIGlmIHRoZXkgYXJlIHJl
dXNlZC4gQXBwcm9wcmlhdGUgd2F5IGlzIGRlbGV0aW5nIHdhdGNocG9pbnRzCisgICAgICAgIHdp
dGggZGVhZCBjZWxscyB3aGVuIGZpbmFsaXppbmcgR0MuIEluIHRoaXMgcGF0Y2gsIHdlIGRvIHRo
aXMgaW4gdW5jb25kaXRpb25hbCBmaW5hbGl6ZXJzIGluIG93bmVyIGNlbGxzIG9mIHdhdGNocG9p
bnRzLgorICAgICAgICBXZSBhbHJlYWR5IGRpZCB0aGlzIGluIENvZGVCbG9jayBldGMuIFdlIGFk
ZCB0aGUgc2FtZSB0aGluZyB0byBTdHJ1Y3R1cmVSYXJlRGF0YSB3aGljaCBvd25zIHdhdGNocG9p
bnRzIGZvciB0b1N0cmluZyBvcGVyYXRpb25zLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
Lmg6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2U6OlN0cnVjdHVyZVdhdGNocG9pbnQ6OlN0cnVjdHVyZVdhdGNocG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlOjpQcm9wZXJ0eVdhdGNocG9pbnQ6OlByb3BlcnR5V2F0Y2hwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6Q29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OkxMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToK
KyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjprZXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlND
OjpXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmlzVmFsaWQgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6U3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ojppc1ZhbGlkIGNvbnN0KToKKyAgICAg
ICAgKiBkZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Lmg6Cisg
ICAgICAgICogZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmtleSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6bm90
aWZ5SW5jb21taW5nUmVmZXJlbmNlc09mVHJhbnNmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAu
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5oLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxOS0wMy0yNiAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEw6IEVtaXQgY29kZSB0
byB2YWxpZGF0ZSBBSSdzIHN0YXRlIHdoZW4gcnVubmluZyB0aGUgY29tcGlsZWQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYjI1YjcyMzY0OGRjODVjODFmM2Q3ZWViNjg3
NTUyMTZlNDE5OTY1Li43NTc0NTg3NzI5MTYzMmExM2E2NWRlMjY3MDZmOWZlYmU3YTI4MmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ0LDcgKzc0NCw3IEBACiAJCTBGRkI5
MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUg
LyogTm9kZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5
cGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLzsgfTsKIAkJ
MEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFC
IC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgfTsKIAkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8q
IERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCAqLzsgfTsKIAkJ
MEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHUGhhc2UuaCAqLzsgfTsKQEAgLTMxMTMsOCArMzExMyw4IEBACiAJCTBGRkI4MEJCMjBBNzk0
NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRDb2RlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3BlcnR5VHlwZUtleS5oOyBwYXRoID0gZGZn
L0RGR1Byb3BlcnR5VHlwZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZD
OTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkM5OUQyMTg0
RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5RDMx
ODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzMiw4ICs2
NjMyLDggQEAKIAkJCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICov
LAogCQkJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJ
CTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwICovLAotCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaCAqLywKKwkJCQkwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcCAqLywKKwkJCQkwRkZDOTlEMzE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmggKi8s
CiAJCQkJMEYzMEZCNjAxREMyREU5NjAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUu
aCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNw
cCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3Lmgg
Ki8sCkBAIC04NTEyLDcgKzg1MTIsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAv
KiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MEZCNjExREMyREU5OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBmMDVhM2ZlOWUwMzNkMmUxYTQ5NGM0NjE5NGFjMTI0OTlkMzMzMTFlLi41OWEzNWIyZDdkNDY2
MzJjMzcwNWQzNjI5NGJiY2EzOGYwMGI1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC02OTIsNyArNjkyLDcgQEAgcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCiBydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcAogcnVudGltZS9BcmdMaXN0LmNwcAogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKLXJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAor
cnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwCiBydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUv
QXJyYXlDb252ZW50aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5oCmluZGV4IDUwZDg0YmE4ODhkNTFiOTI5MjAzN2YxMTQ0ZTQ4NmJk
YmRlMmUyYTMuLjVkNGUwMmFhZWZlOTY2MDAzZjY1MjE4NDAwODg3ZTQyZjE0MzVlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaApAQCAt
NTAsMTMgKzUwLDEzIEBAIGNsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UgewogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpID0gMDsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBTdHJ1Y3R1cmVXYXRjaHBvaW50IDog
cHVibGljIFdhdGNocG9pbnQgeworICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmVXYXRj
aHBvaW50KCkgeyB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChW
TSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKICAgICB9OwotICAgIGNsYXNzIFByb3Bl
cnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKKyAgICBjbGFzcyBQcm9wZXJ0eVdh
dGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAg
ICBQcm9wZXJ0eVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmgKaW5kZXggNjEwMjYxZjZhNTU4YzUyZWZkMDYyZmYyMTNkMmQ1MmNkYzhl
ZTA1Yy4uYWYyNGVhM2E2ZmIzMDJiNzkyNjBhYWZjZjdlZmU2ZmFmNjljZWJhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgQ29kZUJsb2NrOwogCi1jbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAgQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICA6IG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggNmJlZGRmOWNjZDYyZTY3MTZhYjQwODZl
ZjAxODEzNWYyM2NlMmY1MC4uMWJlYmM0OGMwNDc0Zjk1NTBlN2RmMjM2M2Y3ZDFjYjhiNmY2N2Rk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKQEAgLTMyLDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUxMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6TExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKLSAgICA6IG1f
a2V5KGtleSkKK0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KENvZGVCbG9jayog
b3duZXIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIE9wR2V0QnlJZDo6TWV0
YWRhdGEmIGdldEJ5SWRNZXRhZGF0YSkKKyAgICA6IG1fb3duZXIob3duZXIpCisgICAgLCBtX2tl
eShrZXkpCiAgICAgLCBtX2dldEJ5SWRNZXRhZGF0YShnZXRCeUlkTWV0YWRhdGEpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoa2V5LndhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludCgpKTsKQEAgLTQ5LDYgKzUwLDkgQEAgdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogCiB2b2lkIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2
bSwgY29uc3QgRmlyZURldGFpbCYpCiB7CisgICAgaWYgKCFtX293bmVyLT5pc0xpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0
aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGluc3RhbGwodm0pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKaW5kZXggMGExNzMwYWY3YWI5MTYwNGRlYzUxODAwZTAyNWM3NGJmZjg3NmU2
MC4uOWUxMTgwOGYzZjQ4Njc0ZjBlMWFmODlhMTEzNzMyODZhYTIyMjNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzEs
OSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgeworY2xhc3Mg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZpbmFsIDogcHVi
bGljIFdhdGNocG9pbnQgewogcHVibGljOgotICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIE9wR2V0
QnlJZDo6TWV0YWRhdGEmKTsKKyAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBP
cEdldEJ5SWQ6Ok1ldGFkYXRhJik7CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgQ29kZUJsb2NrKiBt
X293bmVyOwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgIE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmIG1fZ2V0QnlJZE1ldGFkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcAppbmRleCA2NDhiMWU4ZjU4ZDY4YWRjNWY0ZWU2ZGRlZWU3NjkxMWY5ZTc3
ODk4Li45NDE2ZDMwOGFkYTJmMGUwM2UyOTE2ZGEzZmQ2Mzk1NWJhNzJhNjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zNiw2ICszNiw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiB2b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogeworICAgIGlmICghbV9ob2xkZXIuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fa2V5IHx8ICFtX2tleS5pc1dhdGNo
YWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewogICAgICAgICAv
LyBUaGlzIHdpbGwgaW1wbGljaXRseSBjYXVzZSBteSBvd24gZGVtaXNlOiBzdHViIHJlc2V0IHJl
bW92ZXMgYWxsIHdhdGNocG9pbnRzLgogICAgICAgICAvLyBUaGF0IHdvcmtzLCBiZWNhdXNlIGRl
bGV0aW5nIGEgd2F0Y2hwb2ludCByZW1vdmVzIGl0IGZyb20gdGhlIHNldCdzIGxpc3QsIGFuZApA
QCAtNTQsNiArNTcsMTEgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikKICAgICBtX2tleS5vYmplY3Qo
KS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CiB9CiAKK2lu
bGluZSBib29sIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0xpdmUoKTsKK30KKwogU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjphZGRX
YXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkpCiB7CiAgICAgcmV0
dXJuIG1fd2F0Y2hwb2ludHMuYWRkKGtleSwgKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmgKaW5kZXggMDdlMWY3NDZlZGE5NTJjMDY0Mjc1YjkyNjUyN2ZhOTg3NjE1YjdjMC4u
NzBiNjk3ZjY5ZmJkY2Q0OTBiMjcwZDU5ODNiOTM1YjRmM2M4MDM4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNs
YXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogY2xhc3MgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvOwogCi1jbGFzcyBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50IDogcHVibGljIFdh
dGNocG9pbnQgeworY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6
IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTc4LDYgKzc4LDggQEAgY2xhc3MgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvIHsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrOyB9CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHViSW5mbzsgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAKaW5kZXggNWI0YTIzNzE4ZDQ2YjY5Y2RkZjEyZGJl
ZmQ2OTYwZmRmOTAzZTFjNS4uNmEwNmViMDFiYTc4NzFmOTNjZTVjZWFmNDNjYjJkZDI5ZGU4Nzc2
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcApAQCAt
NTEsNiArNTEsMTEgQEAgdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQ6OmhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJgogICAgIG1fY29kZUJsb2NrLT5q
ZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LCBDb3Vu
dFJlb3B0aW1pemF0aW9uLCAmbGF6eURldGFpbCk7CiB9CiAKK2Jvb2wgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ojppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb2RlQmxvY2stPmlzTGl2ZSgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludC5oCmluZGV4IDYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4Njc0MGE0NjQxZDQw
NDcuLmQxN2UxOThmNzMwM2VhZTcwYWEwMGE4YmUyZjEwM2IwMzk1NjQ1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UgeworY2xhc3MgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UgewogcHVibGljOgogICAgIHR5cGVkZWYgQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSBCYXNlOwogICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIENvZGVC
bG9jayopOwogCiBwcml2YXRlOgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwor
CiAgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwog
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRl
eCBkNGE4YjlhN2Q4Yzc4MmJkZGI5YzFlNGFjNzFmY2IyNTRmMGJkNjBkLi41YjlkZGE2ZmIwYjE3
NGFhYzk0YTc5N2NhMTE5MGNjNTQ5NmEyNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBA
IC01Miw2ICs1Miw5IEBAIHZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxs
KFZNJiB2bSkKIAogdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKKyAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0xpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fa2V5LmlzV2F0Y2hh
YmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgIGlu
c3RhbGwodm0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCBjMWY1
NzRmNTMzOTI2ZDQzMDdiMmRlMzA2ZDUzN2YxMGJiN2RlNDcyLi45NDAxM2RjOTY4M2YzOGE5ZDk0
Mzc2ODlmMmRhYzBhODRlNjMwMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitjbGFzcyBBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6
CiAgICAgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uJiwgQ29kZUJsb2NrKik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKaW5kZXggYTRjYjAwZmE3NWM4NjcxNGFi
YTNhMGYyMDc5ZDIzZjU5M2VmNzM5ZS4uMWFjODZhY2YzMjc0M2YzYTZmN2UwMWNiMWMxYzRiOGI3
N2VlNGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
V2F0Y2hwb2ludHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZFdhdGNocG9pbnRzLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRl
ICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTM5LDggKzM5LDggQEAgdm9pZCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogewogICAgIFZNJiB2bSA9ICpj
b2RlQmxvY2stPnZtKCk7CiAgICAgV2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IGNvbW1vbi53YXRj
aHBvaW50cy5hZGQoY29kZUJsb2NrKTsKLSAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQotICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OmNyZWF0ZSh2bSk7CisgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KKyAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50U2V0OjpjcmVhdGUodm0pOwogICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgp
LmFkZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dh
dGNocG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNo
cG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggOWRkZDEzNzVmNjZmNDFiNjIxNjRlMTBmYzNkOGZmYjAwZDlkYWI5ZS4uNDk1
M2FjMjU5MjIzZjMyYTFhMGFkNmU5NjE4MmZmYmMxNmFhYTUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTU5NSw2ICs1OTUsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0p
OwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZT4odm0oKS0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVycyk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1
cmVSYXJlRGF0YT4odm0oKS0+c3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CiAgICAgaWYgKHZtKCkt
Pm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAgICBpZiAodm0oKS0+
bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA3ZmMzNzMwM2QwZjVhZDVjZmVmNjdjNmM5MmU0ODFiZGM1YzBhYzY3
Li45ZDFkODE5MDk0NTUxYWUxYWEwN2Q3N2MyNDQ5ODA2N2Q4YjBmMDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTcyNyw3ICs3Mjcs
NyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgY29uc3QgSW5zdHJ1Y3RpbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBpZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6
UHJlc2VuY2UpCiAgICAgICAgICAgICBvZmZzZXQgPSBjb25kaXRpb24uY29uZGl0aW9uKCkub2Zm
c2V0KCk7Ci0gICAgICAgIHdhdGNocG9pbnRzLmFkZChjb25kaXRpb24sIG1ldGFkYXRhKS0+aW5z
dGFsbCh2bSk7CisgICAgICAgIHdhdGNocG9pbnRzLmFkZChjb2RlQmxvY2ssIGNvbmRpdGlvbiwg
bWV0YWRhdGEpLT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICBBU1NFUlQoKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KSA9PSBzbG90LmlzVW5zZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNmM1NmQ1OWYxNzFjNTk4ZDQ2MjRhYmZm
NTliMTZiNzRhMGVmMTRjNi4uOGY4NTU2Yjg5N2JhNzBhYzdlOWRiMzhlMGY4YWI5YzA0NWFkMzkw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyLmgiCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvR2lnYWNhZ2UuaD4KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEFycmF5QnVmZmVyOjpub3Rp
ZnlJbmNvbW1pbmdSZWZlcmVuY2VzT2ZUcmFuc2ZlcihWTSYgdm0pCiAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CiAgICAgICAgIGlmIChKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgY2VsbCkp
CiAgICAgICAgICAgICB2aWV3LT5uZXV0ZXIoKTsKLSAgICAgICAgZWxzZSBpZiAoQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0ganNEeW5hbWljQ2FzdDxBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqPih2bSwgY2VsbCkpCisgICAgICAgIGVsc2UgaWYgKEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nh
c3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0Kj4odm0sIGNlbGwpKQogICAgICAg
ICAgICAgd2F0Y2hwb2ludC0+ZmlyZUFsbCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGZmZjRhODdiMDVj
Mzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIK
LQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENs
YXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OnNfaW5mbyA9IHsKLSAgICAi
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwKLSAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dCkKLX07Ci0KLUFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50KFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKCpu
ZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKLXsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19j
YXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoKTsKLX0K
LQotQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OmNyZWF0ZShWTSYgdm0pCi17Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KiByZXN1bHQgPSBuZXcKLSAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ+KHZtLmhlYXApKQotICAgICAgICBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQodm0pOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQotewotICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50OjpmaXJlQWxsKCkKLXsKLSAgICBtX3NldC0+ZmlyZUFsbCgqdm0oKSwgIkFycmF5IGJ1ZmZl
ciB3YXMgbmV1dGVyZWQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZDZkMDk3NGE1
OGViYjBiM2EzZTg4MTU1NDRhNWE1OGZjNDIzMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAg
Ci0gICAgc3RhdGljIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogY3JlYXRlKFZNJik7
Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYpOwotICAgIAotICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsg
cmV0dXJuIG1fc2V0LmdldCgpOyB9Ci0gICAgCi0gICAgdm9pZCBmaXJlQWxsKCk7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7Ci0g
ICAgCi0gICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIz
ZGUxMjMxYWMwYjE3YTRjMGJlMmZmMzMzODkxYmU1MzM0ZjkwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50U2V0LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OnNfaW5mbyA9IHsKKyAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50U2V0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICBDUkVBVEVfTUVUSE9E
X1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCkKK307CisKK0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
U2V0KFZNJiB2bSkKKyAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2lu
dFNldChJc1dhdGNoZWQpKSkKK3sKK30KKwordm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldCo+KGNlbGwpLT5BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoKTsKK30K
KworQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0KiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnRTZXQ6OmNyZWF0ZShWTSYgdm0pCit7CisgICAgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U2V0KiByZXN1bHQgPSBuZXcKKyAgICAgICAgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQ+KHZtLmhlYXApKQorICAgICAg
ICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQodm0pOworICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cnVjdHVyZSogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZv
KENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0OjpmaXJlQWxsKCkKK3sKKyAgICBtX3NldC0+ZmlyZUFs
bCgqdm0oKSwgIkFycmF5IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U2V0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4
ZWRjNmUzYzVjZjcyMGFiNDM5NWZhMmJhMTAwMWVmZTg0NTIwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFNldC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Nhc3QuaCIKKyNp
bmNsdWRlICJXYXRjaHBvaW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U2V0KiBjcmVhdGUoVk0mKTsKKworICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJik7Cisg
ICAgCisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KKyAg
ICAKKyAgICB2b2lkIGZpcmVBbGwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTZXQoVk0mKTsKKyAgICAKKyAgICBSZWY8V2F0Y2hwb2lu
dFNldD4gbV9zZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBiZjczMDMxMTI2YTdj
YzYyNGRmYmExZDU2Zjg5YWE3NzQyMjU5ZDA3Li4xMzJjMjc5NjAyNjZmN2YwZmVmNTljYTZkZTI1
NjM0NWYwMmY1MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCkBAIC0xMTYsNyArMTE2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0
YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogCi0gICAgY2xhc3MgQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CisgICAg
Y2xhc3MgQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMg
V2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSkKICAgICAgICAgICAgIDog
bV9yYXJlRGF0YShyYXJlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3YWZlNzAzMmIxNjhjNmJjYjU0MzMzY2IyY2VhYjkw
MWJhMTRmNmZhLi5hZGVmNjliMjJmNGQ1NmE1NzUzYTVhOTY0OWExYzZlNDcyOGYxM2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMTAzLDU3ICsxMTAzLDU3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAKICAgICB7CiAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVX
YXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAg
ICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0K
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOworICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
bV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAg
ICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNv
bmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBl
TmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBl
TmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldEl0ZXJhdG9yUHJv
dG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAg
ICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90
b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQ
cm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBt
X21hcFNldFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5
cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKQEAgLTExNjQsNyArMTE2NCw3
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlw
ZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dCk7CisgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CkBAIC0xODkyLDEwICsxODkyLDEwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEV4
ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC50b3Vj
aCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQuIik7CiAKLSAgICBtX2FycmF5
UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29u
c3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJh
eVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAg
IG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0g
ICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+PihzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1f
YXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBt
X2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCmluZGV4IDRlMGMyMDkwNWU2
Mzg4ZDM4NDE1YzdlYWU0MjM0MTMwMDkzMDRhMDQuLjU0MWYzNDVkMzYxYmQxM2VjNGU2OWU2ODc3
NDIxNWIwZjZiNGFhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQuaApAQCAtMzAsMjIgKzMwLDI5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgV2F0Y2hwb2ludD4KLWNsYXNzIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UgeworY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludEJhc2U7Ci0gICAgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQo
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiwgV2F0Y2hwb2ludCYgd2F0
Y2hwb2ludCkKKyAgICBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludChKU0Nl
bGwqIG93bmVyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uLCBXYXRj
aHBvaW50JiB3YXRjaHBvaW50KQogICAgICAgICA6IEJhc2UoY29uZGl0aW9uKQorICAgICAgICAs
IG1fb3duZXIob3duZXIpCiAgICAgICAgICwgbV93YXRjaHBvaW50KHdhdGNocG9pbnQpCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXRjaHBvaW50LnN0YXRlT25KU1RocmVhZCgpID09
IElzV2F0Y2hlZCk7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9vd25lci0+aXNMaXZlKCk7CisgICAg
fQorCiAgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBtX3dhdGNocG9pbnQuZmlyZUFsbCh2bSwgU3RyaW5nRmlyZURl
dGFpbCgiT2JqZWN0IFByb3BlcnR5IGlzIGNoYW5nZWQuIikpOwogICAgIH0KIAorICAgIEpTQ2Vs
bCogbV9vd25lcjsKICAgICBXYXRjaHBvaW50JiBtX3dhdGNocG9pbnQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5k
ZXggZDU2MDZjZDQxMDVhY2E2MGRlMGY0YWFkODU1ZDI0ODEzMTQ5ZjBjNy4uNWMxYzVmN2Y5YmYy
MjZjY2FhZDQwZDk0ZGQ2Y2NkOWNkZTk3Y2ZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2
b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAKIC8vIC0tLS0tLS0tLS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2VzIC0tLS0tLS0tLS0tCiAKLWNsYXNzIE9iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGlj
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgeworY2xhc3MgT2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQgZmluYWwg
OiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlIEJhc2U7CiAgICAgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBTdHJ1Y3R1cmVS
YXJlRGF0YSopOwpAQCAtOTAsMTIgKzkwLDE0IEBAIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mCiAg
ICAgU3RydWN0dXJlUmFyZURhdGEqIG1fc3RydWN0dXJlUmFyZURhdGE7CiB9OwogCi1jbGFzcyBP
YmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBv
aW50IHsKK2NsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50IGZp
bmFsIDogcHVibGljIFdhdGNocG9pbnQgewogcHVibGljOgogICAgIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiwg
U3RydWN0dXJlUmFyZURhdGEqKTsKIAogICAgIHZvaWQgaW5zdGFsbChWTSYpOwogCisgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRh
aWwmKSBvdmVycmlkZTsKICAgICAKQEAgLTE2OSw2ICsxNzEsMjIgQEAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlUmFyZURhdGE6OmNsZWFyT2JqZWN0VG9TdHJpbmdWYWx1ZSgpCiAgICAgbV9vYmplY3RU
b1N0cmluZ1ZhbHVlLmNsZWFyKCk7CiB9CiAKK3ZvaWQgU3RydWN0dXJlUmFyZURhdGE6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAobV9vYmplY3RUb1N0cmluZ0Fk
YXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQpIHsKKyAgICAgICAgaWYgKCFtX29iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+a2V5KCkuaXNTdGlsbExpdmUo
dm0pKSB7CisgICAgICAgICAgICBjbGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8qIHdhdGNocG9pbnQg
OiBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0KSB7CisgICAgICAgIGlmICgh
d2F0Y2hwb2ludC0+a2V5KCkuaXNTdGlsbExpdmUodm0pKSB7CisgICAgICAgICAgICBjbGVhck9i
amVjdFRvU3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKwogLy8gLS0tLS0tLS0tLS0tLSBNZXRob2RzIGZvciBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0tLS0tLQogCiBPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6T2JqZWN0VG9TdHJpbmdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtl
eSwgU3RydWN0dXJlUmFyZURhdGEqIHN0cnVjdHVyZVJhcmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKaW5kZXggYzRiZTcxNDBj
ZTgyYzI5NDFkMjI0MWYzOGQ4ZDVhZjM4ZjhiYzYxOC4uZTAzYjIzZjIyYjI5NGExMjQ4YzFlZWQ5
ZTAxNDA4YTU1NDg0MmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC05MCw2ICs5MCw4IEBAIGNsYXNzIFN0cnVjdHVyZVJh
cmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgZnJpZW5kIGNsYXNzIE9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDQzNzUzZGEwNjBhYzQ1M2NmOGFkZTYwOGUxZWQzNGJmMGU5YjE3NDUuLjNl
ZDZkZTljZTBhODRkYTY3MTljYTk2ZjRhZWYxMzI4N2Y0YzM4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJWTS5oIgogCiAj
aW5jbHVkZSAiQXJnTGlzdC5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldC5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKQEAgLTM4MSw3ICszODEsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc3RydWN0dXJl
Q2hhaW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3RydWN0dXJlLnNldCgq
dGhpcywgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcykpOworICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFNldDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVy
ZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5z
ZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBmYWQzYjhjNzdjZjkwZmUzNjYwMGU0NzJkOWRhMTI5ODFhMWFiNWViLi4w
MWQyYzZlYjZmYmU4MjY4OGY4YTM3MjkzMGY1ODkzMGUzNDliNmE2IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE5LTAzLTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gT3duZXIgb2Ygd2F0Y2hwb2ludHMgc2hvdWxkIHZhbGlkYXRlIGF0IEdDIGZpbmFsaXpp
bmcgcGhhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL2djLXNob3VsZC1yZWFwLWRlYWQtd2F0Y2hwb2ludHMuanM6IEFkZGVkLgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKEEucHJvdG90eXBlLnkpOgorICAgICAgICAoQSk6CisKIDIw
MTktMDMtMjYgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgU2tpcCBXZWJBc3NlbWJseSB0ZXN0IG9uIDMyLWJpdCBzeXN0ZW1zCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9nYy1zaG91bGQtcmVhcC1kZWFkLXdhdGNocG9pbnRzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDZjNzU0NjkyNjQwMGVlM2Y2MzBmNmQ0MGViYjZiMjY4ZjU5MDAxCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2Mtc2hvdWxkLXJlYXAtZGVhZC13YXRjaHBvaW50cy5qcwpAQCAt
MCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZm9yY2VFYWdlckNvbXBpbGF0aW9u
PXRydWUiKQorCisvLyBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KKworbGV0IGE7CisKK2Z1
bmN0aW9uIGZvbyhzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGdjKCk7CisgICAgICAgIGEgLyAxOworICAgICAgICBhID0gbnVsbDsK
KyAgICB9Cit9CisKK2ZvbygnenonKTsKK2ZvbygnY2xhc3MgQSB7IHkoKSB7fSB9OyBhPW5ldyBB
OyB6eicpOworZm9vKCdjbGFzcyBDIHsgeSgpIHt9IH07IGdjKCk7Jyk7CisKK2NsYXNzIEEgewor
ICAgIHkoKSB7fQorfQorCitBLnByb3RvdHlwZS56ID0gMAo=
</data>
<flag name="review"
          id="382475"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>