<?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>236747</bug_id>
          
          <creation_ts>2022-02-16 18:04:47 -0800</creation_ts>
          <short_desc>Make input element UA shadow tree creation lazy</short_desc>
          <delta_ts>2022-03-27 19:02:16 -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>Forms</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>
          <dependson>237131</dependson>
    
    <dependson>237224</dependson>
    
    <dependson>238429</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842638</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-16 18:04:47 -0800</bug_when>
    <thetext>We currently delay InputType creation for parser inserted elements until just after the attributes have been set, so that we don&apos;t wastefully create an InputType and the UA shadow tree creation if a non-text type=&quot;&quot; was specified on the tag.  We don&apos;t do anything similar for script inserted input elements.  We could make the InputType creation lazy, but most of the wasted time is due to the shadow tree creation.  I think we can make the shadow tree creation lazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842650</commentid>
    <comment_count>1</comment_count>
      <attachid>452286</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-16 18:58:38 -0800</bug_when>
    <thetext>Created attachment 452286
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842651</commentid>
    <comment_count>2</comment_count>
      <attachid>452287</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-16 19:00:17 -0800</bug_when>
    <thetext>Created attachment 452287
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842714</commentid>
    <comment_count>3</comment_count>
      <attachid>452318</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-16 22:23:53 -0800</bug_when>
    <thetext>Created attachment 452318
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842716</commentid>
    <comment_count>4</comment_count>
      <attachid>452319</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-16 22:30:10 -0800</bug_when>
    <thetext>Created attachment 452319
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843116</commentid>
    <comment_count>5</comment_count>
      <attachid>452429</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-17 13:56:15 -0800</bug_when>
    <thetext>Created attachment 452429
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843168</commentid>
    <comment_count>6</comment_count>
      <attachid>452443</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-17 16:22:15 -0800</bug_when>
    <thetext>Created attachment 452443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843219</commentid>
    <comment_count>7</comment_count>
      <attachid>452443</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-17 17:57:59 -0800</bug_when>
    <thetext>Comment on attachment 452443
Patch

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

&gt; Source/WebCore/html/FileInputType.cpp:273
&gt;  void FileInputType::disabledStateChanged()

What ensures the disabled state below is set correctly, if the disabled attribute is set before insertion?

Same comment for the other overrides of this method.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:374
&gt; +    ASSERT(innerTextElement());

I was going to say we might not have an inner text element in WebKit 1 if this is created through `DOMHTMLInputElement` and call `startPosition` before inserting in the document.

But I think this is fine because that method checks that `renderer` is non-null (see `WebVisiblePosition.mm` if you&apos;re curious).

&gt; Source/WebCore/html/InputType.h:412
&gt; +    bool createdShadowSubtreeIfNeeded() const { return m_createdShadowSubtreeIfNeeded; }

Can this just be called `createdShadowSubtree`?

&gt; Source/WebCore/html/TextFieldInputType.cpp:111
&gt; +        // isEmptyValue is only called by updatePlaceholderVisibility() to

I wonder if we should rename this method to make it clear that it returns true if the shadow tree hasn&apos;t been created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843235</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-17 18:49:46 -0800</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #7)
&gt; &gt; Source/WebCore/html/FileInputType.cpp:273
&gt; &gt;  void FileInputType::disabledStateChanged()
&gt; 
&gt; What ensures the disabled state below is set correctly, if the disabled
&gt; attribute is set before insertion?

I overlooked that one.  It needs to be done in createShadowTree.  Other classes that override disabledStateChanged seem to be OK.

&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:374
&gt; &gt; +    ASSERT(innerTextElement());
&gt; 
&gt; I was going to say we might not have an inner text element in WebKit 1 if
&gt; this is created through `DOMHTMLInputElement` and call `startPosition`
&gt; before inserting in the document.
&gt;
&gt; But I think this is fine because that method checks that `renderer` is
&gt; non-null (see `WebVisiblePosition.mm` if you&apos;re curious).

Ah, so these VisiblePosition-related functions can be called for non-editing reasons too?  I was thinking that if they&apos;re only used for editing, then they&apos;d need to be in the document, with a renderer, to be called.

&gt; &gt; Source/WebCore/html/InputType.h:412
&gt; &gt; +    bool createdShadowSubtreeIfNeeded() const { return m_createdShadowSubtreeIfNeeded; }
&gt; 
&gt; Can this just be called `createdShadowSubtree`?

Yeah, I guess so.  Then I&apos;ll only set m_createdShadowSubtree if we did actually do that (and not if createShadowSubtreeIfNeeded is called but it&apos;s for an InputType that doesn&apos;t need one).

&gt; &gt; Source/WebCore/html/TextFieldInputType.cpp:111
&gt; &gt; +        // isEmptyValue is only called by updatePlaceholderVisibility() to
&gt; 
&gt; I wonder if we should rename this method to make it clear that it returns
&gt; true if the shadow tree hasn&apos;t been created.

Oh, I think I&apos;ve left an out of date comment there.  In a previous version of the patch, I wasn&apos;t doing the lazy construction of the shadow tree when updateInnerTextValue was called.  But now it is, so if there is a non-empty value, then we&apos;ll have a shadow tree.  I&apos;ll update the comment to say that if there&apos;s no subtree, it means a non-empty value hasn&apos;t been set yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843241</commentid>
    <comment_count>9</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-17 19:10:27 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #8)
&gt; (In reply to Aditya Keerthi from comment #7)
&gt; &gt; &gt; Source/WebCore/html/FileInputType.cpp:273
&gt; &gt; &gt;  void FileInputType::disabledStateChanged()
&gt; &gt; 
&gt; &gt; What ensures the disabled state below is set correctly, if the disabled
&gt; &gt; attribute is set before insertion?
&gt; 
&gt; I overlooked that one.  It needs to be done in createShadowTree.  Other
&gt; classes that override disabledStateChanged seem to be OK.
&gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:374
&gt; &gt; &gt; +    ASSERT(innerTextElement());
&gt; &gt; 
&gt; &gt; I was going to say we might not have an inner text element in WebKit 1 if
&gt; &gt; this is created through `DOMHTMLInputElement` and call `startPosition`
&gt; &gt; before inserting in the document.
&gt; &gt;
&gt; &gt; But I think this is fine because that method checks that `renderer` is
&gt; &gt; non-null (see `WebVisiblePosition.mm` if you&apos;re curious).
&gt; 
&gt; Ah, so these VisiblePosition-related functions can be called for non-editing
&gt; reasons too?  I was thinking that if they&apos;re only used for editing, then
&gt; they&apos;d need to be in the document, with a renderer, to be called.

I was just thinking out loud given `startPosition` is SPI. In any case, we should be fine since it looks like all call sites either check for a renderer or have the node already in the document.

Perhaps Wenson can confirm this assertion is okay?
 
&gt; &gt; &gt; Source/WebCore/html/InputType.h:412
&gt; &gt; &gt; +    bool createdShadowSubtreeIfNeeded() const { return m_createdShadowSubtreeIfNeeded; }
&gt; &gt; 
&gt; &gt; Can this just be called `createdShadowSubtree`?
&gt; 
&gt; Yeah, I guess so.  Then I&apos;ll only set m_createdShadowSubtree if we did
&gt; actually do that (and not if createShadowSubtreeIfNeeded is called but it&apos;s
&gt; for an InputType that doesn&apos;t need one).
&gt; 
&gt; &gt; &gt; Source/WebCore/html/TextFieldInputType.cpp:111
&gt; &gt; &gt; +        // isEmptyValue is only called by updatePlaceholderVisibility() to
&gt; &gt; 
&gt; &gt; I wonder if we should rename this method to make it clear that it returns
&gt; &gt; true if the shadow tree hasn&apos;t been created.
&gt; 
&gt; Oh, I think I&apos;ve left an out of date comment there.  In a previous version
&gt; of the patch, I wasn&apos;t doing the lazy construction of the shadow tree when
&gt; updateInnerTextValue was called.  But now it is, so if there is a non-empty
&gt; value, then we&apos;ll have a shadow tree.  I&apos;ll update the comment to say that
&gt; if there&apos;s no subtree, it means a non-empty value hasn&apos;t been set yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843260</commentid>
    <comment_count>10</comment_count>
      <attachid>452474</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-17 20:03:24 -0800</bug_when>
    <thetext>Created attachment 452474
Patch v1.1

Addressed comments and added a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843316</commentid>
    <comment_count>11</comment_count>
      <attachid>452443</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-02-18 00:43:24 -0800</bug_when>
    <thetext>Comment on attachment 452443
Patch

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

&gt; Source/WebCore/html/InputType.cpp:1142
&gt; +void InputType::createShadowSubtreeIfNeeded()
&gt; +{
&gt; +    if (m_createdShadowSubtreeIfNeeded || !needsShadowSubtree())
&gt; +        return;
&gt; +    Ref protectedThis { *this };
&gt; +    element()-&gt;ensureUserAgentShadowRoot();
&gt; +    m_createdShadowSubtreeIfNeeded = true;
&gt; +    createShadowSubtree();
&gt; +}

Should this test isConnected()? Or does that get tested on some other level?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843386</commentid>
    <comment_count>12</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2022-02-18 07:14:37 -0800</bug_when>
    <thetext>Cancelled https://ews-build.webkit.org/#/builders/68/builds/8521 (for WIP patch 452429) to speed up ios-wk2 queue. It already finished running layout-tests and the failures seems to be pre-existing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843388</commentid>
    <comment_count>13</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2022-02-18 07:16:26 -0800</bug_when>
    <thetext>Separately, if theses patches are iterations (and you don&apos;t intend to land all of these patches), it would be nice if you can mark older patches as &apos;obsolete&apos; while uploading new patch (webkit-patch upload automatically does that). If a patch is marked as &apos;obsolete&apos; EWS stop processing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843588</commentid>
    <comment_count>14</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-18 13:02:33 -0800</bug_when>
    <thetext>Sorry I should have cancelled those earlier patches once I got the information from the runs that I needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843632</commentid>
    <comment_count>15</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-18 13:45:42 -0800</bug_when>
    <thetext>The one remaining test failure is due to something like:

e = document.createElement(&quot;input&quot;);
e.value = &quot;x&quot;;
e.type = &quot;number&quot;;

Since the patch is calling updateInnerTextValue inside createShadowTree, we end up trying to localize the &quot;x&quot; string as a number, and asserting.  We need to sanitize the value before updateInnerTextValue, which is what HTMLInputElement::updateType does.  So I think I will pull out that updateInnerTextValue call from createShadowTree, and explicitly call it in the one place I need it (in HTMLInputElement::didFinishInsertingNode), instead of always calling it during shadow tree creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843637</commentid>
    <comment_count>16</comment_count>
      <attachid>452578</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-18 13:59:34 -0800</bug_when>
    <thetext>Created attachment 452578
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843638</commentid>
    <comment_count>17</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-18 14:00:32 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #15)
&gt; So I think I will pull out that
&gt; updateInnerTextValue call from createShadowTree, and explicitly call it in
&gt; the one place I need it (in HTMLInputElement::didFinishInsertingNode),
&gt; instead of always calling it during shadow tree creation.

Actually I think it&apos;s not even necessary to call updateInnerTextValue in didFinishInsertingNode, since the only time we&apos;ll be actually creating the shadow tree there is if we never set a value on the input element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843646</commentid>
    <comment_count>18</comment_count>
      <attachid>452578</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-18 14:19:50 -0800</bug_when>
    <thetext>Comment on attachment 452578
Patch v1.2

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

&gt; Source/WebCore/html/InputType.h:209
&gt; +    bool createdShadowSubtree() const { return m_createdShadowSubtree; }

I know I suggested renaming this from `createdShadowSubtreeIfNeeded` to `createdShadowSubtree`, but I think an even better name (matching WebKit style) is `hasShadowSubtree` (and m_hasShadowSubtree).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843647</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 14:22:31 -0800</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #18)
&gt; Comment on attachment 452578 [details]
&gt; Patch v1.2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452578&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/InputType.h:209
&gt; &gt; +    bool createdShadowSubtree() const { return m_createdShadowSubtree; }
&gt; 
&gt; I know I suggested renaming this from `createdShadowSubtreeIfNeeded` to
&gt; `createdShadowSubtree`, but I think an even better name (matching WebKit
&gt; style) is `hasShadowSubtree` (and m_hasShadowSubtree).

Per WebKit coding style (https://webkit.org/code-style-guidelines/#names-bool), Boolean variables (and thus their getters) should have a prefix (e.g. is / has).

In this case, I think &quot;hasCreatedShadowSubtree&quot; would be appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843648</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 14:24:02 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; (In reply to Aditya Keerthi from comment #18)
&gt; &gt; Comment on attachment 452578 [details]
&gt; &gt; Patch v1.2
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=452578&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/InputType.h:209
&gt; &gt; &gt; +    bool createdShadowSubtree() const { return m_createdShadowSubtree; }
&gt; &gt; 
&gt; &gt; I know I suggested renaming this from `createdShadowSubtreeIfNeeded` to
&gt; &gt; `createdShadowSubtree`, but I think an even better name (matching WebKit
&gt; &gt; style) is `hasShadowSubtree` (and m_hasShadowSubtree).
&gt; 
&gt; Per WebKit coding style
&gt; (https://webkit.org/code-style-guidelines/#names-bool), Boolean variables
&gt; (and thus their getters) should have a prefix (e.g. is / has).
&gt; 
&gt; In this case, I think &quot;hasCreatedShadowSubtree&quot; would be appropriate.

I am also fine with &quot;hasShadowSubtree&quot; (like Aditya suggested), I just think it needs a prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843651</commentid>
    <comment_count>21</comment_count>
      <attachid>452583</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-18 14:33:53 -0800</bug_when>
    <thetext>Created attachment 452583
Patch v1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844324</commentid>
    <comment_count>22</comment_count>
      <attachid>452757</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-21 12:31:11 -0800</bug_when>
    <thetext>Created attachment 452757
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844522</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-21 19:38:07 -0800</bug_when>
    <thetext>Committed r290284 (247608@main): &lt;https://commits.webkit.org/247608@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452757.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844525</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-21 19:39:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89271227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845525</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-02-23 23:25:41 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 237131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846346</commentid>
    <comment_count>26</comment_count>
      <attachid>453310</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-26 14:07:00 -0800</bug_when>
    <thetext>Created attachment 453310
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846358</commentid>
    <comment_count>27</comment_count>
      <attachid>453314</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-26 16:32:16 -0800</bug_when>
    <thetext>Created attachment 453314
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846367</commentid>
    <comment_count>28</comment_count>
      <attachid>453321</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-26 20:42:34 -0800</bug_when>
    <thetext>Created attachment 453321
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846514</commentid>
    <comment_count>29</comment_count>
      <attachid>453362</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-27 17:25:44 -0800</bug_when>
    <thetext>Created attachment 453362
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846736</commentid>
    <comment_count>30</comment_count>
      <attachid>453418</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-28 13:01:46 -0800</bug_when>
    <thetext>Created attachment 453418
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846967</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-01 02:29:46 -0800</bug_when>
    <thetext>Committed r290639 (247912@main): &lt;https://commits.webkit.org/247912@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453418.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452286</attachid>
            <date>2022-02-16 18:58:38 -0800</date>
            <delta_ts>2022-02-16 19:00:13 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236747-20220217135836.patch</filename>
            <type>text/plain</type>
            <size>23597</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uOTljZGE2MTAzZTBhYWViNTNhNTIyMDUxNmViOGRm
NWM0NGE2YjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2aXNpYmxl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorCiAyMDIyLTAyLTE2ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIHVzZSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIgd2hlbiBjcmVhdGluZyBpbnB1dCBlbGVtZW50IFVBIHNo
YWRvdyB0cmVlIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5jcHAKaW5kZXggY2JmNjEyMDBlZTY5MTYxY2FmYTU2OTE5ZTdlZjljMWFm
ZGEzNWM0Ni4uMjdlYTMyMmQ2ZTNiNGVjNzlkNTRlMmI1NTVhZmViMTNkNjliNmUwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAt
MzM0LDYgKzMzNCwxMCBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVzdHJveVNo
YWRvd1N1YnRyZWUoKQogdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVy
VGV4dFZhbHVlKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRl
ZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1f
ZGF0ZVRpbWVFZGl0RWxlbWVudCkgewogICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxF
bGVtZW50Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDUz
ZTVjYTM4M2NmZTM3NzRiMTVmODUwMDQ0N2ZhYWMzMDgxMDI5MGEuLjRhZDEzNGFhYTI2MTkzNTlm
MTIxZDYzODZjMGZkNzI5YWM4ZGQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcApAQCAtMjczLDcgKzI3Myw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sCiB2b2lkIEZp
bGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwogCiAgICAgYXV0byBy
b290ID0gZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgaWYgKCFyb290KQpA
QCAtMjg3LDcgKzI4Niw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChuYW1lID09IG11bHRpcGxlQXR0
cikgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CiAgICAgICAgICAgICBpZiAo
YXV0byByb290ID0gZWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKFJlZlB0ciBidXR0b24gPSBjaGlsZHJlbk9mVHlwZTxVcGxvYWRCdXR0b25FbGVt
ZW50Pigqcm9vdCkuZmlyc3QoKSkKICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLT5zZXRWYWx1
ZShlbGVtZW50LT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJl
bCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDYyYjZhNzY4MTIwM2Y5ZDYxZTQxZDM1ODM2ZWEzMGI0
ZjhjNDIwYmUuLjJjYzA2ZDIyYmJmYTMyMTY1ODIxOGEyM2FiMDU1YjdiNTMwNTYwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM2LDggKzEzNiw4IEBA
IEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjZW5kaWYKICAgICAsIG1faXNTcGVsbGNoZWNrRGlz
YWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoZmFsc2UpCiB7Ci0gICAgLy8gbV9pbnB1dFR5cGUg
aXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lk
IGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5kCi0gICAgLy8g
aXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwg
YXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAn
dGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1
Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEg
dGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0cm95IHRoZW0gd2hlbiB0aGUgfHR5
cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRvIHNvbWV0aGluZyBlbHNlIHRo
YW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2VyKQogICAgICAgICBtX2lucHV0VHlw
ZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAKQEAgLTE0NywxNCArMTQ3LDcgQEAg
SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7
Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6aWx5ID0gY3JlYXRlZEJ5UGFyc2Vy
OwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQgPSBhZG9wdFJlZigqbmV3
IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNl
cikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSkgewotICAgICAgICBB
U1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwot
ICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAg
ICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQ7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Zm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0
RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0LDEyICsxNTcsNiBAQCBIVE1MSW1h
Z2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKICAgICByZXR1
cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpCi17Ci0gICAg
UmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCptX2lucHV0VHlwZSk7Ci0gICAgcHJv
dGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwotfQotCiBIVE1M
SW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiB7CiAgICAgaWYgKG5lZWRzU3VzcGVu
c2lvbkNhbGxiYWNrKCkpCkBAIC01ODAsMTAgKzU2Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6dXBkYXRlVHlwZSgpCiAgICAgbV9pbnB1dFR5cGUtPmRldGFjaEZyb21FbGVtZW50KCk7CiAK
ICAgICBtX2lucHV0VHlwZSA9IFdURk1vdmUobmV3VHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBl
LT5uZWVkc1NoYWRvd1N1YnRyZWUoKSkgewotICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dS
b290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoKTsKLSAgICB9CisgICAgbV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChpc0lubmVy
VGV4dEVsZW1lbnRFZGl0YWJsZSgpKTsKIAogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlk
aXR5KCk7CiAKQEAgLTczNiwxOSArNzIwLDEyIEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmluaXRpYWxpemVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKICAgICBpZiAodHlwZS5p
c051bGwoKSkgewogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgq
dGhpcyk7Ci0gICAgICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkp
OwotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKICAgICAg
ICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1faGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6
OmNyZWF0ZSgqdGhpcywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1
YnRyZWUoKSkgewotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAg
IGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
KTsKLSAgICB9CiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICByZWdp
c3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgcnVuUG9zdFR5cGVVcGRh
dGVUYXNrcygpOwpAQCAtMTU5OSwxMCArMTU3Niw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKTsKICAgICBpZiAoaXNJblRyZWVTY29wZSgpICYmICFm
b3JtKCkpCiAgICAgICAgIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwotI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQotICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0
KQotICAgICAgICBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCk7Ci0jZW5kaWYKKyAgICBtX2lucHV0
VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eUlmTmVlZGVkKGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogfQogCiB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5
cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDgyYWU3MWQ1MGJlOGFkZGE4MzQzYzA3ODEyMDM4
NjgyOGMzNTM5OTEuLjJmYjM4MDBmM2EzZDFlN2ZjZDUxMGYyZDkxMjQ2NDg1MDdhMmE5ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zNzEsOCArMzcxLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRh
aW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50
JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgp
OwotCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFz
Q3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3Vz
YWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNjMWEyMWQwMzUx
ZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLmUyMTBjMWJmMzEyMTFkM2Y5MzMxZWJmODkwMjc5
ZWM5Mjg5MmNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5uZXJUZXh0RWxl
bWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChhdXRvIGlubmVy
VGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5kZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJlYWsoVUNoYXIg
Y2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2FycmlhZ2VSZXR1
cm47IH0KQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNp
YmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgp
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVy
VGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwogICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQ
b3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwogICAgIHJldHVybiBwb3NpdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA3YTA1MDUwMmIzZWFiZWQ1Y2QxNzFmZWY4ZjNmNmI1
MTk2ZWEzMzJiLi45MmZlZTM5ZjM1MjliMTkyZGJmNjI3NmE2MWEyMDUzMzBkZDI2YTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0xMTI1LDQgKzExMjUsMTQgQEAgU3RyaW5nIElu
cHV0VHlwZTo6cmVzdWx0Rm9yRGlhbG9nU3VibWl0KCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVu
dCgpLT52YWx1ZSgpOwogfQogCit2b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eUlmTmVlZGVkKGJvb2wgaXNJbm5lclRl
eHRFbGVtZW50RWRpdGFibGUpCit7CisgICAgaWYgKCFuZWVkc1NoYWRvd1N1YnRyZWUoKSB8fCBt
X2NyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQpCisgICAgICAgIHJldHVybjsKKyAgICBSZWYg
cHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CisgICAgZWxlbWVudCgpLT5lbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCk7CisgICAgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkID0gdHJ1ZTsK
KyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMDQ1ZmY0NTdmYjMyZWU2YWI5MTA1YjUz
YWEyMGQ2NzhjODkzMWNlZS4uMzI5OWQwODNiZGNlN2QzNDIxYTA2NTU2YjA5NmM0Y2FhYTI2YWJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0zMDYsNiArMzA2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcuCiAKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1
YnRyZWUoKTsKIApAQCAtNDA3LDEyICs0MDgsMTQgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KICAg
ICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogICAgIERlY2ltYWwgcGFyc2VUb051bWJlck9yTmFO
KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5l
ZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZDsgfQog
CiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24oKS4gQWRkcyBz
dGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9jcmVhdGVk
U2hhZG93U3VidHJlZUlmTmVlZGVkIHsgZmFsc2UgfTsKICAgICAvLyBtX2VsZW1lbnQgaXMgbnVs
bCBpZiB0aGlzIElucHV0VHlwZSBpcyBubyBsb25nZXIgYXNzb2NpYXRlZCB3aXRoIGFuIGVsZW1l
bnQgKGVpdGhlciB0aGUgZWxlbWVudCBkaWVkIG9yIGNoYW5nZWQgaW5wdXQgdHlwZSkuCiAgICAg
V2Vha1B0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMwZmJhODk0YTlmYjFiNDI1Yjg5YWM0ZjEzOWE2
NGZjNWQ2MDExMDMuLjIyZWY2MDY5NDViMTg5NDhhYTBiMzU1ZmUxODQ5ZGQ2YTEwZDhhNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTI1Myw3ICsyNTMsMTAg
QEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25zdCBTdHJpbmcmIHBy
b3Bvc2VkVmFsdWUpIGNvbnN0CiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUo
KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIHJldHVybiBsb2NhbGl6ZVZh
bHVlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgYXV0byB2YWx1ZSA9IGVsZW1lbnQoKS0+dmFs
dWUoKTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgcmV0dXJuIGxvY2FsaXplVmFsdWUodmFsdWUpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRU
eXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYWx1ZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggODA5ZDU4OWNm
M2Q4NzEyZWJjNzFjMzEzMGM0NDMyZGRlODE1ZTk5YS4uMTU3ODBiNzBjNjE5ZTZiYmVkZmQ3OGM1
ZDBhZDdhNDJjOTU5NzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
QEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVw
UmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmIGV2ZW50KQogewogICAg
IEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MSwxMCArMTU1LDE1IEBAIHZv
aWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmIGV2ZW50
KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVU
b3VjaEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOwor
CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVy
bjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9TTElERVIp
Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5MiwxOCBAQCBi
b29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQg
UmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0
ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHR5cGVkU2xp
ZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIGF1dG8g
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkg
LT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
KworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1
cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKKwogICAgIGlmIChlbGVtZW50KCkt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VF
dmVudEhhbmRsZXI6OlllczsKIApAQCAtMjU5LDYgKzI3NCwxMCBAQCB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvbwogSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQo
KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hh
ZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNT
RVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpKTsKICAgICBBU1NFUlQoZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7IC8vIGNvbnRhaW5lcgog
ICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgp
LT5pc0hUTUxFbGVtZW50KCkpOwpAQCAtMjc3LDYgKzI5Niw3IEBAIEhUTUxFbGVtZW50KiBSYW5n
ZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIAogU2xpZGVyVGh1bWJFbGVt
ZW50JiBSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKSBjb25zdAogewor
ICAgIEFTU0VSVChjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpOwogICAgIEFTU0VSVChz
bGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NFUlQo
c2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKIApA
QCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNE
aXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVudC0+
dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5z
ZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgICAgICBpZiAoY3JlYXRlZFNoYWRvd1N1YnRyZWVJ
Zk5lZWRlZCgpKQorICAgICAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3Np
dGlvbkZyb21WYWx1ZSgpOwogICAgIH0KICAgICBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQo
bmFtZSk7CiB9CkBAIC0zMzksNyArMzYwLDggQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEUKICAg
ICAgICAgZWxlbWVudCgpLT5zZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KHZh
bHVlKTsKICAgICB9CiAKLSAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9u
RnJvbVZhbHVlKCk7CisgICAgaWYgKGNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAg
ICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwog
fQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdApAQCAtMzY4
LDcgKzM5MCw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQo
KQogewogICAgIG1fdGlja01hcmtWYWx1ZXNEaXJ0eSA9IHRydWU7CiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBzbGlkZXJUcmFja0VsZW1lbnQgPSB0aGlzLT5zbGlkZXJUcmFja0VsZW1lbnQoKTsK
LSAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGlmIChzbGlkZXJU
cmFja0VsZW1lbnQgJiYgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICBz
bGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZTg3NzhiYmQ5
MDA5YTVkYWI3ODFlMmRmZTM3ODhlOTA5N2ZhYzhjLi5hYTY5NmZlNGJkOTI5OTFjMDZlNDViYzMx
MjRlODdhODY4ZjQyNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCkBAIC0xMDcsNiArMTA3LDE0IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc01v
dXNlRm9jdXNhYmxlKCkgY29uc3QKIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlW
YWx1ZSgpIGNvbnN0CiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkp
IHsKKyAgICAgICAgLy8gaXNFbXB0eVZhbHVlIGlzIG9ubHkgY2FsbGVkIGJ5IHVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eSgpIHRvCisgICAgICAgIC8vIGVuc3VyZSB3ZSByZXN0eWxlIGlmIG5l
ZWRlZCwgc28gdGhlIHJldHVybiB2YWx1ZSBkb2Vzbid0IG1hdHRlciBpZgorICAgICAgICAvLyB0
aGUgdGhlIHNoYWRvdyB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0LCBzaW5jZSBpdCBkb2Vz
bid0IG5lZWQKKyAgICAgICAgLy8gdG8gYmUgcmVzdHlsZWQuCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOwogICAg
IEFTU0VSVChpbm5lclRleHQpOwogCkBAIC0yMjEsNiArMjI5LDggQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2
ZW50KQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0
dG9uKSB7CiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwog
ICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTIzMSwxMCArMjQxLDggQEAg
dm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAgICAg
Ym9vbCBpc0JsdXJFdmVudCA9IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50
OwogICAgIGlmIChpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGNhcHNMb2Nr
U3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwotICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBp
c0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisgICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJF
dmVudCkKICAgICAgICAgZWxlbWVudCgpLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwotICAgIH0KIH0K
IAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVyKCkKQEAgLTMyMSw2ICsz
MjksNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1
YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+
c2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQoKS0+c2hhZG93Um9vdCgpLT5oYXND
aGlsZE5vZGVzKCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNTRVJUKCFt
X2lubmVyQmxvY2spOwpAQCAtMzMxLDkgKzM0MCwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eQogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBi
b29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hvdWxkSGF2ZVNwaW5CdXR0b24oKTsK
ICAgICBib29sIHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZEhhdmVD
YXBzTG9ja0luZGljYXRvcigpOwotICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhh
dmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBuZWVkc0NvbnRh
aW5lcigpOworICAgIGJvb2wgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uID0gdGhpcy0+c2hvdWxk
RHJhd0F1dG9GaWxsQnV0dG9uKCk7CisgICAgYm9vbCBoYXNEYXRhTGlzdCA9IGVsZW1lbnQoKS0+
bGlzdCgpOworICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9u
IHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0
b24gfHwgaGFzRGF0YUxpc3QgfHwgbmVlZHNDb250YWluZXIoKTsKIAogICAgIG1faW5uZXJUZXh0
ID0gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogCiAgICAg
aWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7CiAgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIsICptX2lubmVyVGV4dCk7CkBAIC0zNTgsNyArMzcwLDkgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkKIAogICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7
CiAgICAgfQorCiAgICAgdXBkYXRlQXV0b0ZpbGxCdXR0b24oKTsKKyAgICBkYXRhTGlzdE1heUhh
dmVDaGFuZ2VkKCk7CiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNvbnRh
aW5lckVsZW1lbnQoKSBjb25zdApAQCAtMzczLDcgKzM4Nyw2IEBAIEhUTUxFbGVtZW50KiBUZXh0
RmllbGRJbnB1dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29uc3QKIAogUmVmUHRyPFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lclRleHRFbGVt
ZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9pbm5lclRleHQpOwogICAgIHJldHVybiBtX2lu
bmVyVGV4dDsKIH0KIApAQCAtNDI1LDYgKzQzOCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFjcmVh
dGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICht
X2lubmVyU3BpbkJ1dHRvbikKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0
dXJlKCk7CiAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CkBAIC00MzMsNiArNDQ5
LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIAog
dm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBp
ZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVs
ZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQ1
NCw4ICs0NzMsNyBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkVXNlSW5wdXRNZXRo
b2QoKSBjb25zdAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZURhdGFMaXN0RHJvcGRv
d25JbmRpY2F0b3IoKQogewogICAgIEFTU0VSVCghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9y
KTsKLSAgICBpZiAoIW1fY29udGFpbmVyKQotICAgICAgICBjcmVhdGVDb250YWluZXIoKTsKKyAg
ICBBU1NFUlQobV9jb250YWluZXIpOwogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVu
dEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fY29udGFpbmVyKTsKICAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3IgPSBEYXRhTGlzdEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCktPmRvY3VtZW50KCksICp0aGlzKTsKQEAgLTYxNiw5ICs2MzQsMTQgQEAgYm9vbCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIFN0cmluZyBwbGFjZWhvbGRlclRl
eHQgPSBlbGVtZW50KCktPnBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKQEAgLTcwNCw2ICs3Mjcs
MTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnNwaW5CdXR0b25TdGVwVXAoKQogdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoIWVsZW1lbnQoKS0+Zm9ybUNvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVuZGVyZXIgdmFsdWUg
aWYgdGhlIGZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSBmbGFnIGlzIGZhbHNlLgog
ICAgICAgICAvLyBJdCBwcm90ZWN0cyBhbiB1bmFjY2VwdGFibGUgcmVuZGVyZXIgdmFsdWUgZnJv
bSBiZWluZyBvdmVyd3JpdHRlbiB3aXRoIHRoZSBET00gdmFsdWUuCkBAIC03MzUsNiArNzYyLDcg
QEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFNwaW5CdXR0b25SZXNwb25kVG9XaGVl
bEV2ZW50cygpCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkRHJhd0NhcHNMb2NrSW5k
aWNhdG9yKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChlbGVt
ZW50KCktPmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSAhPSBlbGVtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtODE2LDEzICs4NDQsMTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZUF1dG9GaWxsQnV0dG9uKEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1
dHRvblQKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkK
IHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRy
ZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2
ZUNoYW5nZWQoKTsKIAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAg
ICAgICBpZiAoIW1fY29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAK
LSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBh
dXRvRmlsbEJ1dHRvblR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAg
ICAgICBpZiAoIW1fYXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1
dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYWNoZWRTdWdn
ZXN0aW9ucyA9IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452287</attachid>
            <date>2022-02-16 19:00:17 -0800</date>
            <delta_ts>2022-02-16 22:37:39 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236747-20220217140015.patch</filename>
            <type>text/plain</type>
            <size>38040</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYzRlNGNmMzA3ZmVl
YjdkMDkzYmIyNDgwY2Q1YThjZjRkYzA1YS4uOTljZGE2MTAzZTBhYWViNTNhNTIyMDUxNmViOGRm
NWM0NGE2YjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAyLTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2aXNpYmxl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorCisyMDIyLTAyLTE2ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIgd2hlbiBjcmVhdGluZyBpbnB1dCBlbGVtZW50IFVBIHNo
YWRvdyB0cmVlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGNyZWF0aW5nIGFuIGlucHV0IGVsZW1lbnQncyBVQSBzaGFkb3cgdHJl
ZSwgd2UgY3VycmVudGx5IHVzZSBhCisgICAgICAgIENoaWxkQ2hhbmdlOjpTb3VyY2UgdmFsdWUg
dGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGlucHV0IGVsZW1lbnQKKyAgICAgICAgaXRzZWxm
IHdhcyBwYXJzZXItIG9yIHNjcmlwdC1pbnNlcnRlZC4gQnV0IHNpbmNlIFVBIHNoYWRvdyB0cmVl
cyBhcmUKKyAgICAgICAgbm90IGV4cG9zZWQgdG8gY29udGVudCwgYW5kIHdlIGRvbid0IGhhdmUg
YW55IGRlcGVuZGVuY3kgb24gdGhlIGV4dHJhCisgICAgICAgIHdvcmsgdGhhdCBpbnNlcnRpbmcg
dXNpbmcgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJIGRvZXMsIHdlIGNhbiB1c2UKKyAgICAgICAg
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyIHVuY29uZGl0aW9uYWxseS4KKworICAgICAgICBM
b2NhbCB0ZXN0aW5nIHNob3dzIHRoaXMgc2NvcmVzIGEgMC4xJSBTcGVlZG9tZXRlciAyIGltcHJv
dmVtZW50LgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBo
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAq
IGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9GaWxl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoK
KwogMjAyMi0wMi0xMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvbnNpc3Rlbmx5IHVzZSBoYXNUYWdOYW1lIGluc3RlYWQgb2YgaXM8PiBpbiBIVE1M
U3RhY2tJdGVtIHRlc3RpbmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMTExNzA0ZmE4MTFhMGE1NGZlNjJkYTZi
NDNiM2UzZTdhZTVjMTllOC4uMjdlYTMyMmQ2ZTNiNGVjNzlkNTRlMmI1NTVhZmViMTNkNjliNmUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50JikKICAgICB9CiB9CiAKLXZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMzE2
LDExICszMTYsMTEgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGEKIAogICAgIGlmIChkb2N1bWVu
dC5zZXR0aW5ncygpLmRhdGVUaW1lSW5wdXRzRWRpdGFibGVDb21wb25lbnRzRW5hYmxlZCgpKSB7
CiAgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCA9IERhdGVUaW1lRWRpdEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgKnRoaXMpOwotICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+YXBwZW5kQ2hpbGQoc291cmNlLCAqbV9kYXRlVGltZUVkaXRFbGVtZW50KTsKKyAgICAg
ICAgZWxlbWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1fZGF0ZVRpbWVFZGl0RWxlbWVudCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byB2YWx1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICB2YWx1ZUNvbnRhaW5lci0+c2V0UHNldWRv
KFNoYWRvd1BzZXVkb0lkczo6d2Via2l0RGF0ZUFuZFRpbWVWYWx1ZSgpKTsKLSAgICAgICAgZWxl
bWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgdmFsdWVDb250
YWluZXIpOworICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCB2YWx1ZUNvbnRh
aW5lcik7CiAgICAgfQogICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiB9CkBAIC0zMzQsNiAr
MzM0LDEwIEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3Vi
dHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9kYXRlVGlt
ZUVkaXRFbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+
KG5vZGUpKQpAQCAtNTc1LDQgKzU3OSw1IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpjbG9zZURhdGVUaW1lQ2hvb3NlcigpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aAppbmRleCA2YTNlM2IzMDliNzFmNWRlMGYyODljYjdhOGEzMGUwNWQwYThlZTgwLi4zZWI2ZDU1
ZjFjYTM5ZjExOWJjMDUyNzVlY2FjMWUwZTVlMWIyNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9p
ZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNM
b2dpYygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApp
bmRleCAyNjk4M2Y4NTRjNzRjMmE3MzE5OTY4NmRhZDJiYzgwMjhlY2M1MzBkLi4wNzczMTI0MzAy
ZWI3OGE2MmM1N2M1NmQ3MGIxNmUyMGNjMDM3OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2
YWx1ZUFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxl
bWVudCgpLT52YWx1ZSgpKS52YWx1ZSgpOwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBib29sKQordm9pZCBDb2xvcklu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0xNDYsOCArMTQ2LDggQEAgdm9pZCBDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eShDb24KICAgICB3cmFwcGVyRWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0Q29sb3JTd2F0Y2hXcmFwcGVyKCkpOwogICAgIGF1dG8gY29sb3JTd2F0Y2ggPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0Q29sb3JTd2F0Y2goKSk7Ci0gICAgd3JhcHBlckVsZW1lbnQt
PmFwcGVuZENoaWxkKHNvdXJjZSwgY29sb3JTd2F0Y2gpOwotICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzb3VyY2UsIHdyYXBwZXJFbGVtZW50KTsKKyAg
ICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCBjb2xvclN3YXRjaCk7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OlBhcnNlciwgd3JhcHBlckVsZW1lbnQpOwogCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA3MTQ5NzgzYWZlMDM1ZmMy
MjA5ZGNjYmM2ODlhOGNjOTUwMjgzNjU2Li45YjU3MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1
MjRmOTQ5MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBAIC02Miw3ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7
CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2Fu
aXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0
ZUV2ZW50KEV2ZW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCBhMjM3N2JjMWYyYjQ2YWE0ZjQ4ODE2ZmMzNzA2MWUwOWE0OWM5NzYyLi40YWQxMzRhYWEy
NjE5MzU5ZjEyMWQ2Mzg2YzBmZDcyOWFjOGRkNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKQEAgLTE3NSw3ICsxNzUsNiBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVu
ZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0KICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlTGlzdC0+ZmlsZXMoKSkK
ICAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIGZpbGUuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMjYzLDE4ICsyNjIsMTcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQo
KS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIEZp
bGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KSk7Ci0gICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNv
dXJjZSwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKIH0KIAogdm9pZCBGaWxlSW5w
dXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1dG8gcm9vdCA9
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTI4
OCw3ICsyODYsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0dHIpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAgaWYgKGF1dG8g
cm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgICAg
IGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4o
KnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxl
bWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6
IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCmluZGV4IDJlZjAyNDRkZDg5MjczYTExMzUyOTVkMTZkYjc5MTZjODJjMDZiZDMuLjdiMmMw
OTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIElj
b24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRpcCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggYmE3NWIwOWNkNzBiZWE0ZGZjMDE2NjFiMjQxOThmNjdlZTVlYjBkOC4uMmNjMDZkMjJiYmZh
MzIxNjU4MjE4YTIzYWIwNTViN2I1MzA1NjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xMzYsOCArMTM2LDggQEAgSFRNTElucHV0RWxlbWVudDo6SFRN
TElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KICNlbmRpZgogICAgICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNl
bWVudChmYWxzZSkKIHsKLSAgICAvLyBtX2lucHV0VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVu
IGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8gYXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNz
YXJpbHkgYSB0ZXh0IGlucHV0VHlwZSBhbmQKLSAgICAvLyBpdHMgc2hhZG93IHN1YnRyZWUsIGp1
c3QgdG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkg
dGhlIHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KKyAgICAvLyBtX2lucHV0
VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8g
YXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNzYXJpbHkgYSB0ZXh0IGlucHV0VHlwZSwKKyAgICAv
LyBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0
IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCiAgICAgaWYgKCFj
cmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVU
ZXh0KCp0aGlzKTsKIApAQCAtMTQ3LDE0ICsxNDcsNyBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1M
SW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bQogCiBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICBib29sIHNob3VsZENyZWF0
ZVNoYWRvd1Jvb3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7Ci0gICAgUmVmPEhUTUxJbnB1dEVs
ZW1lbnQ+IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7Ci0gICAgaWYgKCFzaG91bGRD
cmVhdGVTaGFkb3dSb290TGF6aWx5KSB7Ci0gICAgICAgIEFTU0VSVChpbnB1dEVsZW1lbnQtPm1f
aW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+
Y3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudDsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIp
KTsKIH0KIAogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxv
YWRlcigpCkBAIC0xNjQsMTIgKzE1Nyw2IEBAIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxl
bWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQogICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0K
IAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCkKLXsKLSAgICBSZWY8SW5wdXRUeXBlPiBwcm90ZWN0
ZWRJbnB1dFR5cGUoKm1faW5wdXRUeXBlKTsKLSAgICBwcm90ZWN0ZWRJbnB1dFR5cGUtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkobV9wYXJz
aW5nSW5Qcm9ncmVzcyA/IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciA6IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OkFQSSwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7Ci19Ci0KIEhUTUxJ
bnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKIHsKICAgICBpZiAobmVlZHNTdXNwZW5z
aW9uQ2FsbGJhY2soKSkKQEAgLTU4MCwxMCArNTY3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1lbnQoKTsKIAog
ICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUt
Pm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eUlmTmVlZGVkKGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogCiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRp
dHkoKTsKIApAQCAtNzM2LDE5ICs3MjAsMTIgQEAgaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6aW5pdGlhbGl6ZUlucHV0VHlwZSgpCiAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIpOwogICAgIGlmICh0eXBlLmlz
TnVsbCgpKSB7CiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0
aGlzKTsKLSAgICAgICAgQVNTRVJUKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7
Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogICAgICAg
ICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9oYXNUeXBlID0gdHJ1ZTsKICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6
Y3JlYXRlKCp0aGlzLCB0eXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3Vi
dHJlZSgpKSB7Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgp
OwotICAgIH0KICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgIHJlZ2lz
dGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICBydW5Qb3N0VHlwZVVwZGF0
ZVRhc2tzKCk7CkBAIC0xNTk5LDEwICsxNTc2LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpk
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOwogICAgIGlmIChpc0luVHJlZVNjb3BlKCkgJiYgIWZv
cm0oKSkKICAgICAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7Ci0jaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCi0gICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgbV9oYXNOb25FbXB0eUxpc3Qp
Ci0gICAgICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKTsKLSNlbmRpZgorICAgIG1faW5wdXRU
eXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5SWZOZWVkZWQoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiB9CiAKIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlw
ZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggODJhZTcxZDUwYmU4YWRkYTgzNDNjMDc4MTIwMzg2
ODI4YzM1Mzk5MS4uMmZiMzgwMGYzYTNkMWU3ZmNkNTEwZjJkOTEyNDY0ODUwN2EyYTk4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3MSw4ICszNzEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCi0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7
Ci0KICAgICBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXND
dXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNh
YmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFl
MDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uZTIxMGMxYmYzMTIxMWQzZjkzMzFlYmY4OTAyNzll
YzkyODkyY2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbm5lclRleHRFbGVt
ZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGF1dG8gaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5lclRleHQtPmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vdExpbmVCcmVhayhVQ2hhciBj
aCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBjaCAhPSBjYXJyaWFnZVJldHVy
bjsgfQpAQCAtMzY5LDYgKzM3MSw3IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2li
bGVQb3NpdGlvbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgoaW50IGluZGV4KSBjb25zdAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkp
OwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJU
ZXh0RWxlbWVudCgpLmdldCgpLCBpbmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGIwNTM2NzNhNzQ3ZTJjNWJmYmVhOGQwMmJiOTFjZjk1
MTBmNDc3ZjguLjkyZmVlMzlmMzUyOWIxOTJkYmY2Mjc2YTYxYTIwNTMzMGRkMjZhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBib29sKQordm9pZCBJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkKIHsKIH0KIApAQCAtMTEyNSw0ICsxMTI1LDE0IEBAIFN0cmluZyBJbnB1dFR5
cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+
dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChib29sIGlzSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmxlKQoreworICAgIGlmICghbmVlZHNTaGFkb3dTdWJ0cmVlKCkgfHwgbV9jcmVh
dGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOworICAgIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCA9IHRydWU7CisgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDE1NzljYTMyYzc5YjY3ZTAzOTE4OTA5M2I2ZGQz
NzU0YTk5ZjNiNGQuLjMyOTlkMDgzYmRjZTdkMzQyMWEwNjU1NmIwOTZjNGNhYWEyNmFiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMzA2LDcgKzMwNiw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCk7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SWZOZWVkZWQoYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0
cmVlKCk7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNDA3LDEyICs0MDgsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQu
Z2V0KCk7IH0KICAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogICAgIERlY2ltYWwgcGFyc2VU
b051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlZFNoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJ
Zk5lZWRlZDsgfQogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERv
d24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJv
b2wgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkIHsgZmFsc2UgfTsKICAgICAvLyBtX2Vs
ZW1lbnQgaXMgbnVsbCBpZiB0aGlzIElucHV0VHlwZSBpcyBubyBsb25nZXIgYXNzb2NpYXRlZCB3
aXRoIGFuIGVsZW1lbnQgKGVpdGhlciB0aGUgZWxlbWVudCBkaWVkIG9yIGNoYW5nZWQgaW5wdXQg
dHlwZSkuCiAgICAgV2Vha1B0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMwZmJhODk0YTlmYjFiNDI1
Yjg5YWM0ZjEzOWE2NGZjNWQ2MDExMDMuLjIyZWY2MDY5NDViMTg5NDhhYTBiMzU1ZmUxODQ5ZGQ2
YTEwZDhhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTI1
Myw3ICsyNTMsMTAgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2
aXNpYmxlVmFsdWUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIHJldHVy
biBsb2NhbGl6ZVZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgYXV0byB2YWx1ZSA9IGVs
ZW1lbnQoKS0+dmFsdWUoKTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgcmV0dXJuIGxvY2FsaXplVmFsdWUodmFsdWUpOwogfQogCiBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZp
c2libGVWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggYjRhYmYyOWY3MmI2ZjVkYTEwZmY3ODAwMWMzYmQ5YTI1Nzc5ZjJjNC4uMTU3ODBiNzBjNjE5
ZTZiYmVkZmQ3OGM1ZDBhZDdhNDJjOTU5NzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmIGV2
ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChlbGVtZW50KCkt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MSwxMCAr
MTU1LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNl
RXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChl
bGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisg
ICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlk
ZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShU
T1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgp
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIg
KzE5MiwxOCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNv
bnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAg
ICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7
CiB9CiAKIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQor
ICAgICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKKwogICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU2hv
dWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIApAQCAtMjQxLDcgKzI1Niw3IEBAIGF1dG8g
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkg
LT4gU2hvdWxkQ2FsbEJhc2VFCiAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVy
OjpZZXM7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
QEAgLTI1MCwxNSArMjY1LDE5IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29uCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gdHJhY2sgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICB0cmFjay0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0U2xpZGVyUnVubmFibGVUcmFjaygpKTsKLSAgICB0cmFjay0+
YXBwZW5kQ2hpbGQoc291cmNlLCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCkp
OworICAgIHRyYWNrLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSk7CiAgICAg
YXV0byBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc291cmNlLCB0cmFjayk7Ci0gICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgY29udGFpbmVy
KTsKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgdHJhY2spOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIsIGNvbnRhaW5lcik7CiB9CiAKIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xp
ZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAg
IGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkp
OyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290
KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsyOTYsNyBAQCBI
VE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiAK
IFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVt
ZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgp
KTsKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRo
dW1iCiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRN
TEVsZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszNDIsOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNl
dFZhbHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAgICAgaWYgKGNyZWF0
ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJF
bGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRy
b2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkpCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVl
KCkgY29uc3QKQEAgLTM2OCw3ICszOTAsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlz
dE1heUhhdmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwog
ICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVy
VHJhY2tFbGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkK
KyAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVy
ZXIoKSkKICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggNzNlZDk0
Y2ZlMTMxMGFmYjI5MWIwZjFlZDY1NzliMzRlNjQwMzVkZi4uMjk2NGM2NGU5ZDNkZjQwZmU5NWJi
NTcyYjkxNzYzZDQzZmVjN2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQo
TW91c2VFdmVudCYpIGZpbmFsOwogICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JikgZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29u
c3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wg
c2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcAppbmRleCA4NDVkMTRmN2ZkYmJmNTlhN2NkNTVlNjhjZDIwZGE2NGJlZGNhMDIzLi5mNzBi
MTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElu
cHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSwgYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgU2VhcmNoSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCiB7CiAgICAgQVNTRVJUKG5lZWRz
U2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7CiAgICAgQVNT
RVJUKCFtX2NhbmNlbEJ1dHRvbik7CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoc291cmNlLCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5l
ciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFw
cGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDMzMTgzM2RkNmQ4NzJkZDA3MGY1N2U4
NDdlMWNhMDRlMzEyNDgyZWEuLjIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRiOGVm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkg
ZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKSBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDVm
NzRkZWFiNzFkMWM3ZTRlNWNmZTQxZDE2ZDA1OGY0YjAxYmY1ZDEuLmFhNjk2ZmU0YmQ5Mjk5MWMw
NmU0NWJjMzEyNGU4N2E4NjhmNDI0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKQEAgLTEwNyw2ICsxMDcsMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6
aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSkgeworICAgICAgICAvLyBpc0VtcHR5VmFsdWUgaXMgb25seSBjYWxsZWQgYnkgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkgdG8KKyAgICAgICAgLy8gZW5zdXJlIHdlIHJlc3R5
bGUgaWYgbmVlZGVkLCBzbyB0aGUgcmV0dXJuIHZhbHVlIGRvZXNuJ3QgbWF0dGVyIGlmCisgICAg
ICAgIC8vIHRoZSB0aGUgc2hhZG93IHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIHNpbmNl
IGl0IGRvZXNuJ3QgbmVlZAorICAgICAgICAvLyB0byBiZSByZXN0eWxlZC4KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7CiAgICAgQVNTRVJUKGlubmVyVGV4dCk7CiAKQEAgLTIyMSw2ICsyMjksOCBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChF
dmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAobV9pbm5l
clNwaW5CdXR0b24pIHsKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmZvcndhcmRFdmVudChl
dmVudCk7CiAgICAgICAgIGlmIChldmVudC5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMjMxLDEwICsy
NDEsOCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVu
dCkKICAgICBib29sIGlzQmx1ckV2ZW50ID0gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQ7CiAgICAgaWYgKGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAg
Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7Ci0gICAgaWYgKGV2ZW50LmlzTW91c2VFdmVu
dCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkgewotICAgICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKKyAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8
IGlzQmx1ckV2ZW50KQogICAgICAgICBlbGVtZW50KCktPmZvcndhcmRFdmVudChldmVudCk7Ci0g
ICAgfQogfQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudERpZEJsdXIoKQpAQCAt
MzE2LDExICszMjQsMTIgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBz
TG9ja0luZGljYXRvcigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24o
KS5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKmVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKIHsKICAgICBBU1NFUlQobmVlZHNT
aGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVt
ZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFT
U0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSwxMiArMzQwLDE1IEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgp
OwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3BpbkJ1
dHRvbigpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hv
dWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0g
c2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IG5l
ZWRzQ29udGFpbmVyKCk7CisgICAgYm9vbCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24gPSB0aGlz
LT5zaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKTsKKyAgICBib29sIGhhc0RhdGFMaXN0ID0gZWxl
bWVudCgpLT5saXN0KCk7CisgICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2ZVNw
aW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IHNob3VsZERyYXdBdXRv
RmlsbEJ1dHRvbiB8fCBoYXNEYXRhTGlzdCB8fCBuZWVkc0NvbnRhaW5lcigpOwogCiAgICAgbV9p
bm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7
CiAKICAgICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsKLSAgICAgICAgZWxlbWVudCgpLT51c2Vy
QWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgKm1faW5uZXJUZXh0KTsKKyAg
ICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1faW5uZXJUZXh0KTsKICAg
ICAgICAgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zNDYsNyArMzU4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKIAogICAgIGlmIChzaG91
bGRIYXZlU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbiA9IFNwaW5CdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzKTsKLSAgICAgICAgbV9jb250YWluZXIt
PmFwcGVuZENoaWxkKHNvdXJjZSwgKm1faW5uZXJTcGluQnV0dG9uKTsKKyAgICAgICAgbV9jb250
YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBh
cnNlciwgKm1faW5uZXJTcGluQnV0dG9uKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkSGF2ZUNh
cHNMb2NrSW5kaWNhdG9yKSB7CkBAIC0zNTYsOSArMzY4LDExIEBAIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5CiAgICAgICAgIGJvb2wgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+
c2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yKCk7CiAgICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0
b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzaG91bGREcmF3
Q2Fwc0xvY2tJbmRpY2F0b3IgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsK
IAotICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc291cmNlLCAqbV9jYXBzTG9ja0lu
ZGljYXRvcik7CisgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2NhcHNMb2NrSW5kaWNhdG9yKTsKICAg
ICB9CisKICAgICB1cGRhdGVBdXRvRmlsbEJ1dHRvbigpOworICAgIGRhdGFMaXN0TWF5SGF2ZUNo
YW5nZWQoKTsKIH0KIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6Y29udGFpbmVy
RWxlbWVudCgpIGNvbnN0CkBAIC0zNzMsNyArMzg3LDYgQEAgSFRNTEVsZW1lbnQqIFRleHRGaWVs
ZElucHV0VHlwZTo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogCiBSZWZQdHI8VGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnQo
KSBjb25zdAogewotICAgIEFTU0VSVChtX2lubmVyVGV4dCk7CiAgICAgcmV0dXJuIG1faW5uZXJU
ZXh0OwogfQogCkBAIC00MjUsNiArNDM4LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRT
aGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faW5u
ZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUo
KTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQzMyw2ICs0NDksOSBA
QCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogCiB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQogeworICAgIGlmICgh
Y3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNl
Q2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNDU0LDgg
KzQ3Myw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
IGNvbnN0CiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlRGF0YUxpc3REcm9wZG93bklu
ZGljYXRvcigpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpOwot
ICAgIGlmICghbV9jb250YWluZXIpCi0gICAgICAgIGNyZWF0ZUNvbnRhaW5lcigpOworICAgIEFT
U0VSVChtX2NvbnRhaW5lcik7CiAKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxs
b3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqbV9jb250YWluZXIpOwogICAgIG1fZGF0YUxpc3REcm9w
ZG93bkluZGljYXRvciA9IERhdGFMaXN0QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKSwgKnRoaXMpOwpAQCAtNjE2LDkgKzYzNCwxNCBAQCBib29sIFRleHRGaWVsZElu
cHV0VHlwZTo6c2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKQogCiB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgp
KTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIXN1cHBvcnRzUGxhY2Vob2xkZXIoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9
IGVsZW1lbnQoKS0+cGxhY2Vob2xkZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1w
dHkoKSkgewogICAgICAgICBpZiAobV9wbGFjZWhvbGRlcikgewpAQCAtNzA0LDYgKzcyNywxMCBA
QCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBVcCgpCiB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmICghZWxlbWVudCgpLT5mb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gVXBkYXRlIHRoZSByZW5kZXJlciB2YWx1ZSBpZiB0
aGUgZm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpIGZsYWcgaXMgZmFsc2UuCiAgICAg
ICAgIC8vIEl0IHByb3RlY3RzIGFuIHVuYWNjZXB0YWJsZSByZW5kZXJlciB2YWx1ZSBmcm9tIGJl
aW5nIG92ZXJ3cml0dGVuIHdpdGggdGhlIERPTSB2YWx1ZS4KQEAgLTczNSw2ICs3NjIsNyBAQCBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3BpbkJ1dHRvblJlc3BvbmRUb1doZWVsRXZl
bnRzKCkKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0
b3IoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgaWYgKGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9IGVsZW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9u
VAogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogewor
ICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hh
bmdlZCgpOwogCiAgICAgaWYgKHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpKSB7CiAgICAgICAg
IGlmICghbV9jb250YWluZXIpCiAgICAgICAgICAgICBjcmVhdGVDb250YWluZXIoKTsKIAotICAg
ICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICAgICAgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9G
aWxsQnV0dG9uVHlwZSA9IGVsZW1lbnQoKS0+YXV0b0ZpbGxCdXR0b25UeXBlKCk7CiAgICAgICAg
IGlmICghbV9hdXRvRmlsbEJ1dHRvbikKICAgICAgICAgICAgIGNyZWF0ZUF1dG9GaWxsQnV0dG9u
KGF1dG9GaWxsQnV0dG9uVHlwZSk7CkBAIC04NDYsNiArODc4LDkgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NhY2hlZFN1Z2dlc3Rp
b25zID0geyB9OwogCiAgICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCBiNTFhOTdmMGJkMDM5MTQw
MWFhOWZiMDVkY2M5YTdmZTE4MDA1ZWFhLi41YTI0MzI3NjVmMWNkNjhhNDYxYTg4NTM1MzI1ODI4
NWZlNDk5ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZHNDb250YWluZXIoKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZSwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZWRT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="479315"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452318</attachid>
            <date>2022-02-16 22:23:53 -0800</date>
            <delta_ts>2022-02-16 22:30:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236747-20220217172352.patch</filename>
            <type>text/plain</type>
            <size>38174</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYzRlNGNmMzA3ZmVl
YjdkMDkzYmIyNDgwY2Q1YThjZjRkYzA1YS4uOTljZGE2MTAzZTBhYWViNTNhNTIyMDUxNmViOGRm
NWM0NGE2YjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAyLTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2aXNpYmxl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorCisyMDIyLTAyLTE2ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIgd2hlbiBjcmVhdGluZyBpbnB1dCBlbGVtZW50IFVBIHNo
YWRvdyB0cmVlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGNyZWF0aW5nIGFuIGlucHV0IGVsZW1lbnQncyBVQSBzaGFkb3cgdHJl
ZSwgd2UgY3VycmVudGx5IHVzZSBhCisgICAgICAgIENoaWxkQ2hhbmdlOjpTb3VyY2UgdmFsdWUg
dGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGlucHV0IGVsZW1lbnQKKyAgICAgICAgaXRzZWxm
IHdhcyBwYXJzZXItIG9yIHNjcmlwdC1pbnNlcnRlZC4gQnV0IHNpbmNlIFVBIHNoYWRvdyB0cmVl
cyBhcmUKKyAgICAgICAgbm90IGV4cG9zZWQgdG8gY29udGVudCwgYW5kIHdlIGRvbid0IGhhdmUg
YW55IGRlcGVuZGVuY3kgb24gdGhlIGV4dHJhCisgICAgICAgIHdvcmsgdGhhdCBpbnNlcnRpbmcg
dXNpbmcgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJIGRvZXMsIHdlIGNhbiB1c2UKKyAgICAgICAg
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyIHVuY29uZGl0aW9uYWxseS4KKworICAgICAgICBM
b2NhbCB0ZXN0aW5nIHNob3dzIHRoaXMgc2NvcmVzIGEgMC4xJSBTcGVlZG9tZXRlciAyIGltcHJv
dmVtZW50LgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBo
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAq
IGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9GaWxl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoK
KwogMjAyMi0wMi0xMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvbnNpc3Rlbmx5IHVzZSBoYXNUYWdOYW1lIGluc3RlYWQgb2YgaXM8PiBpbiBIVE1M
U3RhY2tJdGVtIHRlc3RpbmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMTExNzA0ZmE4MTFhMGE1NGZlNjJkYTZi
NDNiM2UzZTdhZTVjMTllOC4uMjdlYTMyMmQ2ZTNiNGVjNzlkNTRlMmI1NTVhZmViMTNkNjliNmUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50JikKICAgICB9CiB9CiAKLXZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMzE2
LDExICszMTYsMTEgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGEKIAogICAgIGlmIChkb2N1bWVu
dC5zZXR0aW5ncygpLmRhdGVUaW1lSW5wdXRzRWRpdGFibGVDb21wb25lbnRzRW5hYmxlZCgpKSB7
CiAgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCA9IERhdGVUaW1lRWRpdEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgKnRoaXMpOwotICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+YXBwZW5kQ2hpbGQoc291cmNlLCAqbV9kYXRlVGltZUVkaXRFbGVtZW50KTsKKyAgICAg
ICAgZWxlbWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1fZGF0ZVRpbWVFZGl0RWxlbWVudCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byB2YWx1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICB2YWx1ZUNvbnRhaW5lci0+c2V0UHNldWRv
KFNoYWRvd1BzZXVkb0lkczo6d2Via2l0RGF0ZUFuZFRpbWVWYWx1ZSgpKTsKLSAgICAgICAgZWxl
bWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgdmFsdWVDb250
YWluZXIpOworICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCB2YWx1ZUNvbnRh
aW5lcik7CiAgICAgfQogICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiB9CkBAIC0zMzQsNiAr
MzM0LDEwIEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3Vi
dHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9kYXRlVGlt
ZUVkaXRFbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+
KG5vZGUpKQpAQCAtNTc1LDQgKzU3OSw1IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpjbG9zZURhdGVUaW1lQ2hvb3NlcigpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aAppbmRleCA2YTNlM2IzMDliNzFmNWRlMGYyODljYjdhOGEzMGUwNWQwYThlZTgwLi4zZWI2ZDU1
ZjFjYTM5ZjExOWJjMDUyNzVlY2FjMWUwZTVlMWIyNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9p
ZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNM
b2dpYygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApp
bmRleCAyNjk4M2Y4NTRjNzRjMmE3MzE5OTY4NmRhZDJiYzgwMjhlY2M1MzBkLi4wNzczMTI0MzAy
ZWI3OGE2MmM1N2M1NmQ3MGIxNmUyMGNjMDM3OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2
YWx1ZUFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxl
bWVudCgpLT52YWx1ZSgpKS52YWx1ZSgpOwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBib29sKQordm9pZCBDb2xvcklu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0xNDYsOCArMTQ2LDggQEAgdm9pZCBDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eShDb24KICAgICB3cmFwcGVyRWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0Q29sb3JTd2F0Y2hXcmFwcGVyKCkpOwogICAgIGF1dG8gY29sb3JTd2F0Y2ggPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0Q29sb3JTd2F0Y2goKSk7Ci0gICAgd3JhcHBlckVsZW1lbnQt
PmFwcGVuZENoaWxkKHNvdXJjZSwgY29sb3JTd2F0Y2gpOwotICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzb3VyY2UsIHdyYXBwZXJFbGVtZW50KTsKKyAg
ICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCBjb2xvclN3YXRjaCk7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OlBhcnNlciwgd3JhcHBlckVsZW1lbnQpOwogCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA3MTQ5NzgzYWZlMDM1ZmMy
MjA5ZGNjYmM2ODlhOGNjOTUwMjgzNjU2Li45YjU3MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1
MjRmOTQ5MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBAIC02Miw3ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7
CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2Fu
aXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0
ZUV2ZW50KEV2ZW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCBhMjM3N2JjMWYyYjQ2YWE0ZjQ4ODE2ZmMzNzA2MWUwOWE0OWM5NzYyLi40YWQxMzRhYWEy
NjE5MzU5ZjEyMWQ2Mzg2YzBmZDcyOWFjOGRkNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKQEAgLTE3NSw3ICsxNzUsNiBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVu
ZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0KICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlTGlzdC0+ZmlsZXMoKSkK
ICAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIGZpbGUuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMjYzLDE4ICsyNjIsMTcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQo
KS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIEZp
bGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KSk7Ci0gICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNv
dXJjZSwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKIH0KIAogdm9pZCBGaWxlSW5w
dXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1dG8gcm9vdCA9
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTI4
OCw3ICsyODYsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0dHIpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAgaWYgKGF1dG8g
cm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgICAg
IGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4o
KnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxl
bWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6
IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCmluZGV4IDJlZjAyNDRkZDg5MjczYTExMzUyOTVkMTZkYjc5MTZjODJjMDZiZDMuLjdiMmMw
OTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIElj
b24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRpcCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggYmE3NWIwOWNkNzBiZWE0ZGZjMDE2NjFiMjQxOThmNjdlZTVlYjBkOC4uMmNjMDZkMjJiYmZh
MzIxNjU4MjE4YTIzYWIwNTViN2I1MzA1NjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xMzYsOCArMTM2LDggQEAgSFRNTElucHV0RWxlbWVudDo6SFRN
TElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KICNlbmRpZgogICAgICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNl
bWVudChmYWxzZSkKIHsKLSAgICAvLyBtX2lucHV0VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVu
IGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8gYXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNz
YXJpbHkgYSB0ZXh0IGlucHV0VHlwZSBhbmQKLSAgICAvLyBpdHMgc2hhZG93IHN1YnRyZWUsIGp1
c3QgdG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkg
dGhlIHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KKyAgICAvLyBtX2lucHV0
VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8g
YXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNzYXJpbHkgYSB0ZXh0IGlucHV0VHlwZSwKKyAgICAv
LyBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0
IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCiAgICAgaWYgKCFj
cmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVU
ZXh0KCp0aGlzKTsKIApAQCAtMTQ3LDE0ICsxNDcsNyBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1M
SW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bQogCiBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICBib29sIHNob3VsZENyZWF0
ZVNoYWRvd1Jvb3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7Ci0gICAgUmVmPEhUTUxJbnB1dEVs
ZW1lbnQ+IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7Ci0gICAgaWYgKCFzaG91bGRD
cmVhdGVTaGFkb3dSb290TGF6aWx5KSB7Ci0gICAgICAgIEFTU0VSVChpbnB1dEVsZW1lbnQtPm1f
aW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+
Y3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudDsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIp
KTsKIH0KIAogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxv
YWRlcigpCkBAIC0xNjQsMTIgKzE1Nyw2IEBAIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxl
bWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQogICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0K
IAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCkKLXsKLSAgICBSZWY8SW5wdXRUeXBlPiBwcm90ZWN0
ZWRJbnB1dFR5cGUoKm1faW5wdXRUeXBlKTsKLSAgICBwcm90ZWN0ZWRJbnB1dFR5cGUtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkobV9wYXJz
aW5nSW5Qcm9ncmVzcyA/IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciA6IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OkFQSSwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7Ci19Ci0KIEhUTUxJ
bnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKIHsKICAgICBpZiAobmVlZHNTdXNwZW5z
aW9uQ2FsbGJhY2soKSkKQEAgLTU4MCwxMCArNTY3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1lbnQoKTsKIAog
ICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUt
Pm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eUlmTmVlZGVkKGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogCiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRp
dHkoKTsKIApAQCAtNzM2LDE5ICs3MjAsMTIgQEAgaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6aW5pdGlhbGl6ZUlucHV0VHlwZSgpCiAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIpOwogICAgIGlmICh0eXBlLmlz
TnVsbCgpKSB7CiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0
aGlzKTsKLSAgICAgICAgQVNTRVJUKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7
Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogICAgICAg
ICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9oYXNUeXBlID0gdHJ1ZTsKICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6
Y3JlYXRlKCp0aGlzLCB0eXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3Vi
dHJlZSgpKSB7Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgp
OwotICAgIH0KICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgIHJlZ2lz
dGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICBydW5Qb3N0VHlwZVVwZGF0
ZVRhc2tzKCk7CkBAIC0xNTk5LDEwICsxNTc2LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpk
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOwogICAgIGlmIChpc0luVHJlZVNjb3BlKCkgJiYgIWZv
cm0oKSkKICAgICAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7Ci0jaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCi0gICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgbV9oYXNOb25FbXB0eUxpc3Qp
Ci0gICAgICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKTsKLSNlbmRpZgorICAgIG1faW5wdXRU
eXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5SWZOZWVkZWQoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiB9CiAKIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlw
ZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggODJhZTcxZDUwYmU4YWRkYTgzNDNjMDc4MTIwMzg2
ODI4YzM1Mzk5MS4uMmZiMzgwMGYzYTNkMWU3ZmNkNTEwZjJkOTEyNDY0ODUwN2EyYTk4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3MSw4ICszNzEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCi0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7
Ci0KICAgICBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXND
dXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNh
YmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFl
MDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uZTIxMGMxYmYzMTIxMWQzZjkzMzFlYmY4OTAyNzll
YzkyODkyY2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbm5lclRleHRFbGVt
ZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGF1dG8gaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5lclRleHQtPmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vdExpbmVCcmVhayhVQ2hhciBj
aCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBjaCAhPSBjYXJyaWFnZVJldHVy
bjsgfQpAQCAtMzY5LDYgKzM3MSw3IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2li
bGVQb3NpdGlvbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgoaW50IGluZGV4KSBjb25zdAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkp
OwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJU
ZXh0RWxlbWVudCgpLmdldCgpLCBpbmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGIwNTM2NzNhNzQ3ZTJjNWJmYmVhOGQwMmJiOTFjZjk1
MTBmNDc3ZjguLjkyZmVlMzlmMzUyOWIxOTJkYmY2Mjc2YTYxYTIwNTMzMGRkMjZhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBib29sKQordm9pZCBJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkKIHsKIH0KIApAQCAtMTEyNSw0ICsxMTI1LDE0IEBAIFN0cmluZyBJbnB1dFR5
cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+
dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChib29sIGlzSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmxlKQoreworICAgIGlmICghbmVlZHNTaGFkb3dTdWJ0cmVlKCkgfHwgbV9jcmVh
dGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOworICAgIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCA9IHRydWU7CisgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDE1NzljYTMyYzc5YjY3ZTAzOTE4OTA5M2I2ZGQz
NzU0YTk5ZjNiNGQuLjMyOTlkMDgzYmRjZTdkMzQyMWEwNjU1NmIwOTZjNGNhYWEyNmFiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMzA2LDcgKzMwNiw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCk7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SWZOZWVkZWQoYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0
cmVlKCk7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNDA3LDEyICs0MDgsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQu
Z2V0KCk7IH0KICAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogICAgIERlY2ltYWwgcGFyc2VU
b051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlZFNoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJ
Zk5lZWRlZDsgfQogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERv
d24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJv
b2wgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkIHsgZmFsc2UgfTsKICAgICAvLyBtX2Vs
ZW1lbnQgaXMgbnVsbCBpZiB0aGlzIElucHV0VHlwZSBpcyBubyBsb25nZXIgYXNzb2NpYXRlZCB3
aXRoIGFuIGVsZW1lbnQgKGVpdGhlciB0aGUgZWxlbWVudCBkaWVkIG9yIGNoYW5nZWQgaW5wdXQg
dHlwZSkuCiAgICAgV2Vha1B0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMwZmJhODk0YTlmYjFiNDI1
Yjg5YWM0ZjEzOWE2NGZjNWQ2MDExMDMuLjIyZWY2MDY5NDViMTg5NDhhYTBiMzU1ZmUxODQ5ZGQ2
YTEwZDhhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTI1
Myw3ICsyNTMsMTAgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2
aXNpYmxlVmFsdWUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIHJldHVy
biBsb2NhbGl6ZVZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgYXV0byB2YWx1ZSA9IGVs
ZW1lbnQoKS0+dmFsdWUoKTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgcmV0dXJuIGxvY2FsaXplVmFsdWUodmFsdWUpOwogfQogCiBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZp
c2libGVWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggYjRhYmYyOWY3MmI2ZjVkYTEwZmY3ODAwMWMzYmQ5YTI1Nzc5ZjJjNC4uMTU3ODBiNzBjNjE5
ZTZiYmVkZmQ3OGM1ZDBhZDdhNDJjOTU5NzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmIGV2
ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChlbGVtZW50KCkt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MSwxMCAr
MTU1LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNl
RXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChl
bGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisg
ICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlk
ZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShU
T1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgp
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIg
KzE5MiwxOCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNv
bnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAg
ICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7
CiB9CiAKIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQor
ICAgICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKKwogICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU2hv
dWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIApAQCAtMjQxLDcgKzI1Niw3IEBAIGF1dG8g
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkg
LT4gU2hvdWxkQ2FsbEJhc2VFCiAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVy
OjpZZXM7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
QEAgLTI1MCwxNSArMjY1LDE5IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29uCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gdHJhY2sgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICB0cmFjay0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0U2xpZGVyUnVubmFibGVUcmFjaygpKTsKLSAgICB0cmFjay0+
YXBwZW5kQ2hpbGQoc291cmNlLCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCkp
OworICAgIHRyYWNrLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSk7CiAgICAg
YXV0byBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc291cmNlLCB0cmFjayk7Ci0gICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgY29udGFpbmVy
KTsKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgdHJhY2spOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIsIGNvbnRhaW5lcik7CiB9CiAKIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xp
ZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAg
IGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkp
OyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290
KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsyOTYsNyBAQCBI
VE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiAK
IFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVt
ZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgp
KTsKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRo
dW1iCiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRN
TEVsZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszNDIsOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNl
dFZhbHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAgICAgaWYgKGNyZWF0
ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJF
bGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRy
b2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkpCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVl
KCkgY29uc3QKQEAgLTM2OCw3ICszOTAsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlz
dE1heUhhdmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwog
ICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVy
VHJhY2tFbGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkK
KyAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVy
ZXIoKSkKICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggNzNlZDk0
Y2ZlMTMxMGFmYjI5MWIwZjFlZDY1NzliMzRlNjQwMzVkZi4uMjk2NGM2NGU5ZDNkZjQwZmU5NWJi
NTcyYjkxNzYzZDQzZmVjN2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQo
TW91c2VFdmVudCYpIGZpbmFsOwogICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JikgZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29u
c3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wg
c2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcAppbmRleCA4NDVkMTRmN2ZkYmJmNTlhN2NkNTVlNjhjZDIwZGE2NGJlZGNhMDIzLi5mNzBi
MTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElu
cHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSwgYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgU2VhcmNoSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCiB7CiAgICAgQVNTRVJUKG5lZWRz
U2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7CiAgICAgQVNT
RVJUKCFtX2NhbmNlbEJ1dHRvbik7CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoc291cmNlLCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5l
ciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFw
cGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDMzMTgzM2RkNmQ4NzJkZDA3MGY1N2U4
NDdlMWNhMDRlMzEyNDgyZWEuLjIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRiOGVm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkg
ZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKSBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDVm
NzRkZWFiNzFkMWM3ZTRlNWNmZTQxZDE2ZDA1OGY0YjAxYmY1ZDEuLjcwODJiZGU3NzA2OWJlOTY2
NjMwNTQ0YTYwM2M3NzRhODZhNGY1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKQEAgLTEwNyw2ICsxMDcsMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6
aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSkgeworICAgICAgICAvLyBpc0VtcHR5VmFsdWUgaXMgb25seSBjYWxsZWQgYnkgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkgdG8KKyAgICAgICAgLy8gZW5zdXJlIHdlIHJlc3R5
bGUgaWYgbmVlZGVkLCBzbyB0aGUgcmV0dXJuIHZhbHVlIGRvZXNuJ3QgbWF0dGVyIGlmCisgICAg
ICAgIC8vIHRoZSB0aGUgc2hhZG93IHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIHNpbmNl
IGl0IGRvZXNuJ3QgbmVlZAorICAgICAgICAvLyB0byBiZSByZXN0eWxlZC4KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7CiAgICAgQVNTRVJUKGlubmVyVGV4dCk7CiAKQEAgLTIyMSw2ICsyMjksOCBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChF
dmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAobV9pbm5l
clNwaW5CdXR0b24pIHsKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmZvcndhcmRFdmVudChl
dmVudCk7CiAgICAgICAgIGlmIChldmVudC5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMjMxLDEwICsy
NDEsOCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVu
dCkKICAgICBib29sIGlzQmx1ckV2ZW50ID0gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQ7CiAgICAgaWYgKGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAg
Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7Ci0gICAgaWYgKGV2ZW50LmlzTW91c2VFdmVu
dCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkgewotICAgICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKKyAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8
IGlzQmx1ckV2ZW50KQogICAgICAgICBlbGVtZW50KCktPmZvcndhcmRFdmVudChldmVudCk7Ci0g
ICAgfQogfQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudERpZEJsdXIoKQpAQCAt
MzE2LDExICszMjQsMTIgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBz
TG9ja0luZGljYXRvcigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24o
KS5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKmVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKIHsKICAgICBBU1NFUlQobmVlZHNT
aGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVt
ZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFT
U0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSwxMiArMzQwLDIxIEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgp
OwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3BpbkJ1
dHRvbigpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hv
dWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0g
c2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IG5l
ZWRzQ29udGFpbmVyKCk7CisgICAgYm9vbCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24gPSB0aGlz
LT5zaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyAgICBib29sIGhhc0RhdGFMaXN0ID0gZWxlbWVudCgpLT5saXN0KCk7CisjZW5kaWYKKyAg
ICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRI
YXZlQ2Fwc0xvY2tJbmRpY2F0b3IgfHwgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIHx8IGhhc0RhdGFMaXN0CisjZW5kaWYKKyAg
ICAgICAgfHwgbmVlZHNDb250YWluZXIoKTsKIAogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGlzSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmxlKTsKKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogCiAgICAgaWYgKCFjcmVhdGVz
Q29udGFpbmVyKSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5h
cHBlbmRDaGlsZChzb3VyY2UsICptX2lubmVyVGV4dCk7CisgICAgICAgIGVsZW1lbnQoKS0+dXNl
ckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZTo6U291cmNlOjpQYXJzZXIsICptX2lubmVyVGV4dCk7CiAgICAgICAgIHVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzQ2LDcgKzM2NCw3IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5CiAKICAgICBpZiAoc2hvdWxkSGF2ZVNwaW5CdXR0b24pIHsK
ICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCAqdGhpcyk7Ci0gICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChzb3VyY2Us
ICptX2lubmVyU3BpbkJ1dHRvbik7CisgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2lubmVyU3BpbkJ1
dHRvbik7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcikgewpA
QCAtMzU2LDkgKzM3NCwxNCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgICAgICBib29s
IHNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZERyYXdDYXBzTG9ja0lu
ZGljYXRvcigpOwogICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID8g
Q1NTVmFsdWVCbG9jayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CiAKLSAgICAgICAgbV9jb250YWlu
ZXItPmFwcGVuZENoaWxkKHNvdXJjZSwgKm1fY2Fwc0xvY2tJbmRpY2F0b3IpOworICAgICAgICBt
X2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAgICAgdXBkYXRlQXV0
b0ZpbGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGRhdGFM
aXN0TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxk
SW5wdXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3ICszOTYsNiBAQCBI
VE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0
CiAKIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlw
ZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faW5uZXJUZXh0KTsK
ICAgICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDcsOSBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQog
eworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0
dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgp
OwpAQCAtNDMzLDYgKzQ1OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hh
bmdlZCgpCiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKICAgICAgICAgbV9pbm5l
clNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVD
aGFuZ2VkKCk7CkBAIC00NTQsOCArNDgyLDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNo
b3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKCkKIHsKICAgICBBU1NFUlQoIW1fZGF0YUxpc3RE
cm9wZG93bkluZGljYXRvcik7Ci0gICAgaWYgKCFtX2NvbnRhaW5lcikKLSAgICAgICAgY3JlYXRl
Q29udGFpbmVyKCk7CisgICAgQVNTRVJUKG1fY29udGFpbmVyKTsKIAogICAgIFNjcmlwdERpc2Fs
bG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCptX2NvbnRhaW5lcik7
CiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yID0gRGF0YUxpc3RCdXR0b25FbGVtZW50
OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpLCAqdGhpcyk7CkBAIC02MTYsOSArNjQzLDE0
IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgp
CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewor
ICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghc3VwcG9ydHNQbGFjZWhvbGRl
cigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBTdHJp
bmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5wbGFjZWhvbGRlcigpOwogICAgIGlmIChw
bGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7
CkBAIC03MDQsNiArNzM2LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9u
U3RlcFVwKCkKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgp
CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0
cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFlbGVtZW50KCktPmZv
cm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkgewogICAgICAgICAvLyBVcGRhdGUgdGhl
IHJlbmRlcmVyIHZhbHVlIGlmIHRoZSBmb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkg
ZmxhZyBpcyBmYWxzZS4KICAgICAgICAgLy8gSXQgcHJvdGVjdHMgYW4gdW5hY2NlcHRhYmxlIHJl
bmRlcmVyIHZhbHVlIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgpA
QCAtNzM1LDYgKzc3MSw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTcGluQnV0
dG9uUmVzcG9uZFRvV2hlZWxFdmVudHMoKQogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3Vs
ZERyYXdDYXBzTG9ja0luZGljYXRvcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisKICAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gZWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgxNiwxMyArODUzLDE3IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRv
blR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVB
dXRvRmlsbEJ1dHRvbigpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNy
ZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fw
c0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0F1dG9GaWxs
QnV0dG9uKCkpIHsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5lcikKICAgICAgICAgICAgIGNyZWF0
ZUNvbnRhaW5lcigpOwogCi0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgICAgICBBdXRv
RmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlID0gZWxlbWVudCgpLT5hdXRvRmlsbEJ1
dHRvblR5cGUoKTsKICAgICAgICAgaWYgKCFtX2F1dG9GaWxsQnV0dG9uKQogICAgICAgICAgICAg
Y3JlYXRlQXV0b0ZpbGxCdXR0b24oYXV0b0ZpbGxCdXR0b25UeXBlKTsKQEAgLTg0Niw2ICs4ODcs
OSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CisgICAg
aWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1fZGF0YUxpc3REcm9w
ZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmlu
ZGV4IGI1MWE5N2YwYmQwMzkxNDAxYWE5ZmIwNWRjYzlhN2ZlMTgwMDVlYWEuLjVhMjQzMjc2NWYx
Y2Q2OGE0NjFhODg1MzUzMjU4Mjg1ZmU0OTlmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9v
bCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452319</attachid>
            <date>2022-02-16 22:30:10 -0800</date>
            <delta_ts>2022-02-17 13:56:11 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236747-20220217173009.patch</filename>
            <type>text/plain</type>
            <size>37745</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYzRlNGNmMzA3ZmVl
YjdkMDkzYmIyNDgwY2Q1YThjZjRkYzA1YS4uOTljZGE2MTAzZTBhYWViNTNhNTIyMDUxNmViOGRm
NWM0NGE2YjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAyLTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2aXNpYmxl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorCisyMDIyLTAyLTE2ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIgd2hlbiBjcmVhdGluZyBpbnB1dCBlbGVtZW50IFVBIHNo
YWRvdyB0cmVlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGNyZWF0aW5nIGFuIGlucHV0IGVsZW1lbnQncyBVQSBzaGFkb3cgdHJl
ZSwgd2UgY3VycmVudGx5IHVzZSBhCisgICAgICAgIENoaWxkQ2hhbmdlOjpTb3VyY2UgdmFsdWUg
dGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGlucHV0IGVsZW1lbnQKKyAgICAgICAgaXRzZWxm
IHdhcyBwYXJzZXItIG9yIHNjcmlwdC1pbnNlcnRlZC4gQnV0IHNpbmNlIFVBIHNoYWRvdyB0cmVl
cyBhcmUKKyAgICAgICAgbm90IGV4cG9zZWQgdG8gY29udGVudCwgYW5kIHdlIGRvbid0IGhhdmUg
YW55IGRlcGVuZGVuY3kgb24gdGhlIGV4dHJhCisgICAgICAgIHdvcmsgdGhhdCBpbnNlcnRpbmcg
dXNpbmcgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJIGRvZXMsIHdlIGNhbiB1c2UKKyAgICAgICAg
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyIHVuY29uZGl0aW9uYWxseS4KKworICAgICAgICBM
b2NhbCB0ZXN0aW5nIHNob3dzIHRoaXMgc2NvcmVzIGEgMC4xJSBTcGVlZG9tZXRlciAyIGltcHJv
dmVtZW50LgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBo
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAq
IGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9GaWxl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoK
KwogMjAyMi0wMi0xMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvbnNpc3Rlbmx5IHVzZSBoYXNUYWdOYW1lIGluc3RlYWQgb2YgaXM8PiBpbiBIVE1M
U3RhY2tJdGVtIHRlc3RpbmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMTExNzA0ZmE4MTFhMGE1NGZlNjJkYTZi
NDNiM2UzZTdhZTVjMTllOC4uMjdlYTMyMmQ2ZTNiNGVjNzlkNTRlMmI1NTVhZmViMTNkNjliNmUw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50JikKICAgICB9CiB9CiAKLXZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMzE2
LDExICszMTYsMTEgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGEKIAogICAgIGlmIChkb2N1bWVu
dC5zZXR0aW5ncygpLmRhdGVUaW1lSW5wdXRzRWRpdGFibGVDb21wb25lbnRzRW5hYmxlZCgpKSB7
CiAgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudCA9IERhdGVUaW1lRWRpdEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgKnRoaXMpOwotICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+YXBwZW5kQ2hpbGQoc291cmNlLCAqbV9kYXRlVGltZUVkaXRFbGVtZW50KTsKKyAgICAg
ICAgZWxlbWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1fZGF0ZVRpbWVFZGl0RWxlbWVudCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byB2YWx1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICB2YWx1ZUNvbnRhaW5lci0+c2V0UHNldWRv
KFNoYWRvd1BzZXVkb0lkczo6d2Via2l0RGF0ZUFuZFRpbWVWYWx1ZSgpKTsKLSAgICAgICAgZWxl
bWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgdmFsdWVDb250
YWluZXIpOworICAgICAgICBlbGVtZW50LnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCB2YWx1ZUNvbnRh
aW5lcik7CiAgICAgfQogICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiB9CkBAIC0zMzQsNiAr
MzM0LDEwIEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3Vi
dHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9kYXRlVGlt
ZUVkaXRFbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+
KG5vZGUpKQpAQCAtNTc1LDQgKzU3OSw1IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpjbG9zZURhdGVUaW1lQ2hvb3NlcigpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aAppbmRleCA2YTNlM2IzMDliNzFmNWRlMGYyODljYjdhOGEzMGUwNWQwYThlZTgwLi4zZWI2ZDU1
ZjFjYTM5ZjExOWJjMDUyNzVlY2FjMWUwZTVlMWIyNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9p
ZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNM
b2dpYygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApp
bmRleCAyNjk4M2Y4NTRjNzRjMmE3MzE5OTY4NmRhZDJiYzgwMjhlY2M1MzBkLi4wNzczMTI0MzAy
ZWI3OGE2MmM1N2M1NmQ3MGIxNmUyMGNjMDM3OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2
YWx1ZUFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxl
bWVudCgpLT52YWx1ZSgpKS52YWx1ZSgpOwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBib29sKQordm9pZCBDb2xvcklu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0xNDYsOCArMTQ2LDggQEAgdm9pZCBDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eShDb24KICAgICB3cmFwcGVyRWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0Q29sb3JTd2F0Y2hXcmFwcGVyKCkpOwogICAgIGF1dG8gY29sb3JTd2F0Y2ggPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0Q29sb3JTd2F0Y2goKSk7Ci0gICAgd3JhcHBlckVsZW1lbnQt
PmFwcGVuZENoaWxkKHNvdXJjZSwgY29sb3JTd2F0Y2gpOwotICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzb3VyY2UsIHdyYXBwZXJFbGVtZW50KTsKKyAg
ICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCBjb2xvclN3YXRjaCk7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OlBhcnNlciwgd3JhcHBlckVsZW1lbnQpOwogCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA3MTQ5NzgzYWZlMDM1ZmMy
MjA5ZGNjYmM2ODlhOGNjOTUwMjgzNjU2Li45YjU3MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1
MjRmOTQ5MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBAIC02Miw3ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7
CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2Fu
aXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0
ZUV2ZW50KEV2ZW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCBhMjM3N2JjMWYyYjQ2YWE0ZjQ4ODE2ZmMzNzA2MWUwOWE0OWM5NzYyLi40YWQxMzRhYWEy
NjE5MzU5ZjEyMWQ2Mzg2YzBmZDcyOWFjOGRkNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKQEAgLTE3NSw3ICsxNzUsNiBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVu
ZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0KICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlTGlzdC0+ZmlsZXMoKSkK
ICAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIGZpbGUuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMjYzLDE4ICsyNjIsMTcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQo
KS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIEZp
bGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoYm9vbCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KSk7Ci0gICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNv
dXJjZSwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKIH0KIAogdm9pZCBGaWxlSW5w
dXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1dG8gcm9vdCA9
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTI4
OCw3ICsyODYsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0dHIpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAgaWYgKGF1dG8g
cm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgICAg
IGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4o
KnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxl
bWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6
IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCmluZGV4IDJlZjAyNDRkZDg5MjczYTExMzUyOTVkMTZkYjc5MTZjODJjMDZiZDMuLjdiMmMw
OTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIElj
b24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRpcCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggYmE3NWIwOWNkNzBiZWE0ZGZjMDE2NjFiMjQxOThmNjdlZTVlYjBkOC4uMmNjMDZkMjJiYmZh
MzIxNjU4MjE4YTIzYWIwNTViN2I1MzA1NjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xMzYsOCArMTM2LDggQEAgSFRNTElucHV0RWxlbWVudDo6SFRN
TElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KICNlbmRpZgogICAgICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNl
bWVudChmYWxzZSkKIHsKLSAgICAvLyBtX2lucHV0VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVu
IGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8gYXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNz
YXJpbHkgYSB0ZXh0IGlucHV0VHlwZSBhbmQKLSAgICAvLyBpdHMgc2hhZG93IHN1YnRyZWUsIGp1
c3QgdG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkg
dGhlIHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KKyAgICAvLyBtX2lucHV0
VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8g
YXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNzYXJpbHkgYSB0ZXh0IGlucHV0VHlwZSwKKyAgICAv
LyBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0
IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCiAgICAgaWYgKCFj
cmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVU
ZXh0KCp0aGlzKTsKIApAQCAtMTQ3LDE0ICsxNDcsNyBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1M
SW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bQogCiBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICBib29sIHNob3VsZENyZWF0
ZVNoYWRvd1Jvb3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7Ci0gICAgUmVmPEhUTUxJbnB1dEVs
ZW1lbnQ+IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7Ci0gICAgaWYgKCFzaG91bGRD
cmVhdGVTaGFkb3dSb290TGF6aWx5KSB7Ci0gICAgICAgIEFTU0VSVChpbnB1dEVsZW1lbnQtPm1f
aW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+
Y3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudDsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIp
KTsKIH0KIAogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxv
YWRlcigpCkBAIC0xNjQsMTIgKzE1Nyw2IEBAIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxl
bWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQogICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0K
IAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCkKLXsKLSAgICBSZWY8SW5wdXRUeXBlPiBwcm90ZWN0
ZWRJbnB1dFR5cGUoKm1faW5wdXRUeXBlKTsKLSAgICBwcm90ZWN0ZWRJbnB1dFR5cGUtPmNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkobV9wYXJz
aW5nSW5Qcm9ncmVzcyA/IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciA6IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OkFQSSwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7Ci19Ci0KIEhUTUxJ
bnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKIHsKICAgICBpZiAobmVlZHNTdXNwZW5z
aW9uQ2FsbGJhY2soKSkKQEAgLTU4MCwxMCArNTY3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1lbnQoKTsKIAog
ICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUt
Pm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eUlmTmVlZGVkKGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogCiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRp
dHkoKTsKIApAQCAtNzM2LDE5ICs3MjAsMTIgQEAgaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6aW5pdGlhbGl6ZUlucHV0VHlwZSgpCiAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIpOwogICAgIGlmICh0eXBlLmlz
TnVsbCgpKSB7CiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0
aGlzKTsKLSAgICAgICAgQVNTRVJUKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUoKSk7
Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogICAgICAg
ICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9oYXNUeXBlID0gdHJ1ZTsKICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6
Y3JlYXRlKCp0aGlzLCB0eXBlKTsKLSAgICBpZiAobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3Vi
dHJlZSgpKSB7Ci0gICAgICAgIGNyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgp
OwotICAgIH0KICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogICAgIHJlZ2lz
dGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICBydW5Qb3N0VHlwZVVwZGF0
ZVRhc2tzKCk7CkBAIC0xNTk5LDEwICsxNTc2LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpk
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOwogICAgIGlmIChpc0luVHJlZVNjb3BlKCkgJiYgIWZv
cm0oKSkKICAgICAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7Ci0jaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCi0gICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgbV9oYXNOb25FbXB0eUxpc3Qp
Ci0gICAgICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKTsKLSNlbmRpZgorICAgIG1faW5wdXRU
eXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5SWZOZWVkZWQoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiB9CiAKIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlw
ZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggODJhZTcxZDUwYmU4YWRkYTgzNDNjMDc4MTIwMzg2
ODI4YzM1Mzk5MS4uMmZiMzgwMGYzYTNkMWU3ZmNkNTEwZjJkOTEyNDY0ODUwN2EyYTk4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3MSw4ICszNzEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCi0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7
Ci0KICAgICBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXND
dXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNh
YmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFl
MDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uZTIxMGMxYmYzMTIxMWQzZjkzMzFlYmY4OTAyNzll
YzkyODkyY2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbm5lclRleHRFbGVt
ZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGF1dG8gaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5lclRleHQtPmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vdExpbmVCcmVhayhVQ2hhciBj
aCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBjaCAhPSBjYXJyaWFnZVJldHVy
bjsgfQpAQCAtMzY5LDYgKzM3MSw3IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2li
bGVQb3NpdGlvbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgoaW50IGluZGV4KSBjb25zdAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkp
OwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJU
ZXh0RWxlbWVudCgpLmdldCgpLCBpbmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGIwNTM2NzNhNzQ3ZTJjNWJmYmVhOGQwMmJiOTFjZjk1
MTBmNDc3ZjguLjkyZmVlMzlmMzUyOWIxOTJkYmY2Mjc2YTYxYTIwNTMzMGRkMjZhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBib29sKQordm9pZCBJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkKIHsKIH0KIApAQCAtMTEyNSw0ICsxMTI1LDE0IEBAIFN0cmluZyBJbnB1dFR5
cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+
dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChib29sIGlzSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmxlKQoreworICAgIGlmICghbmVlZHNTaGFkb3dTdWJ0cmVlKCkgfHwgbV9jcmVh
dGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOworICAgIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCA9IHRydWU7CisgICAg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDE1NzljYTMyYzc5YjY3ZTAzOTE4OTA5M2I2ZGQz
NzU0YTk5ZjNiNGQuLjMyOTlkMDgzYmRjZTdkMzQyMWEwNjU1NmIwOTZjNGNhYWEyNmFiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMzA2LDcgKzMwNiw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCk7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SWZOZWVkZWQoYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0
cmVlKCk7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNDA3LDEyICs0MDgsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQu
Z2V0KCk7IH0KICAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogICAgIERlY2ltYWwgcGFyc2VU
b051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlZFNoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJ
Zk5lZWRlZDsgfQogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERv
d24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJv
b2wgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkIHsgZmFsc2UgfTsKICAgICAvLyBtX2Vs
ZW1lbnQgaXMgbnVsbCBpZiB0aGlzIElucHV0VHlwZSBpcyBubyBsb25nZXIgYXNzb2NpYXRlZCB3
aXRoIGFuIGVsZW1lbnQgKGVpdGhlciB0aGUgZWxlbWVudCBkaWVkIG9yIGNoYW5nZWQgaW5wdXQg
dHlwZSkuCiAgICAgV2Vha1B0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMwZmJhODk0YTlmYjFiNDI1
Yjg5YWM0ZjEzOWE2NGZjNWQ2MDExMDMuLjIyZWY2MDY5NDViMTg5NDhhYTBiMzU1ZmUxODQ5ZGQ2
YTEwZDhhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTI1
Myw3ICsyNTMsMTAgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2
aXNpYmxlVmFsdWUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIHJldHVy
biBsb2NhbGl6ZVZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgYXV0byB2YWx1ZSA9IGVs
ZW1lbnQoKS0+dmFsdWUoKTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgcmV0dXJuIGxvY2FsaXplVmFsdWUodmFsdWUpOwogfQogCiBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZp
c2libGVWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggYjRhYmYyOWY3MmI2ZjVkYTEwZmY3ODAwMWMzYmQ5YTI1Nzc5ZjJjNC4uMTU3ODBiNzBjNjE5
ZTZiYmVkZmQ3OGM1ZDBhZDdhNDJjOTU5NzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmIGV2
ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93
U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChlbGVtZW50KCkt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MSwxMCAr
MTU1LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNl
RXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChl
bGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisg
ICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlk
ZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShU
T1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgp
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIg
KzE5MiwxOCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNv
bnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAg
ICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7
CiB9CiAKIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQor
ICAgICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKKwogICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU2hv
dWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIApAQCAtMjQxLDcgKzI1Niw3IEBAIGF1dG8g
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkg
LT4gU2hvdWxkQ2FsbEJhc2VFCiAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVy
OjpZZXM7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSBzb3VyY2UsIGJvb2wpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
QEAgLTI1MCwxNSArMjY1LDE5IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29uCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gdHJhY2sgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICB0cmFjay0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0U2xpZGVyUnVubmFibGVUcmFjaygpKTsKLSAgICB0cmFjay0+
YXBwZW5kQ2hpbGQoc291cmNlLCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCkp
OworICAgIHRyYWNrLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSk7CiAgICAg
YXV0byBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc291cmNlLCB0cmFjayk7Ci0gICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgY29udGFpbmVy
KTsKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgdHJhY2spOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIsIGNvbnRhaW5lcik7CiB9CiAKIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xp
ZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAg
IGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkp
OyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290
KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsyOTYsNyBAQCBI
VE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiAK
IFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVt
ZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgp
KTsKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRo
dW1iCiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRN
TEVsZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszNDIsOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNl
dFZhbHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAgICAgaWYgKGNyZWF0
ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJF
bGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjph
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRy
b2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkpCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVl
KCkgY29uc3QKQEAgLTM2OCw3ICszOTAsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlz
dE1heUhhdmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwog
ICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVy
VHJhY2tFbGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkK
KyAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVy
ZXIoKSkKICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggNzNlZDk0
Y2ZlMTMxMGFmYjI5MWIwZjFlZDY1NzliMzRlNjQwMzVkZi4uMjk2NGM2NGU5ZDNkZjQwZmU5NWJi
NTcyYjkxNzYzZDQzZmVjN2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQo
TW91c2VFdmVudCYpIGZpbmFsOwogICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JikgZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29u
c3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wg
c2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcAppbmRleCA4NDVkMTRmN2ZkYmJmNTlhN2NkNTVlNjhjZDIwZGE2NGJlZGNhMDIzLi5mNzBi
MTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElu
cHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSwgYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgU2VhcmNoSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCiB7CiAgICAgQVNTRVJUKG5lZWRz
U2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7CiAgICAgQVNT
RVJUKCFtX2NhbmNlbEJ1dHRvbik7CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoc291cmNlLCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5l
ciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFw
cGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDMzMTgzM2RkNmQ4NzJkZDA3MGY1N2U4
NDdlMWNhMDRlMzEyNDgyZWEuLjIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRiOGVm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9vbCkg
ZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKSBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDVm
NzRkZWFiNzFkMWM3ZTRlNWNmZTQxZDE2ZDA1OGY0YjAxYmY1ZDEuLjRmNWQ2NGI0MTU5YTQ4OGE2
ZDQ1M2U1NmMzNGYzNzBmZDk2YzBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKQEAgLTEwNyw2ICsxMDcsMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6
aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSkgeworICAgICAgICAvLyBpc0VtcHR5VmFsdWUgaXMgb25seSBjYWxsZWQgYnkgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkgdG8KKyAgICAgICAgLy8gZW5zdXJlIHdlIHJlc3R5
bGUgaWYgbmVlZGVkLCBzbyB0aGUgcmV0dXJuIHZhbHVlIGRvZXNuJ3QgbWF0dGVyIGlmCisgICAg
ICAgIC8vIHRoZSB0aGUgc2hhZG93IHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIHNpbmNl
IGl0IGRvZXNuJ3QgbmVlZAorICAgICAgICAvLyB0byBiZSByZXN0eWxlZC4KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7CiAgICAgQVNTRVJUKGlubmVyVGV4dCk7CiAKQEAgLTIyMSw2ICsyMjksOCBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChF
dmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAobV9pbm5l
clNwaW5CdXR0b24pIHsKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmZvcndhcmRFdmVudChl
dmVudCk7CiAgICAgICAgIGlmIChldmVudC5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMjMxLDEwICsy
NDEsOCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVu
dCkKICAgICBib29sIGlzQmx1ckV2ZW50ID0gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQ7CiAgICAgaWYgKGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAg
Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7Ci0gICAgaWYgKGV2ZW50LmlzTW91c2VFdmVu
dCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkgewotICAgICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKKyAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8
IGlzQmx1ckV2ZW50KQogICAgICAgICBlbGVtZW50KCktPmZvcndhcmRFdmVudChldmVudCk7Ci0g
ICAgfQogfQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudERpZEJsdXIoKQpAQCAt
MzE2LDExICszMjQsMTIgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBz
TG9ja0luZGljYXRvcigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24o
KS5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKmVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNl
LCBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKIHsKICAgICBBU1NFUlQobmVlZHNT
aGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVt
ZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3Qo
KS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFT
U0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSwxMiArMzQwLDIxIEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgp
OwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3BpbkJ1
dHRvbigpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hv
dWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0g
c2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IG5l
ZWRzQ29udGFpbmVyKCk7CisgICAgYm9vbCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24gPSB0aGlz
LT5zaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyAgICBib29sIGhhc0RhdGFMaXN0ID0gZWxlbWVudCgpLT5saXN0KCk7CisjZW5kaWYKKyAg
ICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRI
YXZlQ2Fwc0xvY2tJbmRpY2F0b3IgfHwgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIHx8IGhhc0RhdGFMaXN0CisjZW5kaWYKKyAg
ICAgICAgfHwgbmVlZHNDb250YWluZXIoKTsKIAogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGlzSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmxlKTsKKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogCiAgICAgaWYgKCFjcmVhdGVz
Q29udGFpbmVyKSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5h
cHBlbmRDaGlsZChzb3VyY2UsICptX2lubmVyVGV4dCk7CisgICAgICAgIGVsZW1lbnQoKS0+dXNl
ckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZTo6U291cmNlOjpQYXJzZXIsICptX2lubmVyVGV4dCk7CiAgICAgICAgIHVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzQ2LDcgKzM2NCw3IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5CiAKICAgICBpZiAoc2hvdWxkSGF2ZVNwaW5CdXR0b24pIHsK
ICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCAqdGhpcyk7Ci0gICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChzb3VyY2Us
ICptX2lubmVyU3BpbkJ1dHRvbik7CisgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2lubmVyU3BpbkJ1
dHRvbik7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcikgewpA
QCAtMzU2LDkgKzM3NCwxNCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgICAgICBib29s
IHNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZERyYXdDYXBzTG9ja0lu
ZGljYXRvcigpOwogICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID8g
Q1NTVmFsdWVCbG9jayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CiAKLSAgICAgICAgbV9jb250YWlu
ZXItPmFwcGVuZENoaWxkKHNvdXJjZSwgKm1fY2Fwc0xvY2tJbmRpY2F0b3IpOworICAgICAgICBt
X2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAgICAgdXBkYXRlQXV0
b0ZpbGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGRhdGFM
aXN0TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxk
SW5wdXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3ICszOTYsNiBAQCBI
VE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0
CiAKIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlw
ZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faW5uZXJUZXh0KTsK
ICAgICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDcsOSBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQog
eworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0
dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgp
OwpAQCAtNDMzLDYgKzQ1OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hh
bmdlZCgpCiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKICAgICAgICAgbV9pbm5l
clNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVD
aGFuZ2VkKCk7CkBAIC02MTYsOSArNjQ0LDE0IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1
cGRhdGVQbGFjZWhvbGRlclRleHQoKQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAg
aWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmICghc3VwcG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNT
RVJUKGVsZW1lbnQoKSk7CisKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgp
LT5wbGFjZWhvbGRlcigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7CkBAIC03MDQsNiArNzM3LDEwIEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcFVwKCkKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKCFlbGVtZW50KCktPmZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIo
KSkgewogICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbmRlcmVyIHZhbHVlIGlmIHRoZSBmb3JtQ29u
dHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgZmxhZyBpcyBmYWxzZS4KICAgICAgICAgLy8gSXQg
cHJvdGVjdHMgYW4gdW5hY2NlcHRhYmxlIHJlbmRlcmVyIHZhbHVlIGZyb20gYmVpbmcgb3Zlcndy
aXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgpAQCAtNzM1LDYgKzc3Miw3IEBAIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzaG91bGRTcGluQnV0dG9uUmVzcG9uZFRvV2hlZWxFdmVudHMoKQogYm9v
bCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcigpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVu
dCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gZWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTgxNiwxMyArODU0LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVB
dXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKIHZvaWQg
VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiB7CisgICAgQVNTRVJU
KGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAK
ICAgICBpZiAoc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uKCkpIHsKICAgICAgICAgaWYgKCFtX2Nv
bnRhaW5lcikKICAgICAgICAgICAgIGNyZWF0ZUNvbnRhaW5lcigpOwogCi0gICAgICAgIEFTU0VS
VChlbGVtZW50KCkpOwogICAgICAgICBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25U
eXBlID0gZWxlbWVudCgpLT5hdXRvRmlsbEJ1dHRvblR5cGUoKTsKICAgICAgICAgaWYgKCFtX2F1
dG9GaWxsQnV0dG9uKQogICAgICAgICAgICAgY3JlYXRlQXV0b0ZpbGxCdXR0b24oYXV0b0ZpbGxC
dXR0b25UeXBlKTsKQEAgLTg0Niw2ICs4ODgsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGF0YUxp
c3RNYXlIYXZlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07
CiAKICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IGI1MWE5N2YwYmQwMzkxNDAxYWE5ZmIwNWRj
YzlhN2ZlMTgwMDVlYWEuLjVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4Mjg1ZmU0OTlmNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAs
NyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5l
cigpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBi
b29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5l
clRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95
U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452429</attachid>
            <date>2022-02-17 13:56:15 -0800</date>
            <delta_ts>2022-02-18 13:46:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236747-20220218085614.patch</filename>
            <type>text/plain</type>
            <size>43739</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYzRlNGNmMzA3ZmVl
YjdkMDkzYmIyNDgwY2Q1YThjZjRkYzA1YS4uOTljZGE2MTAzZTBhYWViNTNhNTIyMDUxNmViOGRm
NWM0NGE2YjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAyLTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2aXNpYmxl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorCisyMDIyLTAyLTE2ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHVzZSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIgd2hlbiBjcmVhdGluZyBpbnB1dCBlbGVtZW50IFVBIHNo
YWRvdyB0cmVlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGNyZWF0aW5nIGFuIGlucHV0IGVsZW1lbnQncyBVQSBzaGFkb3cgdHJl
ZSwgd2UgY3VycmVudGx5IHVzZSBhCisgICAgICAgIENoaWxkQ2hhbmdlOjpTb3VyY2UgdmFsdWUg
dGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGlucHV0IGVsZW1lbnQKKyAgICAgICAgaXRzZWxm
IHdhcyBwYXJzZXItIG9yIHNjcmlwdC1pbnNlcnRlZC4gQnV0IHNpbmNlIFVBIHNoYWRvdyB0cmVl
cyBhcmUKKyAgICAgICAgbm90IGV4cG9zZWQgdG8gY29udGVudCwgYW5kIHdlIGRvbid0IGhhdmUg
YW55IGRlcGVuZGVuY3kgb24gdGhlIGV4dHJhCisgICAgICAgIHdvcmsgdGhhdCBpbnNlcnRpbmcg
dXNpbmcgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJIGRvZXMsIHdlIGNhbiB1c2UKKyAgICAgICAg
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyIHVuY29uZGl0aW9uYWxseS4KKworICAgICAgICBM
b2NhbCB0ZXN0aW5nIHNob3dzIHRoaXMgc2NvcmVzIGEgMC4xJSBTcGVlZG9tZXRlciAyIGltcHJv
dmVtZW50LgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBo
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAq
IGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9GaWxl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoK
KwogMjAyMi0wMi0xMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvbnNpc3Rlbmx5IHVzZSBoYXNUYWdOYW1lIGluc3RlYWQgb2YgaXM8PiBpbiBIVE1M
U3RhY2tJdGVtIHRlc3RpbmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKaW5kZXggY2Y3MTQ5NWZmOWQyNDllNWEzNWJhNWZhNGFlMjA4ZTliMGM1ZWFmOS4u
Yjg1YjFlMDc0YmExNjkxNGU5MGZhMzI1NThkNjdhYWQzMWMwMGZiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIGJvb2wgVGV4dEl0
ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgIH0KIAogICAgIGlmIChtX2JlaGF2
aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW50ZXJzVGV4dENvbnRyb2xzKSAm
JiBpczxSZW5kZXJUZXh0Q29udHJvbD4ocmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmIChhdXRvIGlu
bmVyVGV4dEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbD4ocmVuZGVyZXIpLnRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoKS5pbm5lclRleHRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gaW5uZXJUZXh0RWxlbWVudCA9IGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPihyZW5k
ZXJlcikudGV4dEZvcm1Db250cm9sRWxlbWVudCgpLmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCgpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbm5lclRleHRF
bGVtZW50LT5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgICAgICAgICAgcHVzaEZ1bGx5Q2xp
cHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssICptX25vZGUpOwogICAgICAgICAgICAgbV9v
ZmZzZXQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCmluZGV4IDExMTcwNGZhODExYTBhNTRmZTYyZGE2YjQzYjNlM2U3YWU1YzE5ZTgu
LjI3ZWEzMjJkNmUzYjRlYzc5ZDU0ZTJiNTU1YWZlYjEzZDY5YjZlMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICsz
MDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgYm9vbCkKK3ZvaWQgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKQEAgLTMxNiwxMSArMzE2LDExIEBAIHZv
aWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhCiAKICAgICBpZiAoZG9jdW1lbnQuc2V0dGluZ3MoKS5kYXRl
VGltZUlucHV0c0VkaXRhYmxlQ29tcG9uZW50c0VuYWJsZWQoKSkgewogICAgICAgICBtX2RhdGVU
aW1lRWRpdEVsZW1lbnQgPSBEYXRlVGltZUVkaXRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsICp0
aGlzKTsKLSAgICAgICAgZWxlbWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxk
KHNvdXJjZSwgKm1fZGF0ZVRpbWVFZGl0RWxlbWVudCk7CisgICAgICAgIGVsZW1lbnQudXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIsICptX2RhdGVUaW1lRWRpdEVsZW1lbnQpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGF1dG8gdmFsdWVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdERhdGVBbmRUaW1lVmFsdWUoKSk7Ci0gICAgICAgIGVsZW1lbnQudXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzb3VyY2UsIHZhbHVlQ29udGFpbmVyKTsKKyAgICAgICAg
ZWxlbWVudC51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgdmFsdWVDb250YWluZXIpOwogICAgIH0KICAg
ICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogfQpAQCAtMzM0LDYgKzMzNCwxMCBAQCB2b2lkIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQogdm9pZCBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKIHsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgp
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkgewog
ICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKQEAgLTU3NSw0
ICs1NzksNSBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y2xvc2VEYXRlVGltZUNo
b29zZXIoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggNmEzZTNiMzA5
YjcxZjVkZTBmMjg5Y2I3YThhMzBlMDVkMGE4ZWU4MC4uM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1
ZWNhYzFlMGU1ZTFiMjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
TW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZh
dGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZTo6U291cmNlLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVB
bmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CiAgICAgdm9p
ZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0
VmFsdWUoKSBmaW5hbDsKICAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMjY5ODNmODU0Yzc0
YzJhNzMxOTk2ODZkYWQyYmM4MDI4ZWNjNTMwZC4uMDc3MzEyNDMwMmViNzhhNjJjNTdjNTZkNzBi
MTZlMjBjYzAzNzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAg
LTEzNSw3ICsxMzUsNyBAQCBDb2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29u
c3QKICAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSku
dmFsdWUoKTsKIH0KIAotdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZTo6U291cmNlIHNvdXJjZSwgYm9vbCkKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKIHsK
ICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkp
OwpAQCAtMTQ2LDggKzE0Niw4IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29uCiAgICAgd3JhcHBl
ckVsZW1lbnQtPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdENvbG9yU3dhdGNoV3Jh
cHBlcigpKTsKICAgICBhdXRvIGNvbG9yU3dhdGNoID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgY29sb3JTd2F0Y2gtPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdENvbG9yU3dhdGNoKCkpOwotICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChzb3Vy
Y2UsIGNvbG9yU3dhdGNoKTsKLSAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+
YXBwZW5kQ2hpbGQoc291cmNlLCB3cmFwcGVyRWxlbWVudCk7CisgICAgd3JhcHBlckVsZW1lbnQt
PmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
Y29sb3JTd2F0Y2gpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIHdyYXBw
ZXJFbGVtZW50KTsKIAogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggNzE0OTc4M2FmZTAzNWZjMjIwOWRjY2JjNjg5YThjYzk1
MDI4MzY1Ni4uOWI1NzBkMDg4MDIyZDU0ZDc5ZmVmNDViODAwZDYwNTI0Zjk0OTMxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmYWxs
YmFja1ZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2UsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKICAgICB2b2lkIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggYTIzNzdiYzFmMmI0
NmFhNGY0ODgxNmZjMzcwNjFlMDlhNDljOTc2Mi4uNGFkMTM0YWFhMjYxOTM1OWYxMjFkNjM4NmMw
ZmQ3MjlhYzhkZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0x
NzUsNyArMTc1LDYgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3Jt
RGF0YSYgZm9ybURhdGEpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotCiAg
ICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZUxpc3QtPmZpbGVzKCkpCiAgICAgICAgIGZvcm1EYXRh
LmFwcGVuZChuYW1lLCBmaWxlLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI2MywxOCAr
MjYyLDE3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9v
bCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikKICAgICBlbGVtZW50KCktPmludmFsaWRhdGVTdHls
ZUZvclN1YnRyZWUoKTsKIH0KIAotdm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBib29sKQordm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wp
CiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAgIGVsZW1lbnQo
KS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzb3VyY2UsIGVsZW1lbnQoKS0+
bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCkt
PmRvY3VtZW50KCkpKTsKKyAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBlbGVt
ZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0aXBs
ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOiBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxl
bWVudCgpLT5kb2N1bWVudCgpKSk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRT
dGF0ZUNoYW5nZWQoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIEFTU0VSVChlbGVt
ZW50KCktPnNoYWRvd1Jvb3QoKSk7CiAKICAgICBhdXRvIHJvb3QgPSBlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIXJvb3QpCkBAIC0yODgsNyArMjg2LDYgQEAgdm9p
ZCBGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gbXVsdGlwbGVBdHRyKSB7CiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+c2hhZG93Um9vdCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSBlbGVtZW50LT51
c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGJ1dHRv
biA9IGNoaWxkcmVuT2ZUeXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5maXJzdCgpKQog
ICAgICAgICAgICAgICAgICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQtPm11bHRpcGxlKCkg
PyBmaWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3Nl
RmlsZUxhYmVsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCAyZWYwMjQ0
ZGQ4OTI3M2ExMTM1Mjk1ZDE2ZGI3OTE2YzgyYzA2YmQzLi43YjJjMDk2NjFkNTVhMzU0Mjk0NDU2
YjFjYmU2NGQ4NDBkYjU3MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBJY29uKiBpY29uKCkgY29uc3Qg
ZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFu
Z2VkKCkgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGJhNzViMDljZDcwYmVh
NGRmYzAxNjYxYjI0MTk4ZjY3ZWU1ZWIwZDguLjZmNTcxYWQxOWE0MzU2MzFhMjM1Y2QwZmMxNTgz
ODYzOTNmNzI5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtMTM2LDggKzEzNiw4IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjZW5kaWYKICAgICAs
IG1faXNTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoZmFsc2UpCiB7Ci0g
ICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0
aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1
dFR5cGUgYW5kCi0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhl
bSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29t
ZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNy
ZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGlu
ZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0cm95
IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRv
IHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2VyKQog
ICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAKQEAg
LTE0NywxNCArMTQ3LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJbnB1
dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6aWx5
ID0gY3JlYXRlZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1l
bnQgPSBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZv
cm0sIGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExh
emlseSkgewotICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVlZHNT
aGFkb3dTdWJ0cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVybiBp
bnB1dEVsZW1lbnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbWFn
ZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0LDEy
ICsxNTcsNiBAQCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdl
TG9hZGVyKCkKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eSgpCi17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCptX2lu
cHV0VHlwZSk7Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KG1fcGFyc2luZ0luUHJvZ3Jlc3MgPyBD
aGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIgOiBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIGlz
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwotfQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRN
TElucHV0RWxlbWVudCgpCiB7CiAgICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBA
IC0yMTIsNiArMTk5LDExIEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhU
TUxJbnB1dEVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdT
aGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJU
ZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVt
ZW50KiBIVE1MSW5wdXRFbGVtZW50Ojppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5pbm5lckJsb2NrRWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzIs
NyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBl
LT5kZXRhY2hGcm9tRWxlbWVudCgpOwogCiAgICAgbV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5
cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAg
ICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1f
aW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmlsaXR5SWZOZWVkZWQoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiAKICAgICB1
cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxpZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBp
bmxpbmUgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBj
b25zdCBBdG9tU3RyaW5nJiB0eXBlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0
eXBlQXR0cik7CiAgICAgaWYgKHR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUg
PSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5
cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93
Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KCk7CiAgICAgICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAg
IG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmICht
X2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFn
ZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0
ZUFuZFZhbGlkaXR5KCk7CiAgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRl
ZCgpOwogICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAg
aWYgKGlzSW5UcmVlU2NvcGUoKSAmJiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9u
R3JvdXAoKTsKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0
ZWQoKSAmJiBtX2hhc05vbkVtcHR5TGlzdCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdl
ZCgpOwotI2VuZGlmCisgICAgbV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHlJZk5lZWRlZChpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSgpKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA4MmFl
NzFkNTBiZThhZGRhODM0M2MwNzgxMjAzODY4MjhjMzUzOTkxLi5jMWM3NjIwZGMxODBlODNkZDM0
Zjg5NWZiMzEwZGM3ZGVmZDJkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFp
bmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVy
QmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIHJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0IGZpbmFsOwogCisgICAgYm9vbCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNBdXRv
RmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc0LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotCiAg
ICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9t
Rm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShL
ZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg1LDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIGJv
b2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhaGFz
QXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29sIGNhblRyaWdn
ZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1RleHRGaWVsZCgp
OyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDY2
OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJmMDBkYjVkYzA2ZGQz
MDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KCkg
Y29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisK
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQogewog
ICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYwZWIyZjMuLjAwNzdm
MDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVt
ZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0
aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNjMWEy
MWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4NmVkOWRmYjE4NmIw
Mjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBp
ZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5uZXJU
ZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChhdXRv
IGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5kZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJlYWso
VUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2Fycmlh
Z2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVsZAog
ICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6Om1h
eChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1l
bnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1bWVudCgpLmZvY3Vz
ZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlubmVyVGV4dCkgewog
ICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAgICBB
U1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwogICAg
IEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwogICAg
IHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMgU3RyaW5nIGlubmVy
VGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkKIHZv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2FsbG93
ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRpbWl6
YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGF1
dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk5ODZh
YzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2OGVjMWM4MjRlYTA1
Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0
RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwg
UmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSA9IDA7
CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGIwNTM2NzNhNzQ3ZTJjNWJmYmVhOGQw
MmJiOTFjZjk1MTBmNDc3ZjguLjQ0MmI2YjBmYTgwN2E0ZTFiZWM3Mzc5YjA0MDhiZTVhNWJhNjQ1
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12
b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlLCBib29sKQor
dm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoYm9vbCkKIHsKIH0KIApAQCAtMTExOSwxMCArMTExOSwyNyBAQCBSZWZQ
dHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2NyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQpCisgICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHlJZk5lZWRlZChlbGVtZW50KCktPmlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlKCkpOworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJbnB1
dFR5cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHlJZk5lZWRlZChib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQoreworICAgIGlmICgh
bmVlZHNTaGFkb3dTdWJ0cmVlKCkgfHwgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKQor
ICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVs
ZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIG1fY3JlYXRlZFNoYWRv
d1N1YnRyZWVJZk5lZWRlZCA9IHRydWU7CisgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4
IDE1NzljYTMyYzc5YjY3ZTAzOTE4OTA5M2I2ZGQzNzU0YTk5ZjNiNGQuLmUwZWVmYTE4YTIxYTkz
OTg1M2FlMzIzMjc0MDhlMTQ0ZGEyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAt
MzA2LDcgKzMwNiw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgog
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9v
bCk7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5SWZOZWVkZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7CiAKICAgICB2aXJ0dWFsIEhUTUxF
bGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
MzIzLDYgKzMyNCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBkYXRhTGlzdEJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsK
IAogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zLgogCkBAIC00MDcsMTIgKzQwOSwxNCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudC5nZXQoKTsgfQogICAgIENocm9tZSogY2hyb21lKCkgY29uc3Q7CiAgICAg
RGVjaW1hbCBwYXJzZVRvTnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9v
bCBjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVk
U2hhZG93U3VidHJlZUlmTmVlZGVkOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gSGVscGVyIGZvciBz
dGVwVXAoKS9zdGVwRG93bigpLiBBZGRzIHN0ZXAgdmFsdWUgKiBjb3VudCB0byB0aGUgY3VycmVu
dCB2YWx1ZS4KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBseVN0ZXAoaW50IGNvdW50LCBBbnlT
dGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpOwogCiAgICAgY29uc3QgVHlwZSBt
X3R5cGU7CisgICAgYm9vbCBtX2NyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQgeyBmYWxzZSB9
OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBlIGlzIG5vIGxvbmdl
ciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVtZW50IGRpZWQgb3Ig
Y2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxl
bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggMzBm
YmE4OTRhOWZiMWI0MjViODlhYzRmMTM5YTY0ZmM1ZDYwMTEwMy4uMjJlZjYwNjk0NWIxODk0OGFh
MGIzNTVmZTE4NDlkZDZhMTBkOGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmNwcApAQCAtMjUzLDcgKzI1MywxMCBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpsb2Nh
bGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKIFN0cmluZyBOdW1i
ZXJJbnB1dFR5cGU6OnZpc2libGVWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICBh
dXRvIHZhbHVlID0gZWxlbWVudCgpLT52YWx1ZSgpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbG9jYWxpemVWYWx1ZSh2YWx1ZSk7
CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OmNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGNv
bnN0IFN0cmluZyYgdmlzaWJsZVZhbHVlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcAppbmRleCBiNGFiZjI5ZjcyYjZmNWRhMTBmZjc4MDAxYzNiZDlhMjU3NzlmMmM0
Li4xNTc4MGI3MGM2MTllNmJiZWRmZDc4YzVkMGFkN2E0MmM5NTk3NTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMTMzLDYgKzEzMywxMCBAQCBTdGVwUmFuZ2Ug
UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nKSBjb25zdAogdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQo
TW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAo
IWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VE
b3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZv
aWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7
CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpOwog
I2VsaWYgRU5BQkxFKFRPVUNIX1NMSURFUikKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAg
IGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE4MywxMiArMTkyLDE4IEBAIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZl
bnRIYW5kbGVyKCkgY29uc3QKIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNo
YW5nZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAg
ICAgICByZXR1cm47CiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5ob3N0RGlzYWJsZWRT
dGF0ZUNoYW5nZWQoKTsKIH0KIAogYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcgog
ewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6
WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAg
ICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogCkBAIC0yNDEsNyAr
MjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJk
RXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICByZXR1cm4gU2hvdWxkQ2FsbEJh
c2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgYm9vbCkKK3ZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VChlbGVtZW50KCkpOwpAQCAtMjUwLDE1ICsyNjUsMTkgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShD
b24KICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAg
YXV0byB0cmFjayA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHRyYWNr
LT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRTbGlkZXJSdW5uYWJsZVRyYWNrKCkp
OwotICAgIHRyYWNrLT5hcHBlbmRDaGlsZChzb3VyY2UsIFNsaWRlclRodW1iRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KSk7CisgICAgdHJhY2stPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpKTsKICAgICBhdXRvIGNvbnRhaW5lciA9IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChzb3VyY2UsIHRyYWNr
KTsKLSAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoc291
cmNlLCBjb250YWluZXIpOworICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCB0cmFjayk7CisgICAgZWxlbWVudCgpLT51
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2U6OlBhcnNlciwgY29udGFpbmVyKTsKIH0KIAogSFRNTEVsZW1lbnQqIFJhbmdl
SW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKSk7IC8vIGNvbnRhaW5lcgogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5pc0hUTUxFbGVtZW50KCkpOwpAQCAtMjc3
LDYgKzI5Niw3IEBAIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVt
ZW50KCkgY29uc3QKIAogU2xpZGVyVGh1bWJFbGVtZW50JiBSYW5nZUlucHV0VHlwZTo6dHlwZWRT
bGlkZXJUaHVtYkVsZW1lbnQoKSBjb25zdAogeworICAgIEFTU0VSVChjcmVhdGVkU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCkpOwogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RD
aGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0
Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKIApAQCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVudC0+dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAg
ICAgICBpZiAoY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICAgICAgdHlw
ZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwogICAgIH0KICAg
ICBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CkBAIC0zMzksNyArMzYwLDgg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEUKICAgICAgICAgZWxlbWVudCgpLT5zZXRUZXh0QXNP
Zkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KHZhbHVlKTsKICAgICB9CiAKLSAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgaWYgKGNyZWF0
ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwogfQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6
OmZhbGxiYWNrVmFsdWUoKSBjb25zdApAQCAtMzY4LDcgKzM5MCw3IEBAIHZvaWQgUmFuZ2VJbnB1
dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQogewogICAgIG1fdGlja01hcmtWYWx1ZXNE
aXJ0eSA9IHRydWU7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBzbGlkZXJUcmFja0VsZW1lbnQg
PSB0aGlzLT5zbGlkZXJUcmFja0VsZW1lbnQoKTsKLSAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50
LT5yZW5kZXJlcigpKQorICAgIGlmIChzbGlkZXJUcmFja0VsZW1lbnQgJiYgc2xpZGVyVHJhY2tF
bGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVy
KCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
aAppbmRleCA3M2VkOTRjZmUxMzEwYWZiMjkxYjBmMWVkNjU3OWIzNGU2NDAzNWRmLi4yOTY0YzY0
ZTlkM2RmNDBmZTk1YmI1NzJiOTE3NjNkNDNmZWM3Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVN
b3VzZURvd25FdmVudChNb3VzZUV2ZW50JikgZmluYWw7CiAgICAgU2hvdWxkQ2FsbEJhc2VFdmVu
dEhhbmRsZXIgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmKSBmaW5hbDsKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
KSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSwgYm9v
bCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIERlY2ltYWwgcGFyc2VUb051bWJl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5n
IHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDg0NWQxNGY3ZmRiYmY1OWE3Y2Q1NWU2OGNkMjBkYTY0
YmVkY2EwMjMuLmY3MGIxMmUyNDM3ZmZjMWE4NjQ1ZWEwMzk4YWQ5NDBkNTI1MDI2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAgLTEwMiwxMyArMTAyLDEzIEBA
IGJvb2wgU2VhcmNoSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlLCBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9p
ZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKIHsKICAg
ICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVCghbV9yZXN1bHRzQnV0
dG9uKTsKICAgICBBU1NFUlQoIW1fY2FuY2VsQnV0dG9uKTsKIAotICAgIFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShzb3VyY2UsIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOwogICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gY29udGFpbmVyID0gY29udGFpbmVyRWxlbWVudCgpOwogICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gdGV4dFdyYXBwZXIgPSBpbm5lckJsb2NrRWxlbWVudCgpOwogICAgIEFTU0VSVChjb250
YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXggMzMxODMzZGQ2
ZDg3MmRkMDcwZjU3ZTg0N2UxY2EwNGUzMTI0ODJlYS4uMjJmNjhjOTI1ZDg2Nzk2NDEzMGU4ZWYz
MTc5N2JjOTBlZGI4ZWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCkBA
IC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBuZWVkc0NvbnRh
aW5lcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkZXN0
cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiByZXN1bHRzQnV0dG9u
RWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVt
ZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAKaW5kZXggNWY3NGRlYWI3MWQxYzdlNGU1Y2ZlNDFkMTZkMDU4ZjRiMDFiZjVkMS4uODdm
YmI1MTA5MGU2OGM0ZjEwYWE2NDIxOGVhMjRhMGY4Njk1NzUyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTA3LDYgKzEwNywxNCBAQCBib29sIFRl
eHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0CiAKIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUoKSBjb25zdAogeworICAgIGlmICghY3JlYXRlZFNo
YWRvd1N1YnRyZWVJZk5lZWRlZCgpKSB7CisgICAgICAgIC8vIGlzRW1wdHlWYWx1ZSBpcyBvbmx5
IGNhbGxlZCBieSB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKSB0bworICAgICAgICAvLyBl
bnN1cmUgd2UgcmVzdHlsZSBpZiBuZWVkZWQsIHNvIHRoZSByZXR1cm4gdmFsdWUgZG9lc24ndCBt
YXR0ZXIgaWYKKyAgICAgICAgLy8gdGhlIHRoZSBzaGFkb3cgdHJlZSBoYXNuJ3QgYmVlbiBjcmVh
dGVkIHlldCwgc2luY2UgaXQgZG9lc24ndCBuZWVkCisgICAgICAgIC8vIHRvIGJlIHJlc3R5bGVk
LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBhdXRvIGlubmVyVGV4dCA9IGlu
bmVyVGV4dEVsZW1lbnQoKTsKICAgICBBU1NFUlQoaW5uZXJUZXh0KTsKIApAQCAtMjIxLDYgKzIy
OSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGlu
QnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwog
ICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+
Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRIYW5kbGVkKCkp
CkBAIC0yMzEsMTAgKzI0MSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZl
bnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZlbnQgPSBldmVudC50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2
ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKLSAgICBpZiAoZXZl
bnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KSB7Ci0gICAg
ICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBp
c0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGVsZW1lbnQoKS0+Zm9yd2FyZEV2
ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVtZW50
RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyNCwxMiBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6
c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhl
bWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcigqZWxlbWVudCgpKTsK
IH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZSBzb3VyY2UsIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCit2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQogewogICAg
IEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQo
KS0+c2hhZG93Um9vdCgpLT5oYXNDaGlsZE5vZGVzKCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVy
VGV4dCk7CiAgICAgQVNTRVJUKCFtX2lubmVyQmxvY2spOwpAQCAtMzMxLDEyICszNDAsMjEgQEAg
dm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5l
clRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRoaXMtPnNo
b3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0
b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKTsKLSAgICBib29sIGNyZWF0
ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fwc0xvY2tJ
bmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAgICBib29sIHNob3VsZERyYXdBdXRvRmls
bEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpOworI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0YUxpc3QgPSBlbGVtZW50KCktPmxpc3Qo
KTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0
dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBzaG91bGREcmF3QXV0b0ZpbGxC
dXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgfHwgaGFzRGF0YUxp
c3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRhaW5lcigpOwogCiAgICAgbV9pbm5lclRl
eHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgaXNJbm5l
clRleHRFbGVtZW50RWRpdGFibGUpOworICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiAKICAg
ICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsKLSAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgKm1faW5uZXJUZXh0KTsKKyAgICAgICAg
ZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1faW5uZXJUZXh0KTsKICAgICAgICAg
dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDYs
NyArMzY0LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVB
bmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKIAogICAgIGlmIChzaG91bGRIYXZl
U3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbiA9IFNwaW5CdXR0b25FbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzKTsKLSAgICAgICAgbV9jb250YWluZXItPmFwcGVu
ZENoaWxkKHNvdXJjZSwgKm1faW5uZXJTcGluQnV0dG9uKTsKKyAgICAgICAgbV9jb250YWluZXIt
PmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
Km1faW5uZXJTcGluQnV0dG9uKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkSGF2ZUNhcHNMb2Nr
SW5kaWNhdG9yKSB7CkBAIC0zNTYsOSArMzc0LDE0IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
CiAgICAgICAgIGJvb2wgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hvdWxk
RHJhd0NhcHNMb2NrSW5kaWNhdG9yKCk7CiAgICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0b3ItPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzaG91bGREcmF3Q2Fwc0xv
Y2tJbmRpY2F0b3IgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25lLCB0cnVlKTsKIAotICAg
ICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc291cmNlLCAqbV9jYXBzTG9ja0luZGljYXRv
cik7CisgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2NhcHNMb2NrSW5kaWNhdG9yKTsKICAgICB9CisK
ICAgICB1cGRhdGVBdXRvRmlsbEJ1dHRvbigpOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCisgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOworI2VuZGlmCiB9CiAKIEhUTUxFbGVt
ZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNvbnRhaW5lckVsZW1lbnQoKSBjb25zdApAQCAtMzcz
LDcgKzM5Niw2IEBAIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyQmxvY2tF
bGVtZW50KCkgY29uc3QKIAogUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gVGV4
dEZpZWxkSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9pbm5lclRleHQpOwogICAgIHJldHVybiBtX2lubmVyVGV4dDsKIH0KIApAQCAtNDI1LDYgKzQ0
Nyw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKICAgICAgICAg
bV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xvY2tTdGF0ZU1h
eUhhdmVDaGFuZ2VkKCk7CkBAIC00MzMsNiArNDU4LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnJl
YWRPbmx5U3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQog
ICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9j
a1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTYxNiw5ICs2NDQsMTQgQEAgYm9vbCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIFN0cmluZyBwbGFjZWhvbGRlclRl
eHQgPSBlbGVtZW50KCktPnBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKQEAgLTcwNCw2ICs3Mzcs
NyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBVcCgpCiB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChl
bGVtZW50KCkpOworCiAgICAgaWYgKCFlbGVtZW50KCktPmZvcm1Db250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoKSkgewogICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbmRlcmVyIHZhbHVlIGlmIHRo
ZSBmb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgZmxhZyBpcyBmYWxzZS4KICAgICAg
ICAgLy8gSXQgcHJvdGVjdHMgYW4gdW5hY2NlcHRhYmxlIHJlbmRlcmVyIHZhbHVlIGZyb20gYmVp
bmcgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgpAQCAtNzM1LDYgKzc2OSw3IEBAIGJv
b2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTcGluQnV0dG9uUmVzcG9uZFRvV2hlZWxFdmVu
dHMoKQogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZERyYXdDYXBzTG9ja0luZGljYXRv
cigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgp
LT5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gZWxlbWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTgxNiwxMyArODUxLDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25U
CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiB7Cisg
ICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFu
Z2VkKCk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uKCkpIHsKICAgICAgICAg
aWYgKCFtX2NvbnRhaW5lcikKICAgICAgICAgICAgIGNyZWF0ZUNvbnRhaW5lcigpOwogCi0gICAg
ICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgICAgICBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0Zp
bGxCdXR0b25UeXBlID0gZWxlbWVudCgpLT5hdXRvRmlsbEJ1dHRvblR5cGUoKTsKICAgICAgICAg
aWYgKCFtX2F1dG9GaWxsQnV0dG9uKQogICAgICAgICAgICAgY3JlYXRlQXV0b0ZpbGxCdXR0b24o
YXV0b0ZpbGxCdXR0b25UeXBlKTsKQEAgLTg0Niw2ICs4ODUsOSBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlv
bnMgPSB7IH07CiAKICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IGI1MWE5N2YwYmQwMzkxNDAx
YWE5ZmIwNWRjYzlhN2ZlMTgwMDVlYWEuLjVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4Mjg1
ZmU0OTlmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAt
NzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVk
c0NvbnRhaW5lcigpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlLCBib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="479541"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452443</attachid>
            <date>2022-02-17 16:22:15 -0800</date>
            <delta_ts>2022-02-18 13:46:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236747-20220218112214.patch</filename>
            <type>text/plain</type>
            <size>39792</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uOWZkMmQyMmY3NjliM2RjMjUxMTcyYjdmODNhMjEz
NjEyYzI1NjdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAyMi0wMi0xNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToK
KyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9Db2xvcklu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAg
ICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9SYW5n
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRU
eXBlLmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgIFJlbmFtZWQgY3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSB0bworICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlIGFuZCByZW1vdmUgdGhlICJpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJs
ZSIKKyAgICAgICAgYXJndW1lbnQsIHNpbmNlIHdlIGNhbiBhc2sgdGhlIGVsZW1lbnQoKSBmb3Ig
aXRzIHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZSBpcyBub3cg
YWxzbyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHNoYWRvdworICAgICAgICByb290Lgor
CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KToKKyAgICAgICAgUmVuYW1lZC4gRW5zdXJlIGFsbCBzaGFkb3cgdHJlZSBzdGF0ZSBp
cyB1cCB0byBkYXRlIG5vdyB0aGF0IGl0IGNhbiBiZQorICAgICAgICBjcmVhdGVkIGxhdGVyLgor
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICBOZXcgZnVuY3Rpb25zIHRvIGNyZWF0ZSB0aGUgc2hh
ZG93IHN1YnRyZWUgaWYgaXQgaGFzbid0IGJlZW4gZG9uZQorICAgICAgICBhbHJlYWR5LCBhbmQg
dG8gcXVlcnkgd2hldGhlciBpdCdzIGJlZW4gZG9uZS4KKworICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdT
aGFkb3dTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVu
dENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0
byBmaXJzdCBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGJlZm9yZSByZXR1cm5pbmcKKyAgICAg
ICAgaW5uZXJUZXh0RWxlbWVudCgpLiBIVE1MVGV4dEFyZWFFbGVtZW50IG5ldmVyIGxhemlseSBj
cmVhdGVzIGl0cworICAgICAgICBzaGFkb3cgc3VidHJlZSBhbmQgc28ganVzdCByZXR1cm5zIGlu
bmVyVGV4dEVsZW1lbnQoKS4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgRGVsZXRlZC4gSnVzdCBjYWxsIHRocm91Z2ggdG8g
bV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1RyZWUoKQorICAgICAgICBkaXJlY3RseS4KKworICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5pdGlhbGl6ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgRG9uJ3QgaW1tZWRp
YXRlbHkgY3JlYXRlIHRoZSBzaGFkb3cgdHJlZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAgICAgIENyZWF0ZSB0aGUg
c2hhZG93IHN1YnRyZWUgbm93IHRoYXQgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkLiBObwor
ICAgICAgICBuZWVkIHRvIGNhbGwgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCBzaW5jZQorICAgICAg
ICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUgd2lsbCBub3cgZG8gdGhp
cy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFs
dWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlzIGNyZWF0ZWQgc2luY2Ug
d2UgbmVlZCB0byBwb2tlIGF0IGl0LgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6Zm9yd2FyZEV2ZW50KToKKyAgICAgICAgRG9uJ3QgZm9yd2FyZCB0aGUgZXZlbnQgaWYg
dGhlIHNoYWRvdyB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0LgorCisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAg
ICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0cmVlIGhhcyBiZWVuIGNyZWF0ZWQuIFRoaXMgaXMgbmVl
ZGVkIGlmIHRoZQorICAgICAgICBzZWxlY3Rpb24gQVBJcyBhcmUgY2FsbGVkIG9uIHRoZSBpbnB1
dCBlbGVtZW50IGJlZm9yZSBpdCdzIGluc2VydGVkCisgICAgICAgIGludG8gdGhlIGRvY3VtZW50
LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXggY29uc3QpOgorICAgICAgICBBc3NlcnQgdGhhdCB0aGUgc2hhZG93
IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCwgc2luY2UgZWRpdGluZworICAgICAgICBmdW5jdGlvbmFs
aXR5IHNob3VsZCBvbmx5IGJlIG5lZWRlZCBpZiB0aGUgZWxlbWVudCdzIGJlZW4gaW5zZXJ0ZWQK
KyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgIEVuc3VyZSB0
aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1v
dXNlRG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVU
b3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlk
b3duRXZlbnQpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0cmVlIGhhcyBiZWVuIGNyZWF0
ZWQgaW4gY2FzZSB0aGUgZXZlbnQgd2lsbCBjaGFuZ2UKKyAgICAgICAgdGhlIHZhbHVlLgorCisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgT25seSByZXR1cm4gdGhlIGVsZW1lbnQgaWYgaXQncyBiZWVuIGNyZWF0ZWQu
CisKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxl
bWVudCBjb25zdCk6CisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBlbGVtZW50IGhhcyBiZWVuIGNy
ZWF0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhh
dmVDaGFuZ2VkKToKKyAgICAgICAgT25seSB0cnkgdG8gcmUtbGF5b3V0IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXMgYmVlbiBjcmVhdGVkLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFs
dWUgY29uc3QpOgorICAgICAgICBBdm9pZCBjcmVhdGluZyB0aGUgc2hhZG93IHN1YnRyZWUuCisK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KToKKyAg
ICAgICAgTW92ZSB0aGUgZWxlbWVudCBhc3NlcnRpb24gdXAgdG8gYmUgY29uc2lzdGVudCB3aXRo
IG90aGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojppbm5lclRleHRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgRG9uJ3QgYXNzZXJ0LCBzaW5jZSB0
aGlzIG5vdyBjYW4gbGVnaXRpbWF0ZWx5IHJldHVybiBudWxsLgorCisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmRpc2Fi
bGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKToKKyAgICAgICAg
RG9uJ3QgdXBkYXRlIHRoZSBzaGFkb3cgdHJlZSBjb250ZW50cyBpZiBpdCBoYXNuJ3QgYmVlbiBj
cmVhdGVkIHlldC4KKyAgICAgICAgY3JlYXRlU2hhZG93VHJlZSBpcyByZXNwb25zaWJsZSBmb3Ig
ZW5zdXJpbmcgaXQgY3JlYXRlcyB0aGUgc2hhZG93CisgICAgICAgIHRyZWUgY29udGVudHMgcmVm
bGVjdGluZyB0aGUgY3VycmVudCBzdGF0ZS4KKwogMjAyMi0wMi0xNiAgQ2FtZXJvbiBNY0Nvcm1h
Y2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFsd2F5cyB1c2UgQ2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyIHdoZW4gY3JlYXRpbmcgaW5wdXQgZWxlbWVudCBVQSBzaGFkb3cgdHJl
ZSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2MWNhZmE1NjkxOWU3ZWY5YzFhZmRhMzVjNDYu
LmNmN2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4OWJkMTNhNzQxM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICsz
MDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1
cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKwogICAgIGlmICghbV9kYXRlVGltZUVkaXRF
bGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5k
ZXggM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNhYzFlMGU1ZTFiMjY5MC4uYjY4NWY4ZTE5ZmZi
NDg4NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5h
bDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNzczMTI0MzAyZWI3OGE2MmM1
N2M1NmQ3MGIxNmUyMGNjMDM3OGNiLi5mYWJjY2QwMDdmNTI2MzAwZWI0Y2E3MGM0MGNiZDYxODQw
NGVhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAogICAg
IHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKS52YWx1ZSgp
OwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIENvbG9ySW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkp
OwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CmluZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1YjgwMGQ2MDUyNGY5NDkzMTIuLjExNmRhYjEx
N2I5NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRz
UmVxdWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0
IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFu
Z2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0
aXZhdGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKaW5kZXggNTNlNWNhMzgzY2ZlMzc3NGIxNWY4NTAwNDQ3ZmFhYzMwODEwMjkwYS4uMmE0NmFh
YmU1MmM1NTVkMTE4ZjcxYTlkZGVhZWNjZjIxZDM4NTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAg
IGVsZW1lbnQoKS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkoYm9vbCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgp
CiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKQEAgLTI3Myw3ICsyNzMsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbAogdm9pZCBG
aWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1dG8g
cm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdCkK
QEAgLTI4Nyw3ICsyODYsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0
dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAgaWYg
KGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxl
bWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0VmFs
dWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFi
ZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYu
LjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1NWUwMDAyM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRl
Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2MmI2YTc2ODEy
MDNmOWQ2MWU0MWQzNTgzNmVhMzBiNGY4YzQyMGJlLi40MGU2ZGRjYWFlZjMxOTZmNzFhNzA3ZDQ2
Y2E4NzE3MzcyZWYxNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogI2VuZGlmCiAg
ICAgLCBtX2lzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KGZhbHNlKQog
ewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQg
YnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQg
aW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBkZXN0cm95
IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRv
IHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemls
eSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1
Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3QgdG8gZGVz
dHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBhcnNl
ciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRCeVBhcnNl
cikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOwog
CkBAIC0xNDcsMTQgKzE0Nyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJlZjxIVE1M
SW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExh
emlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gaW5wdXRF
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRvd1Jv
b3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5cGUtPm5l
ZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVVc2VyQWdl
bnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAgICByZXR1
cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBIVE1M
SW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKQEAgLTE2
NCwxMiArMTU3LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJ
bWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlwZSgq
bV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQog
ewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzE5OSwxMSBA
QCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpp
bm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4
dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSFRN
TElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRDcmVhdGlu
Z1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElucHV0RWxl
bWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTcyLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1l
bnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9p
bnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRl
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxp
ZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBlID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYgKHR5cGUu
aXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQo
KnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgp
KTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAgICAg
ICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBl
OjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dT
dWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAg
ICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgcmVn
aXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RUeXBlVXBk
YXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSAmJiAh
Zm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVtcHR5TGlz
dCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCisgICAgbV9pbnB1
dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogfQogCiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDgyYWU3MWQ1MGJlOGFkZGE4MzQzYzA3ODEyMDM4NjgyOGMz
NTM5OTEuLmMxYzc2MjBkYzE4MGU4M2RkMzRmODk1ZmIzMTBkYzdkZWZkMmQ0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xMzcsNiArMTM3LDcgQEAgcHVibGlj
OgogICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAgICAg
UmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudCgpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVy
VGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpIGZpbmFsOwogICAgIFJl
bmRlclN0eWxlIGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWw7
CiAKICAgICBIVE1MRWxlbWVudCogaW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdDsKQEAgLTM1Niw2
ICszNTcsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgcmVzdWx0Rm9yRGlhbG9nU3VibWl0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAK
QEAgLTM3MSw4ICszNzQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3Rv
cihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQp
IGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0KICAgICBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsKQEAg
LTM4NCw4ICszODUsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0ludGVyYWN0aXZlQ29udGVu
dCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkg
JiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxl
KCk7IH0KLQogICAgIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjY4ZGQ3ZjlkZmQ2YTU4N2I5ODJhYjk1NDRiZjk2MWU1
MDYzMmUyNS4uYWE1MmYwMGRiNWRjMDZkZDMwNDgxNmUxMzMxNTVhNzM5YTRhMTIzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNDUsNiArMzQ1
LDExIEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zCiAgICAgcmV0dXJuIGNoaWxkcmVuT2ZUeXBl
PFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7CiB9CiAKK1JlZlB0
cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVy
VGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgcmV0dXJu
IGlubmVyVGV4dEVsZW1lbnQoKTsKK30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5k
ZXJlcldpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAgdXBkYXRlVmFsdWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggM2JlNWFlOTZjMjM5YzU2ZGEyOTIy
ZDhiNWJhZDg5ZjVlNjBlYjJmMy4uMDA3N2YwMjUzMjZkNzhmMDIxZGFjMGNiMjcxZDljOTY4ZmNj
YmFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTU3
LDYgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVt
ZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHls
ZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAgIHZv
aWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5
Yi4uNzkwZGQwY2Y0Yzg2ZWQ5ZGZiMTg2YjAyOTdhZmU4ZDRhOTkwNTZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1
Nyw3ICsxNTcsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZl
bnQoRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmJsdXJFdmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpbm5lclRleHRFbGVtZW50KCktPmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOworCisgICAgaWYgKGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgp
KQorICAgICAgICBpbm5lclRleHQtPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBz
dGF0aWMgYm9vbCBpc05vdExpbmVCcmVhayhVQ2hhciBjaCkgeyByZXR1cm4gY2ggIT0gbmV3bGlu
ZUNoYXJhY3RlciAmJiBjaCAhPSBjYXJyaWFnZVJldHVybjsgfQpAQCAtMzA5LDcgKzMxMSw3IEBA
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBz
dGFydCwgaW50IGVuZCwgVGV4dEZpZWxkCiAgICAgZW5kID0gc3RkOjptYXgoZW5kLCAwKTsKICAg
ICBzdGFydCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGF1dG8g
aW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5u
ZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBo
YXNGb2N1cyA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzOwogICAgIGlmICgh
aGFzRm9jdXMgJiYgaW5uZXJUZXh0KSB7CiAgICAgICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewpA
QCAtMzY5LDYgKzM3MSw3IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2libGVQb3Np
dGlvbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
aW50IGluZGV4KSBjb25zdAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkpOwogICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJUZXh0RWxl
bWVudCgpLmdldCgpLCBpbmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KHBvc2l0aW9uKSA9PSBpbmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpAQCAtNTg3LDcgKzU5
MCw3IEBAIHN0YXRpYyBTdHJpbmcgaW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudCYgaW5uZXJUZXh0KQogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNh
bGxvd2VkU2NvcGUgbGF5b3V0RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6
UmVhc29uOjpQZXJmb3JtYW5jZU9wdGltaXphdGlvbik7Ci0gICAgYXV0byBpbm5lclRleHQgPSBp
bm5lclRleHRFbGVtZW50KCk7CisgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggOTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZhNDZj
OWVjYi4uYTAzMWUxNDY4ZWMxYzgyNGVhMDVjZjE1ZmNkMTMyOTMzMzZkYzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODks
NiArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVy
VGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKSA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYpID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChi
b29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5k
ZXggN2EwNTA1MDJiM2VhYmVkNWNkMTcxZmVmOGYzZjZiNTE5NmVhMzMyYi4uYTMzYzZmZDc0MzEw
ZjA5MTUwMGIzNDUyYjAwMDU0YWY2ZDM0OTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKICAgICBlbGVtZW50
KCktPmRlZmF1bHRCbHVyKCk7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiB9CiAKQEAgLTExMTksMTAgKzExMTksMjYg
QEAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRl
eHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3JlYXRp
bmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5l
ZWRlZCgpOworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJbnB1
dFR5cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fY3JlYXRlZFNo
YWRvd1N1YnRyZWVJZk5lZWRlZCB8fCAhbmVlZHNTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CisgICAgZWxlbWVudCgpLT5l
bnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgbV9jcmVhdGVkU2hhZG93U3VidHJlZUlm
TmVlZGVkID0gdHJ1ZTsKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVl
NmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFjZWUuLjRhNTJhNGNkYjRjOGEzYjEwZDNjMWYwMzc2YmM0
ZDk4OTc0YjcyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMzA2LDcgKzMwNiw4IEBA
IHB1YmxpYzoKIAogICAgIC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCk7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95U2hhZG93U3VidHJlZSgpOwogCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogY29udGFpbmVy
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTMyMyw2ICszMjQsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdmlydHVhbCBIVE1MRWxl
bWVudCogZGF0YUxpc3RCdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCisgICAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0
RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICAvLyBNaXNjZWxs
YW5lb3VzIGZ1bmN0aW9ucy4KIApAQCAtNDA3LDEyICs0MDksMTQgQEAgcHJvdGVjdGVkOgogICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0
KCk7IH0KICAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OwogICAgIERlY2ltYWwgcGFyc2VUb051
bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJvb2wgY3JlYXRlZFNoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5l
ZWRlZDsgfQogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24o
KS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJvb2wg
bV9jcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkIHsgZmFsc2UgfTsKICAgICAvLyBtX2VsZW1l
bnQgaXMgbnVsbCBpZiB0aGlzIElucHV0VHlwZSBpcyBubyBsb25nZXIgYXNzb2NpYXRlZCB3aXRo
IGFuIGVsZW1lbnQgKGVpdGhlciB0aGUgZWxlbWVudCBkaWVkIG9yIGNoYW5nZWQgaW5wdXQgdHlw
ZSkuCiAgICAgV2Vha1B0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA4MDlkNTg5Y2YzZDg3MTJlYmM3MWMz
MTMwYzQ0MzJkZGU4MTVlOTlhLi5hYzQ3OGEwMTc3Njk0MTQ1YzFkMGZiNTRhNDU3MDA0NzYwN2I0
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMTMzLDYgKzEz
MywxMCBAQCBTdGVwUmFuZ2UgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVw
SGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFu
ZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0
VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91
Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNy
ZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhhbmRsZVRv
dWNoRXZlbnQoZXZlbnQpOwogI2VsaWYgRU5BQkxFKFRPVUNIX1NMSURFUikKLSAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKwogICAgIGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE4MywxMiArMTkyLDE4IEBAIGJvb2wgUmFuZ2VJbnB1
dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkgY29uc3QKIAogdm9pZCBSYW5nZUlucHV0VHlw
ZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRy
ZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5ob3N0RGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKIH0KIAogYXV0byBSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxs
QmFzZUV2ZW50SGFuZGxlcgogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFj
cmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBTaG91bGRDYWxs
QmFzZUV2ZW50SGFuZGxlcjo6WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6
WWVzOwogCkBAIC0yNDEsNyArMjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICBy
ZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eShib29sKQordm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgp
CiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKQEAgLTI1OSw2ICsyNzQsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib28KIEhUTUxF
bGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5l
ZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCkt
PnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxl
bWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVu
dCgpKTsKQEAgLTI3Nyw2ICsyOTYsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNs
aWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiAKIFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1
dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoY3Jl
YXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKTsKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVt
ZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRodW1iCiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxl
bWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVsZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszNDIs
OCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQog
ICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldFZhbHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAg
ICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9t
VmFsdWUoKTsKKyAgICAgICAgaWYgKGNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAg
ICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUo
KTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAt
MzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQo
KS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQog
Ci0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwor
ICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpCisgICAgICAgIHR5cGVkU2xp
ZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJh
bmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKQEAgLTM2OCw3ICszOTAsNyBAQCB2
b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKICAgICBtX3Rp
Y2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVy
VHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVyVHJhY2tFbGVtZW50KCk7Ci0gICAgaWYgKHNsaWRl
clRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYm
IHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgc2xpZGVyVHJhY2tFbGVt
ZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKaW5kZXggMjk2NGM2NGU5ZDNkZjQwZmU5NWJiNTcyYjkxNzYzZDQzZmVj
N2NiYi4uMTBmZDNhNzJlN2Q2ZDBiMDE3ZWY2YmIyYjRiOTU1MDQ4YzAxNTlhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYpIGZpbmFsOwogICAgIFNob3Vs
ZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Jikg
ZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHNlcmlh
bGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwCmluZGV4IGY3MGIxMmUyNDM3ZmZjMWE4NjQ1ZWEwMzk4YWQ5NDBkNTI1MDI2
NTUuLjZlNWIxZTdmYmU3MmJiZDMxYmI5ODQ1N2UwMmVjZDRjNmE0N2RlNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAgLTEwMiwxMyArMTAyLDEzIEBAIGJvb2wg
U2VhcmNoSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFi
bGUpCit2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAg
QVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRv
bik7CiAgICAgQVNTRVJUKCFtX2NhbmNlbEJ1dHRvbik7CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIFRleHRGaWVsZElucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY29udGFpbmVy
ID0gY29udGFpbmVyRWxlbWVudCgpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gdGV4dFdyYXBw
ZXIgPSBpbm5lckJsb2NrRWxlbWVudCgpOwogICAgIEFTU0VSVChjb250YWluZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXggMjJmNjhjOTI1ZDg2Nzk2NDEzMGU4ZWYz
MTc5N2JjOTBlZGI4ZWY2MS4uMjNhNjI5NzRlMjJkYTc1N2RlMjJkOTdhMjgzODcwNzc0ODgxZWY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgSFRN
TEVsZW1lbnQqIHJlc3VsdHNCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CiAgICAgSFRNTEVs
ZW1lbnQqIGNhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZTg3NzhiYmQ5MDA5YTVkYWI3ODFl
MmRmZTM3ODhlOTA5N2ZhYzhjLi43M2U1MjhjOGZmYzhjYWQyMWIyM2M3NjAzOGNkYTllYjc0MGVm
MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0x
MDcsNiArMTA3LDE0IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxl
KCkgY29uc3QKIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSgpIGNvbnN0
CiB7CisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZUlmTmVlZGVkKCkpIHsKKyAgICAgICAg
Ly8gaXNFbXB0eVZhbHVlIGlzIG9ubHkgY2FsbGVkIGJ5IHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eSgpIHRvCisgICAgICAgIC8vIGVuc3VyZSB3ZSByZXN0eWxlIGlmIG5lZWRlZCwgc28gdGhl
IHJldHVybiB2YWx1ZSBkb2Vzbid0IG1hdHRlciBpZgorICAgICAgICAvLyB0aGUgdGhlIHNoYWRv
dyB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0LCBzaW5jZSBpdCBkb2Vzbid0IG5lZWQKKyAg
ICAgICAgLy8gdG8gYmUgcmVzdHlsZWQuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOwogICAgIEFTU0VSVChpbm5l
clRleHQpOwogCkBAIC0yMjEsNiArMjI5LDggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogeworICAg
IEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKSB7CiAgICAg
ICAgIG1faW5uZXJTcGluQnV0dG9uLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAo
ZXZlbnQuZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTIzMSwxMCArMjQxLDggQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBpc0JsdXJF
dmVudCA9IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50OwogICAgIGlmIChp
c0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZl
Q2hhbmdlZCgpOwotICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZlbnQg
fHwgaXNCbHVyRXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgaWYgKGV2
ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAg
ICAgZWxlbWVudCgpLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwotICAgIH0KIH0KIAogdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVyKCkKQEAgLTMxNiwxMSArMzI0LDEyIEBAIGJv
b2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKSBjb25z
dAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2hvdWxkSGF2ZUNhcHNMb2Nr
SW5kaWNhdG9yKCplbGVtZW50KCkpOwogfQogCi12b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
IGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7
CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9v
dCgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQoKS0+c2hhZG93Um9vdCgpLT5oYXNDaGlsZE5vZGVz
KCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNTRVJUKCFtX2lubmVyQmxv
Y2spOwpAQCAtMzMxLDkgKzM0MCwxOCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBib29sIHNob3Vs
ZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hvdWxkSGF2ZVNwaW5CdXR0b24oKTsKICAgICBib29s
IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZEhhdmVDYXBzTG9ja0lu
ZGljYXRvcigpOwotICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0
dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBuZWVkc0NvbnRhaW5lcigpOwor
ICAgIGJvb2wgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uID0gdGhpcy0+c2hvdWxkRHJhd0F1dG9G
aWxsQnV0dG9uKCk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgYm9vbCBoYXNE
YXRhTGlzdCA9IGVsZW1lbnQoKS0+bGlzdCgpOworI2VuZGlmCisgICAgYm9vbCBjcmVhdGVzQ29u
dGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNh
dG9yIHx8IHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQorICAgICAgICB8fCBoYXNEYXRhTGlzdAorI2VuZGlmCisgICAgICAgIHx8IG5lZWRzQ29u
dGFpbmVyKCk7CiAKLSAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50LCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgbV9p
bm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
ZWxlbWVudCgpLT5pc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpKTsKKyAgICB1cGRhdGVJbm5l
clRleHRWYWx1ZSgpOwogCiAgICAgaWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7CiAgICAgICAgIGVs
ZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2lubmVyVGV4dCk7CkBAIC0zNTgsNyAr
Mzc2LDEyIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5CiAKICAgICAgICAgbV9jb250YWluZXIt
PmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
Km1fY2Fwc0xvY2tJbmRpY2F0b3IpOwogICAgIH0KKwogICAgIHVwZGF0ZUF1dG9GaWxsQnV0dG9u
KCk7CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBkYXRhTGlzdE1heUhhdmVD
aGFuZ2VkKCk7CisjZW5kaWYKIH0KIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6
Y29udGFpbmVyRWxlbWVudCgpIGNvbnN0CkBAIC0zNzMsNyArMzk2LDYgQEAgSFRNTEVsZW1lbnQq
IFRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogCiBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVChtX2lubmVyVGV4dCk7CiAgICAgcmV0dXJu
IG1faW5uZXJUZXh0OwogfQogCkBAIC00MjUsNiArNDQ3LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAo
IWNyZWF0ZWRTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVsZWFz
ZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQzMyw2
ICs0NTgsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQogewor
ICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47
CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9u
LT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpA
QCAtNjE2LDkgKzY0NCwxNCBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkUmVzcGVj
dExpc3RBdHRyaWJ1dGUoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vo
b2xkZXJUZXh0KCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRl
ZFNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIXN1
cHBvcnRzUGxhY2Vob2xkZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChlbGVtZW50
KCkpOworCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9IGVsZW1lbnQoKS0+cGxhY2Vob2xk
ZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
bV9wbGFjZWhvbGRlcikgewpAQCAtODE2LDEzICs4NDksMTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZUF1dG9GaWxsQnV0dG9uKEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1
dHRvblQKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkK
IHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRy
ZWVJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2
ZUNoYW5nZWQoKTsKIAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAg
ICAgICBpZiAoIW1fY29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAK
LSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBh
dXRvRmlsbEJ1dHRvblR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAg
ICAgICBpZiAoIW1fYXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1
dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg4Myw5IEBAIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYWNoZWRTdWdn
ZXN0aW9ucyA9IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggNWEyNDMyNzY1ZjFj
ZDY4YTQ2MWE4ODUzNTMyNTgyODVmZTQ5OWY0OS4uNGUxYmIxNTRjNWE3YjU2MWNiNTQ0ZmUyZDZm
ZmI4N2YwMmFjOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5o
CkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29s
IG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIG92ZXJyaWRlOworICAgIHZv
aWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveVNoYWRv
d1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBm
aW5hbDsK
</data>
<flag name="commit-queue"
          id="479547"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452474</attachid>
            <date>2022-02-17 20:03:24 -0800</date>
            <delta_ts>2022-02-18 13:59:29 -0800</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-236747-20220218150322.patch</filename>
            <type>text/plain</type>
            <size>43896</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uZmQ4MjliNzRiN2JkMTFjYzY5ZWI3OGYyMDFkNTcx
Y2IwZTM1MDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAyMi0wMi0xNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlZFNoYWRvd1N1YnRyZWUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlm
IGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdoZXRo
ZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRv
d1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3JlYXRl
IHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4dEVs
ZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMKKyAg
ICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVtZW50
KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBlLT5j
cmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0ZSB0
aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRp
ZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVlZCB0
byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAgICAg
KiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAgICAg
RW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8gcG9r
ZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndhcmRF
dmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cgdHJl
ZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJlIHRo
ZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBiZWZv
cmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvcklu
ZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBiZWVu
IGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQgb25s
eSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGludG8g
dGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0cmVl
IGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAg
ICAgICAgRW5zdXJlIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkIGluIGNhc2UgdGhl
IGV2ZW50IHdpbGwgY2hhbmdlCisgICAgICAgIHRoZSB2YWx1ZS4KKworICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCBjb25zdCk6CisgICAgICAgIE9u
bHkgcmV0dXJuIHRoZSBlbGVtZW50IGlmIGl0J3MgYmVlbiBjcmVhdGVkLgorCisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQgY29uc3QpOgor
ICAgICAgICBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6Cisg
ICAgICAgIE9ubHkgdHJ5IHRvIHJlLWxheW91dCBpZiB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4g
Y3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAg
ICAgICAgQXZvaWQgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudCk6CisgICAgICAgIE1vdmUgdGhl
IGVsZW1lbnQgYXNzZXJ0aW9uIHVwIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxl
bWVudCBjb25zdCk6CisgICAgICAgIERvbid0IGFzc2VydCwgc2luY2UgdGhpcyBub3cgY2FuIGxl
Z2l0aW1hdGVseSByZXR1cm4gbnVsbC4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5n
ZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25s
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5
cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElu
cHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAgICAgIERvbid0IHVwZGF0ZSB0
aGUgc2hhZG93IHRyZWUgY29udGVudHMgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQuCisg
ICAgICAgIGNyZWF0ZVNoYWRvd1RyZWUgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGl0IGNy
ZWF0ZXMgdGhlIHNoYWRvdworICAgICAgICB0cmVlIGNvbnRlbnRzIHJlZmxlY3RpbmcgdGhlIGN1
cnJlbnQgc3RhdGUuCisKIDIwMjItMDItMTYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXNlIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
ciB3aGVuIGNyZWF0aW5nIGlucHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY29udGVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRl
eCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZkYTM1YzQ2Li5jZjdjYzMxZjM0MmY3
YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKQog
ICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMzM0
LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93
U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0
VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgY3JlYXRlU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkgewogICAg
ICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNlYjZkNTVmMWNh
MzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVmOGUxOWZmYjQ4ODU1ZjRlMmZlODJl
M2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01v
dXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRl
RXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJl
ZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBmaW5hbDsKICAgICBi
b29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDc3MzEyNDMwMmViNzhhNjJjNTdjNTZkNzBiMTZlMjBj
YzAzNzhjYi4uZmFiY2NkMDA3ZjUyNjMwMGViNGNhNzBjNDBjYmQ2MTg0MDRlYWI0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBDb2xv
ciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFyc2VT
aW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSkudmFsdWUoKTsKIH0KIAotdm9pZCBD
b2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA5YjU3MGQw
ODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4xMTZkYWIxMTdiOTc1OWIyMzYxNzM3
MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29u
c3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBT
dHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Ym9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAg
dm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDUzZTVj
YTM4M2NmZTM3NzRiMTVmODUwMDQ0N2ZhYWMzMDgxMDI5MGEuLjkyMmM1YTM5MGM0ZDIzOTU4ZjVm
ZjZhODQxNDQ5YTQ1NDA4MWFlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25z
dCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQoKS0+
aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9v
bCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNT
RVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBB
U1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKKworICAgIGF1dG8gYnV0dG9u
ID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9y
TXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9p
ZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1
dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9v
dCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBs
ZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAg
aWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9u
RWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0
VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVz
TGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcx
ZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1NWUwMDAyM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7Cisg
ICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2MmI2YTc2
ODEyMDNmOWQ2MWU0MWQzNTgzNmVhMzBiNGY4YzQyMGJlLi40MGU2ZGRjYWFlZjMxOTZmNzFhNzA3
ZDQ2Y2E4NzE3MzcyZWYxNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogI2VuZGlm
CiAgICAgLCBtX2lzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KGZhbHNl
KQogewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0
ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRl
eHQgaW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBkZXN0
cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2Vy
IHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlzIGxh
emlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25z
dHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3QgdG8g
ZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBh
cnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRCeVBh
cnNlcikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMp
OwogCkBAIC0xNDcsMTQgKzE0Nyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJlZjxI
VE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0s
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9v
dExhemlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gaW5w
dXRFbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRv
d1Jvb3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5cGUt
Pm5lZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAgICBy
ZXR1cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBI
VE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKQEAg
LTE2NCwxMiArMTU3LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1
cmVJbWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlw
ZSgqbV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1l
bnRFZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQo
KQogewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzE5OSwx
MSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVy
VGV4dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4g
SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRDcmVh
dGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElucHV0
RWxlbWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0
VHlwZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTcyLDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVs
ZW1lbnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAo
bV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3Jl
YXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRW
YWxpZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5wdXRF
bGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBl
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYgKHR5
cGUuaXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRl
eHQoKnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJl
ZSgpKTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAg
ICAgICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5wdXRU
eXBlOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFk
b3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAg
ICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAg
cmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RUeXBl
VXBkYXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSAm
JiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVtcHR5
TGlzdCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCisgICAgbV9p
bnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogfQogCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCmluZGV4IDgyYWU3MWQ1MGJlOGFkZGE4MzQzYzA3ODEyMDM4Njgy
OGMzNTM5OTEuLmMxYzc2MjBkYzE4MGU4M2RkMzRmODk1ZmIzMTBkYzdkZWZkMmQ0ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xMzcsNiArMTM3LDcgQEAgcHVi
bGljOgogICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAg
ICAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudCgp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlu
bmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpIGZpbmFsOwogICAg
IFJlbmRlclN0eWxlIGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgZmlu
YWw7CiAKICAgICBIVE1MRWxlbWVudCogaW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdDsKQEAgLTM1
Niw2ICszNTcsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgcmVzdWx0Rm9yRGlhbG9nU3VibWl0
KCkgY29uc3QgZmluYWw7CiAKKyAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAm
JiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUo
KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAKQEAgLTM3MSw4ICszNzQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0KICAgICBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsK
QEAgLTM4NCw4ICszODUsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0ludGVyYWN0aXZlQ29u
dGVudCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJs
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9u
KCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlKCk7IH0KLQogICAgIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAogICAgIGNvbnN0IEF0b21TdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjY4ZGQ3ZjlkZmQ2YTU4N2I5ODJhYjk1NDRiZjk2
MWU1MDYzMmUyNS4uYWE1MmYwMGRiNWRjMDZkZDMwNDgxNmUxMzMxNTVhNzM5YTRhMTIzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNDUsNiAr
MzQ1LDExIEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zCiAgICAgcmV0dXJuIGNoaWxkcmVuT2ZU
eXBlPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7CiB9CiAKK1Jl
ZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6Omlu
bmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgcmV0
dXJuIGlubmVyVGV4dEVsZW1lbnQoKTsKK30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpy
ZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAgdXBkYXRlVmFsdWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggM2JlNWFlOTZjMjM5YzU2ZGEy
OTIyZDhiNWJhZDg5ZjVlNjBlYjJmMy4uMDA3N2YwMjUzMjZkNzhmMDIxZGFjMGNiMjcxZDljOTY4
ZmNjYmFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAg
LTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRF
bGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJT
dHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAg
IHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMw
ZjE5Yi4uNzkwZGQwY2Y0Yzg2ZWQ5ZGZiMTg2YjAyOTdhZmU4ZDRhOTkwNTZlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJk
RXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmJsdXJFdmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBpbm5lclRleHRFbGVtZW50KCktPmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOworCisgICAgaWYgKGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVu
dCgpKQorICAgICAgICBpbm5lclRleHQtPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQog
CiBzdGF0aWMgYm9vbCBpc05vdExpbmVCcmVhayhVQ2hhciBjaCkgeyByZXR1cm4gY2ggIT0gbmV3
bGluZUNoYXJhY3RlciAmJiBjaCAhPSBjYXJyaWFnZVJldHVybjsgfQpAQCAtMzA5LDcgKzMxMSw3
IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGlu
dCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkCiAgICAgZW5kID0gc3RkOjptYXgoZW5kLCAwKTsK
ICAgICBzdGFydCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGF1
dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0g
aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgYm9v
bCBoYXNGb2N1cyA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzOwogICAgIGlm
ICghaGFzRm9jdXMgJiYgaW5uZXJUZXh0KSB7CiAgICAgICAgIGlmICghaXNDb25uZWN0ZWQoKSkg
ewpAQCAtMzY5LDYgKzM3MSw3IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2libGVQ
b3NpdGlvbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5k
ZXgoaW50IGluZGV4KSBjb25zdAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkpOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJUZXh0
RWxlbWVudCgpLmdldCgpLCBpbmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpAQCAtNTg3LDcg
KzU5MCw3IEBAIHN0YXRpYyBTdHJpbmcgaW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudCYgaW5uZXJUZXh0KQogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBMYXlvdXRE
aXNhbGxvd2VkU2NvcGUgbGF5b3V0RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29w
ZTo6UmVhc29uOjpQZXJmb3JtYW5jZU9wdGltaXphdGlvbik7Ci0gICAgYXV0byBpbm5lclRleHQg
PSBpbm5lclRleHRFbGVtZW50KCk7CisgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVt
ZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgKaW5kZXggOTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZh
NDZjOWVjYi4uYTAzMWUxNDY4ZWMxYzgyNGVhMDVjZjE1ZmNkMTMyOTMzMzZkYzIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAt
ODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKSA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYpID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZChib29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
aW5kZXggN2EwNTA1MDJiM2VhYmVkNWNkMTcxZmVmOGYzZjZiNTE5NmVhMzMyYi4uMzhiOTkwYWI2
MmYzNjlmYjFkOGVlMDc5NGMwZTc0MjkzZGYzOTc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKICAgICBlbGVt
ZW50KCktPmRlZmF1bHRCbHVyKCk7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIElu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiB9CiAKQEAgLTExMTksMTAgKzExMTks
MjYgQEAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5l
clRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3Jl
YXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJ
bnB1dFR5cGU6OnJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fY3JlYXRl
ZFNoYWRvd1N1YnRyZWUgfHwgIW5lZWRzU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47
CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWUgPSB0cnVl
OworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMDQ1ZmY0NTdmYjMyZWU2YWI5MTA1YjUzYWEy
MGQ2NzhjODkzMWNlZS4uYmJjMjBlMjEzOGE1MDcwN2I3YzY2YTRhMmI5ZjVjYjIwYWI0MDU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0zMDYsNyArMzA2LDggQEAgcHVibGljOgogCiAg
ICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcuCiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKTsKKyAg
ICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0
cmVlKCk7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMzIzLDYgKzMyNCw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBkYXRhTGlz
dEJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBS
ZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRp
bmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKIAogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rp
b25zLgogCkBAIC00MDcsMTIgKzQwOSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQogICAgIENo
cm9tZSogY2hyb21lKCkgY29uc3Q7CiAgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyT3JOYU4oY29u
c3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBjcmVhdGVkU2hhZG93U3VidHJlZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWU7IH0KIAogcHJpdmF0ZToKICAgICAvLyBI
ZWxwZXIgZm9yIHN0ZXBVcCgpL3N0ZXBEb3duKCkuIEFkZHMgc3RlcCB2YWx1ZSAqIGNvdW50IHRv
IHRoZSBjdXJyZW50IHZhbHVlLgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGx5U3RlcChpbnQg
Y291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcik7CiAKICAgICBj
b25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWUgeyBmYWxz
ZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBlIGlzIG5vIGxv
bmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVtZW50IGRpZWQg
b3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1f
ZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgw
OWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEuLjQ3MGM3MDAxMTNmOWI5NmJh
NDU2MGIxZmVkODkxODMxNGViNGUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0VHlwZTo6Y3Jl
YXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50JiBldmVudCkK
IHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRy
ZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQp
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRv
dWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5oYW5k
bGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9TTElERVIpCi0gICAgQVNT
RVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5MiwxOCBAQCBib29sIFJhbmdl
SW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1
dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgp
Lmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRvIFJhbmdlSW5wdXRUeXBlOjpo
YW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNl
RXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0
ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFu
ZGxlcjo6WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
CiAgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogCkBAIC0y
NDEsNyArMjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICByZXR1cm4gU2hvdWxk
Q2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KQordm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNT
RVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKQEAgLTI1
OSw2ICsyNzQsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib28KIEhUTUxFbGVtZW50KiBSYW5n
ZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290
KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpKTsgLy8gY29udGFpbmVyCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVsZW1lbnQoKSk7CkBAIC0yNzcsNiArMjk2
LDcgQEAgSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBj
b25zdAogCiBTbGlkZXJUaHVtYkVsZW1lbnQmIFJhbmdlSW5wdXRUeXBlOjp0eXBlZFNsaWRlclRo
dW1iRWxlbWVudCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKGNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkp
OwogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1
bWIKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1M
RWxlbWVudCgpKTsKIApAQCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0
VmFsdWUoZWxlbWVudC0+dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJU
aHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgICAgICBpZiAoY3JlYXRl
ZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCku
c2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0Rmll
bGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VF
dmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQ
b3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAg
ICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9
CiAKIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CkBAIC0zNjgs
NyArMzkwLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgp
CiB7CiAgICAgbV90aWNrTWFya1ZhbHVlc0RpcnR5ID0gdHJ1ZTsKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IHNsaWRlclRyYWNrRWxlbWVudCA9IHRoaXMtPnNsaWRlclRyYWNrRWxlbWVudCgpOwot
ICAgIGlmIChzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKHNsaWRlclRy
YWNrRWxlbWVudCAmJiBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHNs
aWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDI5NjRjNjRlOWQzZGY0MGZlOTViYjU3
MmI5MTc2M2Q0M2ZlYzdjYmIuLjEwZmQzYTcyZTdkNmQwYjAxN2VmNmJiMmI0Yjk1NTA0OGMwMTU5
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmKSBmaW5h
bDsKICAgICBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJ
bnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsK
KyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNl
VG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAg
IFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmNzBiMTJlMjQzN2ZmYzFhODY0NWVhMDM5
OGFkOTQwZDUyNTAyNjU1Li42ZTViMWU3ZmJlNzJiYmQzMWJiOTg0NTdlMDJlY2Q0YzZhNDdkZTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEw
MiwxMyBAQCBib29sIFNlYXJjaElucHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmxlKQordm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKCFt
X3Jlc3VsdHNCdXR0b24pOwogICAgIEFTU0VSVCghbV9jYW5jZWxCdXR0b24pOwogCi0gICAgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNvbnRhaW5lciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IHRleHRXcmFwcGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFp
bmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDIyZjY4YzkyNWQ4
Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRiOGVmNjEuLjIzYTYyOTc0ZTIyZGE3NTdkZTIyZDk3YTI4
Mzg3MDc3NDg4MWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAt
NTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJp
bmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWlu
ZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZp
bmFsOwogICAgIEhUTUxFbGVtZW50KiByZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFs
OwogICAgIEhUTUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWU4Nzc4YmJk
OTAwOWE1ZGFiNzgxZTJkZmUzNzg4ZTkwOTdmYWM4Yy4uYTIzZTk0OTZmMTNlOGQ5NDIwMTc2NjIz
N2ZlNjU3NDViMmNlYjRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcApAQCAtMTA4LDcgKzEwOCwxMSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0CiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZh
bHVlKCkgY29uc3QKIHsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsK
LSAgICBBU1NFUlQoaW5uZXJUZXh0KTsKKyAgICBpZiAoIWlubmVyVGV4dCkgeworICAgICAgICAv
LyBTaW5jZSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBzaGFkb3cgc3VidHJlZSBpZiBhIHZhbHVlIGlz
IHNldCwgd2Uga25vdworICAgICAgICAvLyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgZm9yIChUZXh0KiB0ZXh0ID0gVGV4dE5vZGVU
cmF2ZXJzYWw6OmZpcnN0V2l0aGluKCppbm5lclRleHQpOyB0ZXh0OyB0ZXh0ID0gVGV4dE5vZGVU
cmF2ZXJzYWw6Om5leHQoKnRleHQsIGlubmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgaWYgKHRl
eHQtPmxlbmd0aCgpKQpAQCAtMjIxLDYgKzIyNSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQog
CiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsK
KyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewog
ICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAg
aWYgKGV2ZW50LmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzEsMTAgKzIzNyw4IEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNC
bHVyRXZlbnQgPSBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBp
ZiAoaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5
SGF2ZUNoYW5nZWQoKTsKLSAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2
ZW50IHx8IGlzQmx1ckV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlm
IChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAg
ICAgICAgIGVsZW1lbnQoKS0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQg
VGV4dEZpZWxkSW5wdXRUeXBlOjplbGVtZW50RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyMCwxMiBA
QCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkg
Y29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBz
TG9ja0luZGljYXRvcigqZWxlbWVudCgpKTsKIH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Ym9vbCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVl
KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRv
d1Jvb3QoKSk7CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aGFzQ2hpbGRO
b2RlcygpKTsKIAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFTU0VSVCghbV9pbm5l
ckJsb2NrKTsKQEAgLTMzMSw5ICszMzYsMTggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBz
aG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRoaXMtPnNob3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAg
Ym9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xv
Y2tJbmRpY2F0b3IoKTsKLSAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3Bp
bkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIo
KTsKKyAgICBib29sIHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdB
dXRvRmlsbEJ1dHRvbigpOworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wg
aGFzRGF0YUxpc3QgPSBlbGVtZW50KCktPmxpc3QoKTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRl
c0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0lu
ZGljYXRvciB8fCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKyAgICAgICAgfHwgaGFzRGF0YUxpc3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVk
c0NvbnRhaW5lcigpOwogCi0gICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAg
IG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQsIGVsZW1lbnQoKS0+aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CisgICAgdXBkYXRl
SW5uZXJUZXh0VmFsdWUoKTsKIAogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikgewogICAgICAg
ICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9pbm5lclRleHQpOwpAQCAtMzU4
LDcgKzM3MiwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogCiAgICAgICAgIG1fY29udGFp
bmVyLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJz
ZXIsICptX2NhcHNMb2NrSW5kaWNhdG9yKTsKICAgICB9CisKICAgICB1cGRhdGVBdXRvRmlsbEJ1
dHRvbigpOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZGF0YUxpc3RNYXlI
YXZlQ2hhbmdlZCgpOworI2VuZGlmCiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5
cGU6OmNvbnRhaW5lckVsZW1lbnQoKSBjb25zdApAQCAtMzczLDcgKzM5Miw2IEBAIEhUTUxFbGVt
ZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29uc3QKIAogUmVm
UHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5l
clRleHRFbGVtZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9pbm5lclRleHQpOwogICAgIHJl
dHVybiBtX2lubmVyVGV4dDsKIH0KIApAQCAtNDI1LDYgKzQ0Myw5IEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAK
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CisgICAg
aWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
bV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2Fw
dHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNDMzLDYgKzQ1
NCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiAK
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hhbmdlZCgpCiB7CisgICAg
aWYgKCFjcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
bV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2Fw
dHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNjE2LDkgKzY0
MCwxNCBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1
dGUoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkK
IHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRy
ZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIFN0cmluZyBw
bGFjZWhvbGRlclRleHQgPSBlbGVtZW50KCktPnBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNl
aG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKQEAg
LTgxNiwxMyArODQ1LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmls
bEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiB7CisgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCiAgICAgaWYgKHNob3Vs
ZERyYXdBdXRvRmlsbEJ1dHRvbigpKSB7CiAgICAgICAgIGlmICghbV9jb250YWluZXIpCiAgICAg
ICAgICAgICBjcmVhdGVDb250YWluZXIoKTsKIAotICAgICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
ICAgICAgICAgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVHlwZSA9IGVsZW1lbnQo
KS0+YXV0b0ZpbGxCdXR0b25UeXBlKCk7CiAgICAgICAgIGlmICghbV9hdXRvRmlsbEJ1dHRvbikK
ICAgICAgICAgICAgIGNyZWF0ZUF1dG9GaWxsQnV0dG9uKGF1dG9GaWxsQnV0dG9uVHlwZSk7CkBA
IC04NDYsNiArODc5LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxs
QnV0dG9uKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5n
ZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9jYWNoZWRTdWdnZXN0aW9ucyA9IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlz
dERyb3Bkb3duSW5kaWNhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmgKaW5kZXggNWEyNDMyNzY1ZjFjZDY4YTQ2MWE4ODUzNTMyNTgyODVmZTQ5OWY0OS4uNGUxYmIx
NTRjNWE3YjU2MWNiNTQ0ZmUyZDZmZmI4N2YwMmFjOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICNlbmRp
ZgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJv
b2wpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
YWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NmJjMDg3ZmI4OTg2ZGZiM2I4MWZj
ZmM3MTY0NWJmMDRmMzRiYzIxLi45Nzg4MmQ4NDc3MDFjYTE4NDI2NDAxYzY1NjQwZjRhNzllZjdm
MmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDItMTcgIENhbWVyb24gTWNDb3JtYWNr
ICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGlucHV0IGVsZW1lbnQgVUEgc2hh
ZG93IHRyZWUgY3JlYXRpb24gbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVl
LWNyZWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6eS1zaGFkb3ct
dHJlZS1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzdXBwb3J0c1R5cGUpOgorICAgICAg
ICAobWFrZUFuZEFwcGVuZElucHV0KToKKwogMjAyMi0wMi0xMSAgQWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgYGNvbnRhaW46Y29udGVudGAgYnJlYWtzIGZ1bGxzY3Jl
ZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1j
cmVhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MmNjNDQwYWU0ZDEw
NjNiYzQ3ODAyMjQ4OGE2NGMyOTMxZGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNo
YWRvdy10cmVlLWNyZWF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJz
ZXI6IHRydWUgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyOGEwZDliOWU0
Zjc5ZjQ0NGFkOTA0NWVkM2M5MjU5ZWIwYWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCkBAIC0wLDAgKzEs
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IGZh
bHNlIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xh
enktc2hhZG93LXRyZWUtY3JlYXRpb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenkt
c2hhZG93LXRyZWUtY3JlYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI4ZmI5ZjlmYzljZjVhNTMzYzA1
YmYxZDc2YjA5MzE1Mzc3ZDk0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcwpAQCAtMCwwICsxLDU3IEBACitjb25z
dCB0eXBlcyA9IHsKKyAgICAiY29sb3IiOiB7IHZhbHVlOiAiIzAwODAwMCIgfSwKKyAgICAiZGF0
ZSI6IHsgdmFsdWU6ICIyMDIyLTAxLTAxIiB9LAorICAgICJkYXRldGltZS1sb2NhbCI6IHsgdmFs
dWU6ICIyMDIyLTAxLTAxIiB9LAorICAgICJlbWFpbCI6IHsgdmFsdWU6ICJoZWxsb0BleGFtcGxl
LmNvbSIgfSwKKyAgICAiZmlsZSI6IHsgfSwKKyAgICAibW9udGgiOiB7IHZhbHVlOiAiMjAyMi0w
MSIgfSwKKyAgICAibnVtYmVyIjogeyB2YWx1ZTogIjEyMyIgfSwKKyAgICAicGFzc3dvcmQiOiB7
IH0sCisgICAgInJhbmdlIjogeyB2YWx1ZTogIjc1IiB9LAorICAgICJzZWFyY2giOiB7IHZhbHVl
OiAiYWJjIiB9LAorICAgICJ0ZWxlcGhvbmUiOiB7IHZhbHVlOiAiKzYxMzAwMDAwMDAwIiB9LAor
ICAgICJ0ZXh0IjogeyB2YWx1ZTogImFiYyIgfSwKKyAgICAidGltZSI6IHsgdmFsdWU6ICIxMDow
MCIgfSwKKyAgICAidXJsIjogeyB2YWx1ZTogImh0dHBzOi8vZXhhbXBsZS5jb20vIiB9LAorICAg
ICJ3ZWVrIjogeyB2YWx1ZTogIjIwMjItVzEiIH0sCit9OworCitmdW5jdGlvbiBzdXBwb3J0c1R5
cGUodHlwZU5hbWUpIHsKKyAgICBsZXQgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CisgICAgZS50eXBlID0gdHlwZU5hbWU7CisgICAgcmV0dXJuIGUudHlwZSA9PSB0eXBlTmFt
ZTsKK30KKworZnVuY3Rpb24gbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCBh
dHRyaWJ1dGVzID0geyB9KSB7CisgICAgbGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoc3Bhbik7CisKKyAgICBpZiAob3B0
aW9ucy51c2VQYXJzZXIpIHsKKyAgICAgICAgbGV0IHRhZyA9IGA8aW5wdXQgdHlwZT0iJHt0eXBl
TmFtZX0iYDsKKyAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICAg
ICAgdGFnICs9IGAgJHtuYW1lfT0iJHthdHRyaWJ1dGVzW25hbWVdfSJgOworICAgICAgICB0YWcg
Kz0gIj4iOworICAgICAgICBzcGFuLmlubmVySFRNTCA9IHRhZzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAg
ICBpbnB1dC50eXBlID0gdHlwZU5hbWU7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmli
dXRlcykKKyAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGVzW25h
bWVdKTsKKyAgICAgICAgc3Bhbi5hcHBlbmQoaW5wdXQpOworICAgIH0KK30KKworZnVuY3Rpb24g
cnVuKG9wdGlvbnMpIHsKKyAgICBmb3IgKGxldCB0eXBlTmFtZSBpbiB0eXBlcykgeworICAgICAg
ICBpZiAoIXN1cHBvcnRzVHlwZSh0eXBlTmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBsZXQgdHlwZSA9IHR5cGVzW3R5cGVOYW1lXTsKKyAgICAgICAgbWFrZUFuZEFwcGVu
ZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lKTsKKworICAgICAgICBpZiAodHlwZS52YWx1ZSkKKyAg
ICAgICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgeyB2YWx1ZTog
dHlwZS52YWx1ZSB9KTsKKworICAgICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlw
ZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUsIGRpc2FibGVkOiAiZGlzYWJsZWQiIH0pOworICAg
IH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452578</attachid>
            <date>2022-02-18 13:59:34 -0800</date>
            <delta_ts>2022-02-18 14:33:47 -0800</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-236747-20220219085932.patch</filename>
            <type>text/plain</type>
            <size>43858</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uZmQ4MjliNzRiN2JkMTFjYzY5ZWI3OGYyMDFkNTcx
Y2IwZTM1MDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAyMi0wMi0xNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlZFNoYWRvd1N1YnRyZWUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlm
IGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdoZXRo
ZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRv
d1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3JlYXRl
IHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4dEVs
ZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMKKyAg
ICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVtZW50
KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBlLT5j
cmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0ZSB0
aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRp
ZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVlZCB0
byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAgICAg
KiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAgICAg
RW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8gcG9r
ZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndhcmRF
dmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cgdHJl
ZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJlIHRo
ZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBiZWZv
cmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvcklu
ZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBiZWVu
IGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQgb25s
eSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGludG8g
dGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0cmVl
IGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAg
ICAgICAgRW5zdXJlIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkIGluIGNhc2UgdGhl
IGV2ZW50IHdpbGwgY2hhbmdlCisgICAgICAgIHRoZSB2YWx1ZS4KKworICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCBjb25zdCk6CisgICAgICAgIE9u
bHkgcmV0dXJuIHRoZSBlbGVtZW50IGlmIGl0J3MgYmVlbiBjcmVhdGVkLgorCisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQgY29uc3QpOgor
ICAgICAgICBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6Cisg
ICAgICAgIE9ubHkgdHJ5IHRvIHJlLWxheW91dCBpZiB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4g
Y3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlIGNvbnN0KToKKyAg
ICAgICAgQXZvaWQgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudCk6CisgICAgICAgIE1vdmUgdGhl
IGVsZW1lbnQgYXNzZXJ0aW9uIHVwIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxl
bWVudCBjb25zdCk6CisgICAgICAgIERvbid0IGFzc2VydCwgc2luY2UgdGhpcyBub3cgY2FuIGxl
Z2l0aW1hdGVseSByZXR1cm4gbnVsbC4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5n
ZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25s
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5
cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElu
cHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAgICAgIERvbid0IHVwZGF0ZSB0
aGUgc2hhZG93IHRyZWUgY29udGVudHMgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQuCisg
ICAgICAgIGNyZWF0ZVNoYWRvd1RyZWUgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGl0IGNy
ZWF0ZXMgdGhlIHNoYWRvdworICAgICAgICB0cmVlIGNvbnRlbnRzIHJlZmxlY3RpbmcgdGhlIGN1
cnJlbnQgc3RhdGUuCisKIDIwMjItMDItMTYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXNlIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
ciB3aGVuIGNyZWF0aW5nIGlucHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY29udGVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRl
eCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZkYTM1YzQ2Li5jZjdjYzMxZjM0MmY3
YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKQog
ICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMzM0
LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93
U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0
VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgY3JlYXRlU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkgewogICAg
ICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNlYjZkNTVmMWNh
MzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVmOGUxOWZmYjQ4ODU1ZjRlMmZlODJl
M2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01v
dXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRl
RXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJl
ZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBmaW5hbDsKICAgICBi
b29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDc3MzEyNDMwMmViNzhhNjJjNTdjNTZkNzBiMTZlMjBj
YzAzNzhjYi4uZmFiY2NkMDA3ZjUyNjMwMGViNGNhNzBjNDBjYmQ2MTg0MDRlYWI0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBDb2xv
ciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFyc2VT
aW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSkudmFsdWUoKTsKIH0KIAotdm9pZCBD
b2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA5YjU3MGQw
ODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4xMTZkYWIxMTdiOTc1OWIyMzYxNzM3
MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29u
c3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBT
dHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Ym9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAg
dm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDUzZTVj
YTM4M2NmZTM3NzRiMTVmODUwMDQ0N2ZhYWMzMDgxMDI5MGEuLjkyMmM1YTM5MGM0ZDIzOTU4ZjVm
ZjZhODQxNDQ5YTQ1NDA4MWFlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25z
dCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQoKS0+
aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9v
bCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNT
RVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBB
U1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKKworICAgIGF1dG8gYnV0dG9u
ID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9y
TXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9p
ZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAgIGF1
dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9v
dCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0aXBs
ZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAgICAg
aWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9u
RWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+c2V0
VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVz
TGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRiNTcx
ZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1NWUwMDAyM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7Cisg
ICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2MmI2YTc2
ODEyMDNmOWQ2MWU0MWQzNTgzNmVhMzBiNGY4YzQyMGJlLi5hMTYxZDY4OGQzODQyYjhiZTFhYjdl
YWVjZmRjMjQ5YjY2MDgyMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogI2VuZGlm
CiAgICAgLCBtX2lzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KGZhbHNl
KQogewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0
ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRl
eHQgaW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBkZXN0
cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2Vy
IHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlzIGxh
emlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25z
dHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3QgdG8g
ZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBh
cnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRCeVBh
cnNlcikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMp
OwogCkBAIC0xNDcsMTQgKzE0Nyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJlZjxI
VE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0s
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9v
dExhemlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gaW5w
dXRFbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRv
d1Jvb3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5cGUt
Pm5lZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAgICBy
ZXR1cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBI
VE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKQEAg
LTE2NCwxMiArMTU3LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1
cmVJbWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVt
ZW50RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlw
ZSgqbV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1l
bnRFZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQo
KQogewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzE5OSwx
MSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVy
VGV4dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4g
SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRDcmVh
dGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElucHV0
RWxlbWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0
VHlwZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTcyLDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVs
ZW1lbnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAo
bV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3Jl
YXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRW
YWxpZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5wdXRF
bGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBl
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYgKHR5
cGUuaXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRl
eHQoKnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJl
ZSgpKTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAg
ICAgICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5wdXRU
eXBlOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFk
b3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAg
ICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAg
cmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RUeXBl
VXBkYXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSAm
JiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVtcHR5
TGlzdCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCisgICAgaWYg
KGlzQ29ubmVjdGVkKCkpCisgICAgICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA4MmFl
NzFkNTBiZThhZGRhODM0M2MwNzgxMjAzODY4MjhjMzUzOTkxLi5jMWM3NjIwZGMxODBlODNkZDM0
Zjg5NWZiMzEwZGM3ZGVmZDJkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFp
bmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVy
QmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIHJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0IGZpbmFsOwogCisgICAgYm9vbCBp
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNBdXRv
RmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc0LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotCiAg
ICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9t
Rm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShL
ZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg1LDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIGJv
b2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhaGFz
QXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29sIGNhblRyaWdn
ZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1RleHRGaWVsZCgp
OyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDY2
OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJmMDBkYjVkYzA2ZGQz
MDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KCkg
Y29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisK
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQogewog
ICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYwZWIyZjMuLjAwNzdm
MDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVt
ZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0
aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNjMWEy
MWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4NmVkOWRmYjE4NmIw
Mjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBp
ZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5uZXJU
ZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChhdXRv
IGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5kZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJlYWso
VUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2Fycmlh
Z2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVsZAog
ICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6Om1h
eChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1l
bnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1bWVudCgpLmZvY3Vz
ZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlubmVyVGV4dCkgewog
ICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAgICBB
U1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwogICAg
IEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwogICAg
IHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMgU3RyaW5nIGlubmVy
VGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkKIHZv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2FsbG93
ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRpbWl6
YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGF1
dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk5ODZh
YzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2OGVjMWM4MjRlYTA1
Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8VGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0
RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwg
UmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSA9IDA7
CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNlYWJlZDVjZDE3MWZl
ZjhmM2Y2YjUxOTZlYTMzMmIuLjM4Yjk5MGFiNjJmMzY5ZmIxZDhlZTA3OTRjMGU3NDI5M2RmMzk3
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQogCi12
b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IElu
cHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkK
K3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaW5uZXJU
ZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRGb3JEaWFsb2dTdWJt
aXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVtZW50
KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlSWZO
ZWVkZWQoKQoreworICAgIGlmIChtX2NyZWF0ZWRTaGFkb3dTdWJ0cmVlIHx8ICFuZWVkc1NoYWRv
d1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRo
aXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBt
X2NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4
IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFjZWUuLmQwOGZjMDFkNTE2OGUw
NjkwZDNmZmVhZWNiYzA4YjhiOGJlMGMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAt
MjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdDsK
ICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc1NoYWRvd1N1
YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5cGVzLmNvbnRhaW5zKG1fdHlw
ZSk7IH0KKyAgICBib29sIGNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9j
cmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8gRm9ybSB2YWx1ZSBmdW5jdGlvbnMuCiAK
QEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBTaGFkb3cgdHJlZSBoYW5kbGlu
Zy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKIAogICAgIHZpcnR1YWwgSFRN
TEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CkBA
IC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQog
ICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0QnV0dG9uRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgp
OwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuCiAKQEAgLTQxMyw2ICs0MTYsNyBA
QCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGx5U3RlcChpbnQgY291bnQsIEFu
eVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcik7CiAKICAgICBjb25zdCBUeXBl
IG1fdHlwZTsKKyAgICBib29sIG1fY3JlYXRlZFNoYWRvd1N1YnRyZWUgeyBmYWxzZSB9OwogICAg
IC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBlIGlzIG5vIGxvbmdlciBhc3Nv
Y2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVtZW50IGRpZWQgb3IgY2hhbmdl
ZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwOWQ1ODljZjNk
ODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEuLjQ3MGM3MDAxMTNmOWI5NmJhNDU2MGIxZmVk
ODkxODMxNGViNGUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBA
IC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB2b2lkIFJhbmdlSW5w
dXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQo
VG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAo
IWNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2
ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1l
bnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5MiwxOCBAQCBib29sIFJhbmdlSW5wdXRUeXBl
OjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRp
c2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkp
CisgICAgICAgIHJldHVybjsKICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNh
YmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlk
b3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5k
bGVyCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVz
OworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAg
IHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogCkBAIC0yNDEsNyArMjU2
LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFzZUUKICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VF
dmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBS
YW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRz
U2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKQEAgLTI1OSw2ICsyNzQs
MTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib28KIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlw
ZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsK
KworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAg
IEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsg
Ly8gY29udGFpbmVyCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCktPmlzSFRNTEVsZW1lbnQoKSk7CkBAIC0yNzcsNiArMjk2LDcgQEAgSFRN
TEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogCiBT
bGlkZXJUaHVtYkVsZW1lbnQmIFJhbmdlSW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxlbWVu
dCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKGNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFT
U0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1bWIKICAgICBB
U1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgp
KTsKIApAQCAtMzIyLDcgKzM0Miw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlmIChlbGVtZW50
LT5oYXNEaXJ0eVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0VmFsdWUoZWxl
bWVudC0+dmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1l
bnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgICAgICBpZiAoY3JlYXRlZFNoYWRvd1N1
YnRyZWUoKSkKKyAgICAgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKICAgICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5h
bWUpOwogfQpAQCAtMzM5LDcgKzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAg
ICAgIGVsZW1lbnQoKS0+c2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1
ZSk7CiAgICAgfQogCi0gICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZy
b21WYWx1ZSgpOworICAgIGlmIChjcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICB0eXBl
ZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIFN0cmlu
ZyBSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkwLDcg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CiAgICAg
bV90aWNrTWFya1ZhbHVlc0RpcnR5ID0gdHJ1ZTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNs
aWRlclRyYWNrRWxlbWVudCA9IHRoaXMtPnNsaWRlclRyYWNrRWxlbWVudCgpOwotICAgIGlmIChz
bGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKHNsaWRlclRyYWNrRWxlbWVu
dCAmJiBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHNsaWRlclRyYWNr
RWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDI5NjRjNjRlOWQzZGY0MGZlOTViYjU3MmI5MTc2M2Q0
M2ZlYzdjYmIuLjEwZmQzYTcyZTdkNmQwYjAxN2VmNmJiMmI0Yjk1NTA0OGMwMTU5YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmKSBmaW5hbDsKICAgICBT
aG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVu
dCYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lk
IGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBz
ZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5
QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2Vh
cmNoSW5wdXRUeXBlLmNwcAppbmRleCBmNzBiMTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUy
NTAyNjU1Li42ZTViMWU3ZmJlNzJiYmQzMWJiOTg0NTdlMDJlY2Q0YzZhNDdkZTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBi
b29sIFNlYXJjaElucHV0VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmxlKQordm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewog
ICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdHNC
dXR0b24pOwogICAgIEFTU0VSVCghbV9jYW5jZWxCdXR0b24pOwogCi0gICAgVGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRh
aW5lciA9IGNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRX
cmFwcGVyID0gaW5uZXJCbG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDIyZjY4YzkyNWQ4Njc5NjQxMzBl
OGVmMzE3OTdiYzkwZWRiOGVmNjEuLjIzYTYyOTc0ZTIyZGE3NTdkZTIyZDk3YTI4Mzg3MDc3NDg4
MWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0
cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAg
IEhUTUxFbGVtZW50KiByZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEhU
TUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWU4Nzc4YmJkOTAwOWE1ZGFi
NzgxZTJkZmUzNzg4ZTkwOTdmYWM4Yy4uYTM1NzRlNGNkMzNmNWY5M2UxNjBhYWQzN2JiNzNjMzdi
MzY0MWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApA
QCAtMTA4LDcgKzEwOCwxMSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3Vz
YWJsZSgpIGNvbnN0CiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlKCkgY29u
c3QKIHsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBBU1NF
UlQoaW5uZXJUZXh0KTsKKyAgICBpZiAoIWlubmVyVGV4dCkgeworICAgICAgICAvLyBTaW5jZSB3
ZSBhbHdheXMgY3JlYXRlIHRoZSBzaGFkb3cgc3VidHJlZSBpZiBhIHZhbHVlIGlzIHNldCwgd2Ug
a25vdworICAgICAgICAvLyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQogCiAgICAgZm9yIChUZXh0KiB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6
OmZpcnN0V2l0aGluKCppbm5lclRleHQpOyB0ZXh0OyB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6
Om5leHQoKnRleHQsIGlubmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgaWYgKHRleHQtPmxlbmd0
aCgpKQpAQCAtMjIxLDYgKzIyNSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVL
ZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NF
UlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewogICAgICAgICBt
X2lubmVyU3BpbkJ1dHRvbi0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzEsMTAgKzIzNyw4IEBAIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZlbnQg
PSBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNGb2N1
c0V2ZW50IHx8IGlzQmx1ckV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5n
ZWQoKTsKLSAgICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlz
Qmx1ckV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmIChldmVudC5p
c01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGVs
ZW1lbnQoKS0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjplbGVtZW50RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyMCwxMiBAQCBib29sIFRl
eHRGaWVsZElucHV0VHlwZTo6c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QKICAg
ICByZXR1cm4gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0luZGlj
YXRvcigqZWxlbWVudCgpKTsKIH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lu
bmVyVGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAg
IEFTU0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7
CisgICAgQVNTRVJUKCFlbGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aGFzQ2hpbGROb2RlcygpKTsK
IAogICAgIEFTU0VSVCghbV9pbm5lclRleHQpOwogICAgIEFTU0VSVCghbV9pbm5lckJsb2NrKTsK
QEAgLTMzMSw5ICszMzYsMTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRIYXZl
U3BpbkJ1dHRvbiA9IHRoaXMtPnNob3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBzaG91
bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0
b3IoKTsKLSAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8
fCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAgICBi
b29sIHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmlsbEJ1
dHRvbigpOworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0YUxp
c3QgPSBlbGVtZW50KCktPmxpc3QoKTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5l
ciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8
fCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
KyAgICAgICAgfHwgaGFzRGF0YUxpc3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRhaW5l
cigpOwogCi0gICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIG1faW5uZXJU
ZXh0ID0gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGVsZW1l
bnQoKS0+aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiAKICAgICBpZiAoIWNyZWF0ZXND
b250YWluZXIpIHsKICAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFw
cGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1f
aW5uZXJUZXh0KTsKQEAgLTM1OCw3ICszNzEsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkK
IAogICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAg
ICAgdXBkYXRlQXV0b0ZpbGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQorICAgIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVu
dCogVGV4dEZpZWxkSW5wdXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3
ICszOTEsNiBAQCBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxl
bWVudCgpIGNvbnN0CiAKIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRG
aWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
aW5uZXJUZXh0KTsKICAgICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDIs
OSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0
ZUNoYW5nZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3Bp
bkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5n
ZWQoKTsKQEAgLTQzMyw2ICs0NTMsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0
ZUNoYW5nZWQoKQogeworICAgIGlmICghY3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3Bp
bkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5n
ZWQoKTsKQEAgLTYxNiw5ICs2MzksMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3Vs
ZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0
ZVBsYWNlaG9sZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAo
IWNyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghc3Vw
cG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQo
KSk7CisKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5wbGFjZWhvbGRl
cigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICht
X3BsYWNlaG9sZGVyKSB7CkBAIC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0
dG9uVAogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQog
eworICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFjcmVhdGVkU2hhZG93U3VidHJl
ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQo
KTsKIAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAgICAgICBpZiAo
IW1fY29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKLSAgICAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1
dHRvblR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAgICAgICBpZiAo
IW1fYXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1dHRvbihhdXRv
RmlsbEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpk
YXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWNyZWF0ZWRTaGFkb3dTdWJ0cmVl
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAK
ICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4
Mjg1ZmU0OTlmNDkuLjRlMWJiMTU0YzVhN2I1NjFjYjU0NGZlMmQ2ZmZiODdmMDJhYzllM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAsNyBA
QCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigp
IGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTZi
YzA4N2ZiODk4NmRmYjNiODFmY2ZjNzE2NDViZjA0ZjM0YmMyMS4uOTc4ODJkODQ3NzAxY2ExODQy
NjQwMWM2NTY0MGY0YTc5ZWY3ZjJlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTE3
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBp
bnB1dCBlbGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3Vw
cG9ydHNUeXBlKToKKyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisKIDIwMjItMDItMTEg
IEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGBjb250YWluOmNvbnRl
bnRgIGJyZWFrcyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhNjJjYzQ0MGFlNGQxMDYzYmM0NzgwMjI0ODhhNjRjMjkzMWRjY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24t
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorcnVuKHsgdXNlUGFyc2VyOiB0cnVlIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2MjhhMGQ5YjllNGY3OWY0NDRhZDkwNDVlZDNjOTI1OWViMGFjN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
cnVuKHsgdXNlUGFyc2VyOiBmYWxzZSB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
OGZiOWY5ZmM5Y2Y1YTUzM2MwNWJmMWQ3NmIwOTMxNTM3N2Q5NDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMKQEAg
LTAsMCArMSw1NyBAQAorY29uc3QgdHlwZXMgPSB7CisgICAgImNvbG9yIjogeyB2YWx1ZTogIiMw
MDgwMDAiIH0sCisgICAgImRhdGUiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZGF0
ZXRpbWUtbG9jYWwiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZW1haWwiOiB7IHZh
bHVlOiAiaGVsbG9AZXhhbXBsZS5jb20iIH0sCisgICAgImZpbGUiOiB7IH0sCisgICAgIm1vbnRo
IjogeyB2YWx1ZTogIjIwMjItMDEiIH0sCisgICAgIm51bWJlciI6IHsgdmFsdWU6ICIxMjMiIH0s
CisgICAgInBhc3N3b3JkIjogeyB9LAorICAgICJyYW5nZSI6IHsgdmFsdWU6ICI3NSIgfSwKKyAg
ICAic2VhcmNoIjogeyB2YWx1ZTogImFiYyIgfSwKKyAgICAidGVsZXBob25lIjogeyB2YWx1ZTog
Iis2MTMwMDAwMDAwMCIgfSwKKyAgICAidGV4dCI6IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRp
bWUiOiB7IHZhbHVlOiAiMTA6MDAiIH0sCisgICAgInVybCI6IHsgdmFsdWU6ICJodHRwczovL2V4
YW1wbGUuY29tLyIgfSwKKyAgICAid2VlayI6IHsgdmFsdWU6ICIyMDIyLVcxIiB9LAorfTsKKwor
ZnVuY3Rpb24gc3VwcG9ydHNUeXBlKHR5cGVOYW1lKSB7CisgICAgbGV0IGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGUudHlwZSA9IHR5cGVOYW1lOworICAgIHJldHVy
biBlLnR5cGUgPT0gdHlwZU5hbWU7Cit9CisKK2Z1bmN0aW9uIG1ha2VBbmRBcHBlbmRJbnB1dChv
cHRpb25zLCB0eXBlTmFtZSwgYXR0cmlidXRlcyA9IHsgfSkgeworICAgIGxldCBzcGFuID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNw
YW4pOworCisgICAgaWYgKG9wdGlvbnMudXNlUGFyc2VyKSB7CisgICAgICAgIGxldCB0YWcgPSBg
PGlucHV0IHR5cGU9IiR7dHlwZU5hbWV9ImA7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0
cmlidXRlcykKKyAgICAgICAgICAgIHRhZyArPSBgICR7bmFtZX09IiR7YXR0cmlidXRlc1tuYW1l
XX0iYDsKKyAgICAgICAgdGFnICs9ICI+IjsKKyAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0YWc7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTsKKyAgICAgICAgaW5wdXQudHlwZSA9IHR5cGVOYW1lOworICAgICAgICBmb3Ig
KGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUo
bmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7CisgICAgICAgIHNwYW4uYXBwZW5kKGlucHV0KTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bihvcHRpb25zKSB7CisgICAgZm9yIChsZXQgdHlwZU5hbWUg
aW4gdHlwZXMpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1R5cGUodHlwZU5hbWUpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgbGV0IHR5cGUgPSB0eXBlc1t0eXBlTmFtZV07Cisg
ICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSk7CisKKyAgICAgICAg
aWYgKHR5cGUudmFsdWUpCisgICAgICAgICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywg
dHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUgfSk7CisKKyAgICAgICAgbWFrZUFuZEFwcGVu
ZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZhbHVlOiB0eXBlLnZhbHVlLCBkaXNhYmxlZDog
ImRpc2FibGVkIiB9KTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452583</attachid>
            <date>2022-02-18 14:33:53 -0800</date>
            <delta_ts>2022-02-21 12:31:11 -0800</delta_ts>
            <desc>Patch v1.3</desc>
            <filename>bug-236747-20220219093351.patch</filename>
            <type>text/plain</type>
            <size>43915</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uOGNmM2I3MjAyZjY2MTBjODdhNjliYjU0NjY4NmRl
MDgyMjczNWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAyMi0wMi0xNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToK
KyAgICAgICAgRW5zdXJlIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkIGluIGNhc2Ug
dGhlIGV2ZW50IHdpbGwgY2hhbmdlCisgICAgICAgIHRoZSB2YWx1ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCBjb25zdCk6CisgICAgICAg
IE9ubHkgcmV0dXJuIHRoZSBlbGVtZW50IGlmIGl0J3MgYmVlbiBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQgY29uc3Qp
OgorICAgICAgICBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLgorCisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6
CisgICAgICAgIE9ubHkgdHJ5IHRvIHJlLWxheW91dCBpZiB0aGUgc2hhZG93IHRyZWUgaGFzIGJl
ZW4gY3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlIGNvbnN0KToK
KyAgICAgICAgQXZvaWQgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudCk6CisgICAgICAgIE1vdmUg
dGhlIGVsZW1lbnQgYXNzZXJ0aW9uIHVwIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmdW5j
dGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0
RWxlbWVudCBjb25zdCk6CisgICAgICAgIERvbid0IGFzc2VydCwgc2luY2UgdGhpcyBub3cgY2Fu
IGxlZ2l0aW1hdGVseSByZXR1cm4gbnVsbC4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFk
T25seVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAgICAgIERvbid0IHVwZGF0
ZSB0aGUgc2hhZG93IHRyZWUgY29udGVudHMgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQu
CisgICAgICAgIGNyZWF0ZVNoYWRvd1RyZWUgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGl0
IGNyZWF0ZXMgdGhlIHNoYWRvdworICAgICAgICB0cmVlIGNvbnRlbnRzIHJlZmxlY3RpbmcgdGhl
IGN1cnJlbnQgc3RhdGUuCisKIDIwMjItMDItMTYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2Ft
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXNlIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBh
cnNlciB3aGVuIGNyZWF0aW5nIGlucHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY29udGVudHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApp
bmRleCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZkYTM1YzQ2Li5jZjdjYzMxZjM0
MmY3YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9p
ZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQm
KQogICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBB
U1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAt
MzM0LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hh
ZG93U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJU
ZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgY3JlYXRlU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkgewog
ICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNlYjZkNTVm
MWNhMzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVmOGUxOWZmYjQ4ODU1ZjRlMmZl
ODJlM2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVB
bmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9p
ZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3Vi
dHJlZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBmaW5hbDsKICAg
ICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDc3MzEyNDMwMmViNzhhNjJjNTdjNTZkNzBiMTZl
MjBjYzAzNzhjYi4uZmFiY2NkMDA3ZjUyNjMwMGViNGNhNzBjNDBjYmQ2MTg0MDRlYWI0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBD
b2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFy
c2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSkudmFsdWUoKTsKIH0KIAotdm9p
ZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA5YjU3
MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4xMTZkYWIxMTdiOTc1OWIyMzYx
NzM3MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkg
Y29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAg
ICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQo
RXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDUz
ZTVjYTM4M2NmZTM3NzRiMTVmODUwMDQ0N2ZhYWMzMDgxMDI5MGEuLjkyMmM1YTM5MGM0ZDIzOTU4
ZjVmZjZhODQxNDQ5YTQ1NDA4MWFlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQo
KS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Ym9vbCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAg
QVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAg
ICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKKworICAgIGF1dG8gYnV0
dG9uID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKIH0KIAog
dm9pZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJU
KGVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAg
IGF1dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICgh
cm9vdCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0
aXBsZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAg
ICAgaWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0
dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+
c2V0VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZp
bGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRi
NTcxZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1NWUwMDAyM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7
CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxl
ZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2MmI2
YTc2ODEyMDNmOWQ2MWU0MWQzNTgzNmVhMzBiNGY4YzQyMGJlLi5hMTYxZDY4OGQzODQyYjhiZTFh
YjdlYWVjZmRjMjQ5YjY2MDgyMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogI2Vu
ZGlmCiAgICAgLCBtX2lzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KGZh
bHNlKQogewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3Ry
dWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBh
IHRleHQgaW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBk
ZXN0cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFy
c2VyIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlz
IGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBj
b25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3Qg
dG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhl
IHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRC
eVBhcnNlcikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRo
aXMpOwogCkBAIC0xNDcsMTQgKzE0Nyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJl
ZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93
Um9vdExhemlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4g
aW5wdXRFbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNo
YWRvd1Jvb3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5
cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVV
c2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAg
ICByZXR1cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQog
CiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkK
QEAgLTE2NCwxMiArMTU3LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50Ojpl
bnN1cmVJbWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0
VHlwZSgqbV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVs
ZW1lbnRFZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1l
bnQoKQogewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzE5
OSwxMSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVt
ZW50Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlu
bmVyVGV4dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gSFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRD
cmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElu
cHV0RWxlbWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTcyLDcgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJv
bUVsZW1lbnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBp
ZiAobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+
Y3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVB
bmRWYWxpZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0
eXBlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYg
KHR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0
ZVRleHQoKnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7
CiAgICAgICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5w
dXRUeXBlOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNT
aGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwot
ICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAg
ICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RU
eXBlVXBkYXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsOCBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUo
KSAmJiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVt
cHR5TGlzdCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCisgICAg
aWYgKGlzQ29ubmVjdGVkKCkpCisgICAgICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0
cmVlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA4
MmFlNzFkNTBiZThhZGRhODM0M2MwNzgxMjAzODY4MjhjMzUzOTkxLi5jMWM3NjIwZGMxODBlODNk
ZDM0Zjg5NWZiMzEwZGM3ZGVmZDJkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29u
dGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlu
bmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIHJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0IGZpbmFsOwogCisgICAgYm9v
bCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNB
dXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc0LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwot
CiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ3Vz
dG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJs
ZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg1LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsKIAotICAg
IGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAh
aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29sIGNhblRy
aWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1RleHRGaWVs
ZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IDY2OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJmMDBkYjVkYzA2
ZGQzMDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8VGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50
KCkgY29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9
CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQog
ewogICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYwZWIyZjMuLjAw
NzdmMDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRF
bGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9w
ZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNj
MWEyMWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4NmVkOWRmYjE4
NmIwMjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAg
ICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5u
ZXJUZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChh
dXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5k
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJl
YWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2Fy
cmlhZ2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVs
ZAogICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6
Om1heChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVs
ZW1lbnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1bWVudCgpLmZv
Y3VzZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlubmVyVGV4dCkg
ewogICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAg
ICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwog
ICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwog
ICAgIHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMgU3RyaW5nIGlu
bmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkK
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2Fs
bG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRp
bWl6YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAg
IGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk5
ODZhYzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2OGVjMWM4MjRl
YTA1Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJU
ZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1
YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSA9
IDA7CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNlYWJlZDVjZDE3
MWZlZjhmM2Y2YjUxOTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIwZTg1YzkxNDIxYTE0YjYyZmI3
ZGQ5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2
b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQog
Ci12b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+
IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVk
KCkKK3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaW5u
ZXJUZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRGb3JEaWFsb2dT
dWJtaXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVt
ZW50KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKQoreworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIHx8ICFuZWVk
c1NoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90ZWN0ZWRUaGlz
IHsgKnRoaXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsK
KyAgICBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFjZWUuLjgxMmQ1
ODhiNmVkOGQwMzg5MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRMYWJlbHMo
KSBjb25zdDsKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVk
c1NoYWRvd1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5cGVzLmNvbnRh
aW5zKG1fdHlwZSk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8gRm9ybSB2YWx1
ZSBmdW5jdGlvbnMuCiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBTaGFk
b3cgdHJlZSBoYW5kbGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKIAog
ICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0QnV0dG9uRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuCiAKQEAg
LTQxMyw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGx5U3Rl
cChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcik7CiAK
ICAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRy
ZWUgeyBmYWxzZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBl
IGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVt
ZW50IGRpZWQgb3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CmluZGV4IDgwOWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEuLmY5Mjk2N2M0
NDE2M2UwZjA3NDU5NDljMWI4YjQ5MzUxMjRmMGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNv
bnN0CiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50
JiBldmVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRl
ZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+
aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsx
NTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VF
dmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAg
IHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVt
YkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9T
TElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5Miwx
OCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAo
IWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRv
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQp
IC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBT
aG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50
SGFuZGxlcjo6WWVzOwogCkBAIC0yNDEsNyArMjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFz
ZUUKICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9p
ZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKQEAgLTI1OSw2ICsyNzQsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b28KIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRv
d1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQoZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gY29udGFpbmVyCiAgICAgQVNTRVJU
KGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVs
ZW1lbnQoKSk7CkBAIC0yNzcsNiArMjk2LDcgQEAgSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBl
OjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogCiBTbGlkZXJUaHVtYkVsZW1lbnQmIFJhbmdl
SW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0CiB7CisgICAgQVNTRVJU
KGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1l
bnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVt
ZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKIApAQCAtMzIyLDcgKzM0Miw4
IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVudC0+dmFsdWUoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21W
YWx1ZSgpOworICAgICAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAg
ICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAg
ICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcg
KzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0
VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAg
dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlm
IChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxl
bWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlw
ZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkwLDcgQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CiAgICAgbV90aWNrTWFya1ZhbHVl
c0RpcnR5ID0gdHJ1ZTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNsaWRlclRyYWNrRWxlbWVu
dCA9IHRoaXMtPnNsaWRlclRyYWNrRWxlbWVudCgpOwotICAgIGlmIChzbGlkZXJUcmFja0VsZW1l
bnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudCAmJiBzbGlkZXJUcmFj
a0VsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCmluZGV4IDI5NjRjNjRlOWQzZGY0MGZlOTViYjU3MmI5MTc2M2Q0M2ZlYzdjYmIuLjEwZmQz
YTcyZTdkNmQwYjAxN2VmNmJiMmI0Yjk1NTA0OGMwMTU5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRs
ZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmKSBmaW5hbDsKICAgICBTaG91bGRDYWxsQmFzZUV2
ZW50SGFuZGxlciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29uc3Qg
RGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2Vu
ZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2Vh
cmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNw
cAppbmRleCBmNzBiMTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1Li42ZTViMWU3
ZmJlNzJiYmQzMWJiOTg0NTdlMDJlY2Q0YzZhNDdkZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElucHV0
VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBT
ZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVk
c1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdHNCdXR0b24pOwogICAgIEFT
U0VSVCghbV9jYW5jZWxCdXR0b24pOwogCi0gICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5lciA9IGNvbnRhaW5l
ckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFwcGVyID0gaW5uZXJC
bG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5oCmluZGV4IDIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRi
OGVmNjEuLjIzYTYyOTc0ZTIyZGE3NTdkZTIyZDk3YTI4Mzg3MDc3NDg4MWVmNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBy
ZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBjYW5j
ZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWU4Nzc4YmJkOTAwOWE1ZGFiNzgxZTJkZmUzNzg4ZTkw
OTdmYWM4Yy4uMzcwNTZlNDVlYjFhNzVjMTRmZDQzZTY1NmYxMzE0OWZhNTFmMDMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTA4LDcgKzEwOCwx
MSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0CiBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRv
IGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBBU1NFUlQoaW5uZXJUZXh0KTsK
KyAgICBpZiAoIWlubmVyVGV4dCkgeworICAgICAgICAvLyBTaW5jZSB3ZSBhbHdheXMgY3JlYXRl
IHRoZSBzaGFkb3cgc3VidHJlZSBpZiBhIHZhbHVlIGlzIHNldCwgd2Uga25vdworICAgICAgICAv
LyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
CiAgICAgZm9yIChUZXh0KiB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCpp
bm5lclRleHQpOyB0ZXh0OyB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6Om5leHQoKnRleHQsIGlu
bmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgaWYgKHRleHQtPmxlbmd0aCgpKQpAQCAtMjIxLDYg
KzIyNSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnRGb3JT
cGluQnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsK
KwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRv
bi0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRIYW5kbGVk
KCkpCkBAIC0yMzEsMTAgKzIzNyw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJk
RXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZlbnQgPSBldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNGb2N1c0V2ZW50IHx8IGlzQmx1
ckV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKLSAgICBpZiAo
ZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KSB7Ci0g
ICAgICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8
fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGVsZW1lbnQoKS0+Zm9yd2Fy
ZEV2ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVt
ZW50RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyMCwxMiBAQCBib29sIFRleHRGaWVsZElucHV0VHlw
ZTo6c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcigqZWxlbWVudCgp
KTsKIH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkK
IHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFl
bGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCgh
bV9pbm5lclRleHQpOwogICAgIEFTU0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSw5ICszMzYs
MTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBl
bGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRo
aXMtPnNob3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJ
bmRpY2F0b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKTsKLSAgICBib29s
IGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fw
c0xvY2tJbmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAgICBib29sIHNob3VsZERyYXdB
dXRvRmlsbEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpOworI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0YUxpc3QgPSBlbGVtZW50KCkt
Pmxpc3QoKTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVT
cGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBzaG91bGREcmF3QXV0
b0ZpbGxCdXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgfHwgaGFz
RGF0YUxpc3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRhaW5lcigpOwogCi0gICAgbV9p
bm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGVsZW1lbnQoKS0+aXNJbm5lclRl
eHRFbGVtZW50RWRpdGFibGUoKSk7CiAKICAgICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsKICAg
ICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1faW5uZXJUZXh0KTsKQEAg
LTM1OCw3ICszNzEsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKIAogICAgICAgICBtX2Nv
bnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6
UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAgICAgdXBkYXRlQXV0b0Zp
bGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGRhdGFMaXN0
TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5w
dXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3ICszOTEsNiBAQCBIVE1M
RWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiAK
IFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faW5uZXJUZXh0KTsKICAg
ICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDIsOSBAQCB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogewor
ICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVs
ZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQz
Myw2ICs0NTMsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5n
ZWQoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQog
eworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+
cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAg
LTYxNiw5ICs2MzksMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RM
aXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0
ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghc3VwcG9ydHNQ
bGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
ICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5wbGFjZWhvbGRlcigpOwog
ICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNl
aG9sZGVyKSB7CkBAIC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVAog
CiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogeworICAg
IEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgp
KQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsK
IAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAgICAgICBpZiAoIW1f
Y29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKLSAgICAgICAgQVNT
RVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRv
blR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAgICAgICBpZiAoIW1f
YXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1dHRvbihhdXRvRmls
bEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRh
TGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAK
ICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4
Mjg1ZmU0OTlmNDkuLjRlMWJiMTU0YzVhN2I1NjFjYjU0NGZlMmQ2ZmZiODdmMDJhYzllM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAsNyBA
QCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigp
IGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTZi
YzA4N2ZiODk4NmRmYjNiODFmY2ZjNzE2NDViZjA0ZjM0YmMyMS4uZGUyZjFhMjYyYWExNzM3YTUx
NDhlNjk1N2U5YzE4ZThjNWMwMjE5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTE3
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBp
bnB1dCBlbGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmll
d2VkIGJ5IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3Vw
cG9ydHNUeXBlKToKKyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisKIDIwMjItMDItMTEg
IEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGBjb250YWluOmNvbnRl
bnRgIGJyZWFrcyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhNjJjYzQ0MGFlNGQxMDYzYmM0NzgwMjI0ODhhNjRjMjkzMWRjY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24t
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorcnVuKHsgdXNlUGFyc2VyOiB0cnVlIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2MjhhMGQ5YjllNGY3OWY0NDRhZDkwNDVlZDNjOTI1OWViMGFjN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
cnVuKHsgdXNlUGFyc2VyOiBmYWxzZSB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
OGZiOWY5ZmM5Y2Y1YTUzM2MwNWJmMWQ3NmIwOTMxNTM3N2Q5NDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMKQEAg
LTAsMCArMSw1NyBAQAorY29uc3QgdHlwZXMgPSB7CisgICAgImNvbG9yIjogeyB2YWx1ZTogIiMw
MDgwMDAiIH0sCisgICAgImRhdGUiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZGF0
ZXRpbWUtbG9jYWwiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZW1haWwiOiB7IHZh
bHVlOiAiaGVsbG9AZXhhbXBsZS5jb20iIH0sCisgICAgImZpbGUiOiB7IH0sCisgICAgIm1vbnRo
IjogeyB2YWx1ZTogIjIwMjItMDEiIH0sCisgICAgIm51bWJlciI6IHsgdmFsdWU6ICIxMjMiIH0s
CisgICAgInBhc3N3b3JkIjogeyB9LAorICAgICJyYW5nZSI6IHsgdmFsdWU6ICI3NSIgfSwKKyAg
ICAic2VhcmNoIjogeyB2YWx1ZTogImFiYyIgfSwKKyAgICAidGVsZXBob25lIjogeyB2YWx1ZTog
Iis2MTMwMDAwMDAwMCIgfSwKKyAgICAidGV4dCI6IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRp
bWUiOiB7IHZhbHVlOiAiMTA6MDAiIH0sCisgICAgInVybCI6IHsgdmFsdWU6ICJodHRwczovL2V4
YW1wbGUuY29tLyIgfSwKKyAgICAid2VlayI6IHsgdmFsdWU6ICIyMDIyLVcxIiB9LAorfTsKKwor
ZnVuY3Rpb24gc3VwcG9ydHNUeXBlKHR5cGVOYW1lKSB7CisgICAgbGV0IGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGUudHlwZSA9IHR5cGVOYW1lOworICAgIHJldHVy
biBlLnR5cGUgPT0gdHlwZU5hbWU7Cit9CisKK2Z1bmN0aW9uIG1ha2VBbmRBcHBlbmRJbnB1dChv
cHRpb25zLCB0eXBlTmFtZSwgYXR0cmlidXRlcyA9IHsgfSkgeworICAgIGxldCBzcGFuID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNw
YW4pOworCisgICAgaWYgKG9wdGlvbnMudXNlUGFyc2VyKSB7CisgICAgICAgIGxldCB0YWcgPSBg
PGlucHV0IHR5cGU9IiR7dHlwZU5hbWV9ImA7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0
cmlidXRlcykKKyAgICAgICAgICAgIHRhZyArPSBgICR7bmFtZX09IiR7YXR0cmlidXRlc1tuYW1l
XX0iYDsKKyAgICAgICAgdGFnICs9ICI+IjsKKyAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0YWc7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTsKKyAgICAgICAgaW5wdXQudHlwZSA9IHR5cGVOYW1lOworICAgICAgICBmb3Ig
KGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUo
bmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7CisgICAgICAgIHNwYW4uYXBwZW5kKGlucHV0KTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bihvcHRpb25zKSB7CisgICAgZm9yIChsZXQgdHlwZU5hbWUg
aW4gdHlwZXMpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1R5cGUodHlwZU5hbWUpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgbGV0IHR5cGUgPSB0eXBlc1t0eXBlTmFtZV07Cisg
ICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSk7CisKKyAgICAgICAg
aWYgKHR5cGUudmFsdWUpCisgICAgICAgICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywg
dHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUgfSk7CisKKyAgICAgICAgbWFrZUFuZEFwcGVu
ZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZhbHVlOiB0eXBlLnZhbHVlLCBkaXNhYmxlZDog
ImRpc2FibGVkIiB9KTsKKyAgICB9Cit9Cg==
</data>
<flag name="commit-queue"
          id="479696"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452757</attachid>
            <date>2022-02-21 12:31:11 -0800</date>
            <delta_ts>2022-02-26 14:06:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236747-20220219093351.patch</filename>
            <type>text/plain</type>
            <size>43915</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NTMzY2I1MWI2NmU3
ODFjZGNiNjNmNzIzYTI3ZGQwYmE3NzA1OC4uOGNmM2I3MjAyZjY2MTBjODdhNjliYjU0NjY4NmRl
MDgyMjczNWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAyMi0wMi0xNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToK
KyAgICAgICAgRW5zdXJlIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkIGluIGNhc2Ug
dGhlIGV2ZW50IHdpbGwgY2hhbmdlCisgICAgICAgIHRoZSB2YWx1ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCBjb25zdCk6CisgICAgICAg
IE9ubHkgcmV0dXJuIHRoZSBlbGVtZW50IGlmIGl0J3MgYmVlbiBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQgY29uc3Qp
OgorICAgICAgICBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLgorCisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6
CisgICAgICAgIE9ubHkgdHJ5IHRvIHJlLWxheW91dCBpZiB0aGUgc2hhZG93IHRyZWUgaGFzIGJl
ZW4gY3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlIGNvbnN0KToK
KyAgICAgICAgQXZvaWQgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudCk6CisgICAgICAgIE1vdmUg
dGhlIGVsZW1lbnQgYXNzZXJ0aW9uIHVwIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmdW5j
dGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0
RWxlbWVudCBjb25zdCk6CisgICAgICAgIERvbid0IGFzc2VydCwgc2luY2UgdGhpcyBub3cgY2Fu
IGxlZ2l0aW1hdGVseSByZXR1cm4gbnVsbC4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFk
T25seVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAgICAgIERvbid0IHVwZGF0
ZSB0aGUgc2hhZG93IHRyZWUgY29udGVudHMgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQu
CisgICAgICAgIGNyZWF0ZVNoYWRvd1RyZWUgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGl0
IGNyZWF0ZXMgdGhlIHNoYWRvdworICAgICAgICB0cmVlIGNvbnRlbnRzIHJlZmxlY3RpbmcgdGhl
IGN1cnJlbnQgc3RhdGUuCisKIDIwMjItMDItMTYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2Ft
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXNlIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBh
cnNlciB3aGVuIGNyZWF0aW5nIGlucHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY29udGVudHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApp
bmRleCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZkYTM1YzQ2Li5jZjdjYzMxZjM0
MmY3YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9p
ZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQm
KQogICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBB
U1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAt
MzM0LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZXN0cm95U2hh
ZG93U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJU
ZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgY3JlYXRlU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkgewog
ICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNlYjZkNTVm
MWNhMzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVmOGUxOWZmYjQ4ODU1ZjRlMmZl
ODJlM2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVB
bmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9p
ZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95U2hhZG93U3Vi
dHJlZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKSBmaW5hbDsKICAg
ICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDc3MzEyNDMwMmViNzhhNjJjNTdjNTZkNzBiMTZl
MjBjYzAzNzhjYi4uZmFiY2NkMDA3ZjUyNjMwMGViNGNhNzBjNDBjYmQ2MTg0MDRlYWI0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBD
b2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFy
c2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSkudmFsdWUoKTsKIH0KIAotdm9p
ZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAppbmRleCA5YjU3
MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4xMTZkYWIxMTdiOTc1OWIyMzYx
NzM3MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkg
Y29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKICAg
ICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQo
RXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDUz
ZTVjYTM4M2NmZTM3NzRiMTVmODUwMDQ0N2ZhYWMzMDgxMDI5MGEuLjkyMmM1YTM5MGM0ZDIzOTU4
ZjVmZjZhODQxNDQ5YTQ1NDA4MWFlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQo
KS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
Ym9vbCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAg
QVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAg
ICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKKworICAgIGF1dG8gYnV0
dG9uID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKIH0KIAog
dm9pZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJU
KGVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIAogICAg
IGF1dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICgh
cm9vdCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBtdWx0
aXBsZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgICAgICAg
ICAgaWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0
dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi0+
c2V0VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZp
bGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQyOTQ0NTZiMWNiZTY0ZDg0MGRi
NTcxZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1NWUwMDAyM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7
CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxl
ZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2MmI2
YTc2ODEyMDNmOWQ2MWU0MWQzNTgzNmVhMzBiNGY4YzQyMGJlLi5hMTYxZDY4OGQzODQyYjhiZTFh
YjdlYWVjZmRjMjQ5YjY2MDgyMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogI2Vu
ZGlmCiAgICAgLCBtX2lzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KGZh
bHNlKQogewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3Ry
dWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBh
IHRleHQgaW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBk
ZXN0cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFy
c2VyIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlz
IGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBj
b25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3Qg
dG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhl
IHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRC
eVBhcnNlcikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRo
aXMpOwogCkBAIC0xNDcsMTQgKzE0Nyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJl
ZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93
Um9vdExhemlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4g
aW5wdXRFbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNo
YWRvd1Jvb3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5
cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVV
c2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAg
ICByZXR1cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQog
CiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkK
QEAgLTE2NCwxMiArMTU3LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50Ojpl
bnN1cmVJbWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0
VHlwZSgqbV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93
U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVs
ZW1lbnRFZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1l
bnQoKQogewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzE5
OSwxMSBAQCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVt
ZW50Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlu
bmVyVGV4dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gSFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRD
cmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElu
cHV0RWxlbWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTcyLDcgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJv
bUVsZW1lbnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBp
ZiAobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+
Y3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVB
bmRWYWxpZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNSwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0
eXBlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYg
KHR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0
ZVRleHQoKnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7
CiAgICAgICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5w
dXRUeXBlOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNT
aGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwot
ICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAg
ICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RU
eXBlVXBkYXRlVGFza3MoKTsKQEAgLTE1OTksMTAgKzE1ODEsOCBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUo
KSAmJiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVt
cHR5TGlzdCkKLSAgICAgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCisgICAg
aWYgKGlzQ29ubmVjdGVkKCkpCisgICAgICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0
cmVlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA4
MmFlNzFkNTBiZThhZGRhODM0M2MwNzgxMjAzODY4MjhjMzUzOTkxLi5jMWM3NjIwZGMxODBlODNk
ZDM0Zjg5NWZiMzEwZGM3ZGVmZDJkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29u
dGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIGlu
bmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIHJlc3VsdEZvckRpYWxvZ1N1Ym1pdCgpIGNvbnN0IGZpbmFsOwogCisgICAgYm9v
bCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFoYXNB
dXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc0LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwot
CiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ3Vz
dG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJs
ZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg1LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsKIAotICAg
IGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAh
aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29sIGNhblRy
aWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1RleHRGaWVs
ZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IDY2OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJmMDBkYjVkYzA2
ZGQzMDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8VGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50
KCkgY29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9
CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQog
ewogICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYwZWIyZjMuLjAw
NzdmMDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRF
bGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9w
ZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk2NGNj
MWEyMWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4NmVkOWRmYjE4
NmIwMjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAgdm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAg
ICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaW5u
ZXJUZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChh
dXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5uZXJUZXh0LT5k
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNOb3RMaW5lQnJl
YWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2Fy
cmlhZ2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVs
ZAogICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6
Om1heChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVs
ZW1lbnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1bWVudCgpLmZv
Y3VzZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlubmVyVGV4dCkg
ewogICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEsNyBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKKyAg
ICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwgaW5kZXgpOwog
ICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0gaW5kZXgpOwog
ICAgIHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMgU3RyaW5nIGlu
bmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkK
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2Fs
bG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRp
bWl6YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAg
IGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk5
ODZhYzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2OGVjMWM4MjRl
YTA1Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJU
ZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1
YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSA9
IDA7CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNlYWJlZDVjZDE3
MWZlZjhmM2Y2YjUxOTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIwZTg1YzkxNDIxYTE0YjYyZmI3
ZGQ5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2
b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQog
Ci12b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+
IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVk
KCkKK3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaW5u
ZXJUZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRGb3JEaWFsb2dT
dWJtaXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVt
ZW50KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKQoreworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIHx8ICFuZWVk
c1NoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90ZWN0ZWRUaGlz
IHsgKnRoaXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsK
KyAgICBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFjZWUuLjgxMmQ1
ODhiNmVkOGQwMzg5MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRMYWJlbHMo
KSBjb25zdDsKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVk
c1NoYWRvd1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5cGVzLmNvbnRh
aW5zKG1fdHlwZSk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8gRm9ybSB2YWx1
ZSBmdW5jdGlvbnMuCiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBTaGFk
b3cgdHJlZSBoYW5kbGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKIAog
ICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0QnV0dG9uRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuCiAKQEAg
LTQxMyw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGx5U3Rl
cChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcik7CiAK
ICAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRy
ZWUgeyBmYWxzZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMgSW5wdXRUeXBl
IGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVyIHRoZSBlbGVt
ZW50IGRpZWQgb3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CmluZGV4IDgwOWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEuLmY5Mjk2N2M0
NDE2M2UwZjA3NDU5NDljMWI4YjQ5MzUxMjRmMGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNv
bnN0CiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50
JiBldmVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRl
ZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1lbnQoKS0+
aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTUxLDEwICsx
NTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VF
dmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAg
IHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRTbGlkZXJUaHVt
YkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJMRShUT1VDSF9T
TElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMsMTIgKzE5Miwx
OCBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAo
IWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRv
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQp
IC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBT
aG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOworCiAgICAgaWYgKGVsZW1lbnQoKS0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50
SGFuZGxlcjo6WWVzOwogCkBAIC0yNDEsNyArMjU2LDcgQEAgYXV0byBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KSAtPiBTaG91bGRDYWxsQmFz
ZUUKICAgICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIH0KIAotdm9p
ZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKQEAgLTI1OSw2ICsyNzQsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b28KIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRv
d1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQoZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gY29udGFpbmVyCiAgICAgQVNTRVJU
KGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVs
ZW1lbnQoKSk7CkBAIC0yNzcsNiArMjk2LDcgQEAgSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBl
OjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogCiBTbGlkZXJUaHVtYkVsZW1lbnQmIFJhbmdl
SW5wdXRUeXBlOjp0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0CiB7CisgICAgQVNTRVJU
KGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1l
bnQoKS0+Zmlyc3RDaGlsZCgpKTsgLy8gdGh1bWIKICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVt
ZW50KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKIApAQCAtMzIyLDcgKzM0Miw4
IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNEaXJ0eVZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0VmFsdWUoZWxlbWVudC0+dmFsdWUoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21W
YWx1ZSgpOworICAgICAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAg
ICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAg
ICB9CiAgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQpAQCAtMzM5LDcg
KzM2MCw4IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0
VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh2YWx1ZSk7CiAgICAgfQogCi0gICAg
dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOworICAgIGlm
IChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxl
bWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlw
ZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkwLDcgQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CiAgICAgbV90aWNrTWFya1ZhbHVl
c0RpcnR5ID0gdHJ1ZTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNsaWRlclRyYWNrRWxlbWVu
dCA9IHRoaXMtPnNsaWRlclRyYWNrRWxlbWVudCgpOwotICAgIGlmIChzbGlkZXJUcmFja0VsZW1l
bnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudCAmJiBzbGlkZXJUcmFj
a0VsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCmluZGV4IDI5NjRjNjRlOWQzZGY0MGZlOTViYjU3MmI5MTc2M2Q0M2ZlYzdjYmIuLjEwZmQz
YTcyZTdkNmQwYjAxN2VmNmJiMmI0Yjk1NTA0OGMwMTU5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRs
ZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQmKSBmaW5hbDsKICAgICBTaG91bGRDYWxsQmFzZUV2
ZW50SGFuZGxlciBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBmaW5hbDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgRGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29uc3Qg
RGVjaW1hbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2Vu
ZE1vdXNlRXZlbnRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2Vh
cmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNw
cAppbmRleCBmNzBiMTJlMjQzN2ZmYzFhODY0NWVhMDM5OGFkOTQwZDUyNTAyNjU1Li42ZTViMWU3
ZmJlNzJiYmQzMWJiOTg0NTdlMDJlY2Q0YzZhNDdkZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBib29sIFNlYXJjaElucHV0
VHlwZTo6bmVlZHNDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBT
ZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVk
c1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdHNCdXR0b24pOwogICAgIEFT
U0VSVCghbV9jYW5jZWxCdXR0b24pOwogCi0gICAgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKTsKKyAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5lciA9IGNvbnRhaW5l
ckVsZW1lbnQoKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHRleHRXcmFwcGVyID0gaW5uZXJC
bG9ja0VsZW1lbnQoKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5oCmluZGV4IDIyZjY4YzkyNWQ4Njc5NjQxMzBlOGVmMzE3OTdiYzkwZWRi
OGVmNjEuLjIzYTYyOTc0ZTIyZGE3NTdkZTIyZDk3YTI4Mzg3MDc3NDg4MWVmNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYpIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBy
ZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxFbGVtZW50KiBjYW5j
ZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWU4Nzc4YmJkOTAwOWE1ZGFiNzgxZTJkZmUzNzg4ZTkw
OTdmYWM4Yy4uMzcwNTZlNDVlYjFhNzVjMTRmZDQzZTY1NmYxMzE0OWZhNTFmMDMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTA4LDcgKzEwOCwx
MSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0CiBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRv
IGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBBU1NFUlQoaW5uZXJUZXh0KTsK
KyAgICBpZiAoIWlubmVyVGV4dCkgeworICAgICAgICAvLyBTaW5jZSB3ZSBhbHdheXMgY3JlYXRl
IHRoZSBzaGFkb3cgc3VidHJlZSBpZiBhIHZhbHVlIGlzIHNldCwgd2Uga25vdworICAgICAgICAv
LyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
CiAgICAgZm9yIChUZXh0KiB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCpp
bm5lclRleHQpOyB0ZXh0OyB0ZXh0ID0gVGV4dE5vZGVUcmF2ZXJzYWw6Om5leHQoKnRleHQsIGlu
bmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgaWYgKHRleHQtPmxlbmd0aCgpKQpAQCAtMjIxLDYg
KzIyNSw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnRGb3JT
cGluQnV0dG9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsK
KwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3BpbkJ1dHRv
bi0+Zm9yd2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRIYW5kbGVk
KCkpCkBAIC0yMzEsMTAgKzIzNyw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJk
RXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaXNCbHVyRXZlbnQgPSBldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmJsdXJFdmVudDsKICAgICBpZiAoaXNGb2N1c0V2ZW50IHx8IGlzQmx1
ckV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKLSAgICBpZiAo
ZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50KSB7Ci0g
ICAgICAgIEFTU0VSVChlbGVtZW50KCkpOworICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8
fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGVsZW1lbnQoKS0+Zm9yd2Fy
ZEV2ZW50KGV2ZW50KTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVt
ZW50RGlkQmx1cigpCkBAIC0zMTYsMTEgKzMyMCwxMiBAQCBib29sIFRleHRGaWVsZElucHV0VHlw
ZTo6c2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcigqZWxlbWVudCgp
KTsKIH0KIAotdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRV
cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkK
IHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50
KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKCFl
bGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aGFzQ2hpbGROb2RlcygpKTsKIAogICAgIEFTU0VSVCgh
bV9pbm5lclRleHQpOwogICAgIEFTU0VSVCghbV9pbm5lckJsb2NrKTsKQEAgLTMzMSw5ICszMzYs
MTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRh
dGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBl
bGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRo
aXMtPnNob3VsZEhhdmVTcGluQnV0dG9uKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJ
bmRpY2F0b3IgPSB0aGlzLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKTsKLSAgICBib29s
IGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fw
c0xvY2tJbmRpY2F0b3IgfHwgbmVlZHNDb250YWluZXIoKTsKKyAgICBib29sIHNob3VsZERyYXdB
dXRvRmlsbEJ1dHRvbiA9IHRoaXMtPnNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpOworI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGJvb2wgaGFzRGF0YUxpc3QgPSBlbGVtZW50KCkt
Pmxpc3QoKTsKKyNlbmRpZgorICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVT
cGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBzaG91bGREcmF3QXV0
b0ZpbGxCdXR0b24KKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgfHwgaGFz
RGF0YUxpc3QKKyNlbmRpZgorICAgICAgICB8fCBuZWVkc0NvbnRhaW5lcigpOwogCi0gICAgbV9p
bm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGVsZW1lbnQoKS0+aXNJbm5lclRl
eHRFbGVtZW50RWRpdGFibGUoKSk7CiAKICAgICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsKICAg
ICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1faW5uZXJUZXh0KTsKQEAg
LTM1OCw3ICszNzEsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkKIAogICAgICAgICBtX2Nv
bnRhaW5lci0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6
UGFyc2VyLCAqbV9jYXBzTG9ja0luZGljYXRvcik7CiAgICAgfQorCiAgICAgdXBkYXRlQXV0b0Zp
bGxCdXR0b24oKTsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGRhdGFMaXN0
TWF5SGF2ZUNoYW5nZWQoKTsKKyNlbmRpZgogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5w
dXRUeXBlOjpjb250YWluZXJFbGVtZW50KCkgY29uc3QKQEAgLTM3Myw3ICszOTEsNiBAQCBIVE1M
RWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiAK
IFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faW5uZXJUZXh0KTsKICAg
ICByZXR1cm4gbV9pbm5lclRleHQ7CiB9CiAKQEAgLTQyNSw2ICs0NDIsOSBAQCB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogewor
ICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+cmVs
ZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTQz
Myw2ICs0NTMsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5n
ZWQoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQog
eworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+
cmVsZWFzZUNhcHR1cmUoKTsKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAg
LTYxNiw5ICs2MzksMTQgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RM
aXN0QXR0cmlidXRlKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0
ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghc3VwcG9ydHNQ
bGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
ICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5wbGFjZWhvbGRlcigpOwog
ICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNl
aG9sZGVyKSB7CkBAIC04MTYsMTMgKzg0NCwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVAog
CiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogeworICAg
IEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgp
KQorICAgICAgICByZXR1cm47CisKICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsK
IAogICAgIGlmIChzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24oKSkgewogICAgICAgICBpZiAoIW1f
Y29udGFpbmVyKQogICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKLSAgICAgICAgQVNT
RVJUKGVsZW1lbnQoKSk7CiAgICAgICAgIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRv
blR5cGUgPSBlbGVtZW50KCktPmF1dG9GaWxsQnV0dG9uVHlwZSgpOwogICAgICAgICBpZiAoIW1f
YXV0b0ZpbGxCdXR0b24pCiAgICAgICAgICAgICBjcmVhdGVBdXRvRmlsbEJ1dHRvbihhdXRvRmls
bEJ1dHRvblR5cGUpOwpAQCAtODQ2LDYgKzg3OCw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkYXRh
TGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAK
ICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDVhMjQzMjc2NWYxY2Q2OGE0NjFhODg1MzUzMjU4
Mjg1ZmU0OTlmNDkuLjRlMWJiMTU0YzVhN2I1NjFjYjU0NGZlMmQ2ZmZiODdmMDJhYzllM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNzAsNyArNzAsNyBA
QCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigp
IGNvbnN0OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTZi
YzA4N2ZiODk4NmRmYjNiODFmY2ZjNzE2NDViZjA0ZjM0YmMyMS4uZGUyZjFhMjYyYWExNzM3YTUx
NDhlNjk1N2U5YzE4ZThjNWMwMjE5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTE3
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBp
bnB1dCBlbGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmll
d2VkIGJ5IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3Vw
cG9ydHNUeXBlKToKKyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisKIDIwMjItMDItMTEg
IEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGBjb250YWluOmNvbnRl
bnRgIGJyZWFrcyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhNjJjYzQ0MGFlNGQxMDYzYmM0NzgwMjI0ODhhNjRjMjkzMWRjY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24t
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorcnVuKHsgdXNlUGFyc2VyOiB0cnVlIH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2MjhhMGQ5YjllNGY3OWY0NDRhZDkwNDVlZDNjOTI1OWViMGFjN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
cnVuKHsgdXNlUGFyc2VyOiBmYWxzZSB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
OGZiOWY5ZmM5Y2Y1YTUzM2MwNWJmMWQ3NmIwOTMxNTM3N2Q5NDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMKQEAg
LTAsMCArMSw1NyBAQAorY29uc3QgdHlwZXMgPSB7CisgICAgImNvbG9yIjogeyB2YWx1ZTogIiMw
MDgwMDAiIH0sCisgICAgImRhdGUiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZGF0
ZXRpbWUtbG9jYWwiOiB7IHZhbHVlOiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZW1haWwiOiB7IHZh
bHVlOiAiaGVsbG9AZXhhbXBsZS5jb20iIH0sCisgICAgImZpbGUiOiB7IH0sCisgICAgIm1vbnRo
IjogeyB2YWx1ZTogIjIwMjItMDEiIH0sCisgICAgIm51bWJlciI6IHsgdmFsdWU6ICIxMjMiIH0s
CisgICAgInBhc3N3b3JkIjogeyB9LAorICAgICJyYW5nZSI6IHsgdmFsdWU6ICI3NSIgfSwKKyAg
ICAic2VhcmNoIjogeyB2YWx1ZTogImFiYyIgfSwKKyAgICAidGVsZXBob25lIjogeyB2YWx1ZTog
Iis2MTMwMDAwMDAwMCIgfSwKKyAgICAidGV4dCI6IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRp
bWUiOiB7IHZhbHVlOiAiMTA6MDAiIH0sCisgICAgInVybCI6IHsgdmFsdWU6ICJodHRwczovL2V4
YW1wbGUuY29tLyIgfSwKKyAgICAid2VlayI6IHsgdmFsdWU6ICIyMDIyLVcxIiB9LAorfTsKKwor
ZnVuY3Rpb24gc3VwcG9ydHNUeXBlKHR5cGVOYW1lKSB7CisgICAgbGV0IGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGUudHlwZSA9IHR5cGVOYW1lOworICAgIHJldHVy
biBlLnR5cGUgPT0gdHlwZU5hbWU7Cit9CisKK2Z1bmN0aW9uIG1ha2VBbmRBcHBlbmRJbnB1dChv
cHRpb25zLCB0eXBlTmFtZSwgYXR0cmlidXRlcyA9IHsgfSkgeworICAgIGxldCBzcGFuID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNw
YW4pOworCisgICAgaWYgKG9wdGlvbnMudXNlUGFyc2VyKSB7CisgICAgICAgIGxldCB0YWcgPSBg
PGlucHV0IHR5cGU9IiR7dHlwZU5hbWV9ImA7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0
cmlidXRlcykKKyAgICAgICAgICAgIHRhZyArPSBgICR7bmFtZX09IiR7YXR0cmlidXRlc1tuYW1l
XX0iYDsKKyAgICAgICAgdGFnICs9ICI+IjsKKyAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0YWc7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTsKKyAgICAgICAgaW5wdXQudHlwZSA9IHR5cGVOYW1lOworICAgICAgICBmb3Ig
KGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUo
bmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7CisgICAgICAgIHNwYW4uYXBwZW5kKGlucHV0KTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bihvcHRpb25zKSB7CisgICAgZm9yIChsZXQgdHlwZU5hbWUg
aW4gdHlwZXMpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1R5cGUodHlwZU5hbWUpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgbGV0IHR5cGUgPSB0eXBlc1t0eXBlTmFtZV07Cisg
ICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSk7CisKKyAgICAgICAg
aWYgKHR5cGUudmFsdWUpCisgICAgICAgICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywg
dHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUgfSk7CisKKyAgICAgICAgbWFrZUFuZEFwcGVu
ZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZhbHVlOiB0eXBlLnZhbHVlLCBkaXNhYmxlZDog
ImRpc2FibGVkIiB9KTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453310</attachid>
            <date>2022-02-26 14:07:00 -0800</date>
            <delta_ts>2022-02-26 16:32:10 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-236747-20220227090659.patch</filename>
            <type>text/plain</type>
            <size>57686</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4NDk4NzY5NWJlM2Jh
ZmY3NTY1NTA2OTVkM2U5ODc0NjllMzc1OC4uZTQ2MjdjZmMyNmZhZTFmNjZkOTE2OTA2OTJlZDM4
ZWVjMzBkYTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMi0wMi0yNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToK
KyAgICAgICAgRW5zdXJlIHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkIGluIGNhc2Ug
dGhlIGV2ZW50IHdpbGwgY2hhbmdlCisgICAgICAgIHRoZSB2YWx1ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCBjb25zdCk6CisgICAgICAg
IE9ubHkgcmV0dXJuIHRoZSBlbGVtZW50IGlmIGl0J3MgYmVlbiBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQgY29uc3Qp
OgorICAgICAgICBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBoYXMgYmVlbiBjcmVhdGVkLgorCisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6
CisgICAgICAgIE9ubHkgdHJ5IHRvIHJlLWxheW91dCBpZiB0aGUgc2hhZG93IHRyZWUgaGFzIGJl
ZW4gY3JlYXRlZC4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aXNFbXB0eVZhbHVlIGNvbnN0KToK
KyAgICAgICAgQXZvaWQgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudCk6CisgICAgICAgIE1vdmUg
dGhlIGVsZW1lbnQgYXNzZXJ0aW9uIHVwIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmdW5j
dGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJUZXh0
RWxlbWVudCBjb25zdCk6CisgICAgICAgIERvbid0IGFzc2VydCwgc2luY2UgdGhpcyBub3cgY2Fu
IGxlZ2l0aW1hdGVseSByZXR1cm4gbnVsbC4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUlucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFk
T25seVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCk6CisgICAgICAgIERvbid0IHVwZGF0
ZSB0aGUgc2hhZG93IHRyZWUgY29udGVudHMgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQu
CisgICAgICAgIGNyZWF0ZVNoYWRvd1RyZWUgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGl0
IGNyZWF0ZXMgdGhlIHNoYWRvdworICAgICAgICB0cmVlIGNvbnRlbnRzIHJlZmxlY3RpbmcgdGhl
IGN1cnJlbnQgc3RhdGUuCisKKzIwMjItMDItMjYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2Ft
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gcmVxdWVzdCBhIFVBIHNo
YWRvdyB0cmVlIHVwZGF0ZSBiZWZvcmUgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWRyA8dXNlPiBlbGVtZW50cyByZWdpc3RlciB0aGVtc2Vs
dmVzIHdpdGggdGhlIGRvY3VtZW50IHdoZW4gdGhlaXIKKyAgICAgICAgc2hhZG93IHRyZWUgY29u
dGVudHMgbmVlZCB1cGRhdGluZywgYW5kIHRoaXMgdXBkYXRpbmcgaXMgZG9uZSBpbgorICAgICAg
ICBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlLiBGb3IgbGF6eSBIVE1MIDxpbnB1dD4gZWxlbWVudCBV
QSBzaGFkb3cgdHJlZXMKKyAgICAgICAgKGluIGJ1ZyAyMzY3NDcpIHdlIG5lZWQgc29tZXRoaW5n
IHNpbWlsYXIuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YWRkRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNo
YWRvd1RyZWUpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9jdW1lbnRFeHRlbnNp
b25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6
YWRkVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVVzZUVsZW1lbnRXaXRo
UGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6dXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VXNlRWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdVc2VFbGVtZW50OjppbnZhbGlkYXRlU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHVXNlRWxlbWVudC5oOgorCiAyMDIyLTAyLTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBDU1AgaGFuZGxpbmcgb2YgamF2
YXNjcmlwdCBVUkxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NTVmNzQ2NmMzYWU3NTQ3
NjM0YjQ5NzBmOWU5NmI0NjM4YWQ3NGI1Li4xNDE5OTgyMWZmY2M4YWU4M2UzZmNmMjdlN2M0OGM4
ZDRjMGUzMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwMDUsMTQgKzIwMDUsMTcg
QEAgdm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVTdHlsZVR5cGUgdHlwZSkKIAog
ICAgIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvciByZXBhaW50UmVnaW9uQWNj
dW11bGF0b3IocmVuZGVyVmlldygpKTsKIAotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHVwZGF0ZSBw
ZXIgdHJlZSBzY29wZS4KLSAgICBpZiAoYXV0byogZXh0ZW5zaW9ucyA9IG1fc3ZnRXh0ZW5zaW9u
cy5nZXQoKSkgewotICAgICAgICBhdXRvIGVsZW1lbnRzID0gY29weVRvVmVjdG9yT2Y8UmVmPFNW
R1VzZUVsZW1lbnQ+PihleHRlbnNpb25zLT51c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJl
ZVVwZGF0ZSgpKTsKLSAgICAgICAgLy8gV2UgY2FuJ3QgY2xlYXIgbV9zdmdVc2VFbGVtZW50cyBo
ZXJlIGJlY2F1c2UgdXBkYXRlU2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4ZWN1dGluZyBhcmJpdHJh
cnkgc2NyaXB0cwotICAgICAgICAvLyB3aGljaCBtYXkgaW5zZXJ0IG5ldyBTVkcgdXNlIGVsZW1l
bnRzIG9yIHJlbW92ZSBleGlzdGluZyBvbmVzIGluc2lkZSBzeW5jIElQQyB2aWEgSW1hZ2VMb2Fk
ZXI6OnVwZGF0ZUZyb21FbGVtZW50LgotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVt
ZW50cykKLSAgICAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICB9Cisg
ICAgLy8gRklYTUU6IERvIHRoaXMgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSB1cGRhdGUgcGVyIHRy
ZWUgc2NvcGUuCisKKyAgICAvLyBXZSBjYW4ndCBjbGVhciBtX2VsZW1lbnRzV2l0aFBlbmRpbmdV
c2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcyBoZXJlCisgICAgLy8gYmVjYXVzZSBTVkdVc2VFbGVt
ZW50Ojp1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlIG1heSBlbmQgdXAgZXhlY3V0aW5nCisgICAg
Ly8gYXJiaXRyYXJ5IHNjcmlwdHMgd2hpY2ggbWF5IGluc2VydCBuZXcgU1ZHIHVzZSBlbGVtZW50
cyBvciByZW1vdmUKKyAgICAvLyBleGlzdGluZyBvbmVzIGluc2lkZSBzeW5jIElQQyB2aWEgSW1h
Z2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50LgorICAgIC8vCisgICAgLy8gSW5zdGVhZCwgaXQg
aXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUgdG8KKyAg
ICAvLyByZW1vdmUgdGhlIGVsZW1lbnQuCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY29weVRv
VmVjdG9yT2Y8UmVmPEVsZW1lbnQ+PihtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFk
b3dUcmVlVXBkYXRlcykpCisgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1Ry
ZWUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIHN0eWxlIG9uIG91ciBhbmNl
c3RvciBjaGFpbiBiZWZvcmUgcHJvY2VlZGluZywgaG93ZXZlciBkb2luZyBzbyBhdAogICAgIC8v
IHRoZSB0aW1lIHRoaXMgY29tbWVudCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGNhdXNlZCBzZXZl
cmFsIHRlc3RzIHRvIGNyYXNoLgpAQCAtOTA4Niw2ICs5MDg5LDI1IEBAIHN0ZDo6b3B0aW9uYWw8
UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZEVsZW1lbnRXaXRoUGVuZGluZ1Vz
ZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBBU1NFUlQo
JmVsZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVu
dHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzLmFkZChlbGVtZW50KTsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudFdpdGhQZW5kaW5nVXNlckFn
ZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50JiBlbGVtZW50KQoreworICAgIEFTU0VSVCgmZWxl
bWVudC5kb2N1bWVudCgpID09IHRoaXMpOworICAgIG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJB
Z2VudFNoYWRvd1RyZWVVcGRhdGVzLnJlbW92ZShlbGVtZW50KTsKKyAgICAvLyBGSVhNRTogQXNz
ZXJ0IHRoYXQgZWxlbWVudCB3YXMgaW4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZXMgb25jZSByZS1lbnRyYW5jeSB0byB1cGRhdGUgc3R5bGUgYW5kIGxheW91
dCBoYXZlIGJlZW4gcmVtb3ZlZC4KK30KKworYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhQ
ZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50JiBlbGVtZW50KSBjb25zdAor
eworICAgIHJldHVybiBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBk
YXRlcy5jb250YWlucyhlbGVtZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
dW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzFiZWNj
ZDIxYWIxMzE2YWUwMzA0ZTk3OTM5YzdhMjY2MjQyMzYxMy4uNmY4OTQ0ZjUxNTRjZTIzZTI0NzU5
YWEyM2I2MmRiYzI4ZjBiNDE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2NzMsNiArMTY3
MywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZU5ld0lkZW50aWZpZXIoKTsKIAorICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93
VHJlZVVwZGF0ZShFbGVtZW50JikgY29uc3Q7CisgICAgdm9pZCBhZGRFbGVtZW50V2l0aFBlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUo
RWxlbWVudCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5
bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9IDEgPDwgMSB9OwogICAgIFdF
QkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwm
LCBEb2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSB7IH0pOwpAQCAtMjI2NCw2ICsyMjY4
LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kYWxDb250YWluZXJPYnNlcnZl
cj4gbV9tb2RhbENvbnRhaW5lck9ic2VydmVyOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fd2hlbklzVmlzaWJsZUhhbmRsZXJzOworCisgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4g
bV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXM7CiB9OwogCiBF
bGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKaW5kZXggNjIwOWJlNjJhNzA0NjRmZWM3MzMzNDVlNjU1MzYzZGNjZmU5ZjU4OC4u
NjllYjMzYjUyM2E4OTJhYjhiOGFmZDgyMTExNWIwMDViZjU2OWQ3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCkBAIC02NjQsNiArNjY0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzRHVwbGljYXRlQXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEdXBsaWNhdGVBdHRyaWJ1dGU7IH07CiAgICAg
dm9pZCBzZXRIYXNEdXBsaWNhdGVBdHRyaWJ1dGUoYm9vbCBoYXNEdXBsaWNhdGVBdHRyaWJ1dGUp
IHsgbV9oYXNEdXBsaWNhdGVBdHRyaWJ1dGUgPSBoYXNEdXBsaWNhdGVBdHRyaWJ1dGU7IH07CiAK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpIHsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBDb25z
dHJ1Y3Rpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2MWNhZmE1NjkxOWU3ZWY5YzFhZmRh
MzVjNDYuLmNmN2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4OWJkMTNhNzQxM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMw
Niw3ICszMDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0
aXZhdGVFdmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJU
KGVsZW1lbnQoKSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKwogICAgIGlmICghbV9kYXRlVGlt
ZUVkaXRFbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+
KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmgKaW5kZXggM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNhYzFlMGU1ZTFiMjY5MC4uYjY4NWY4
ZTE5ZmZiNDg4NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29s
KSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lk
IGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRW
YWx1ZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNjY1M2ZkM2NkNTY3
NTkxNzFmNWQwNmE2YjUzYmRiZmNiMTE3ZDUxLi5mMTE5ZTgyYjM3N2RkYjQxZmNkOWU4YjkzYWE3
ZmNlZmEwZjVkYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25z
dAogICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKS52
YWx1ZSgpOwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIENvbG9ySW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0
cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5oCmluZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1YjgwMGQ2MDUyNGY5NDkzMTIuLjEx
NmRhYjExN2I5NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NvbG9ySW5wdXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1
cHBvcnRzUmVxdWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgp
IGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFs
dWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAKaW5kZXggZTgzOGU1Yzg3NGJmYWQ4MjZlMjcxOGE3MWRlODExYTQ2MWNlZmEwZi4u
ZWE3ZGZhY2Y2MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUyNTIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0yNjIsMTggKzI2MiwyMCBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IpCiAgICAgZWxlbWVudCgpLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiB9CiAKLXZv
aWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7Ci0gICAg
ZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8g
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVu
dCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkp
OworCisgICAgYXV0byBidXR0b24gPSBlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0
b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpIDogVXBs
b2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgZWxl
bWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgYnV0dG9uKTsKKyAgICBkaXNhYmxlZFN0YXRl
Q2hhbmdlZCgpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFk
b3dSb290KCkpOwogCiAgICAgYXV0byByb290ID0gZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dS
b290KCk7CiAgICAgaWYgKCFyb290KQpAQCAtMjg3LDcgKzI4OSw2IEBAIHZvaWQgRmlsZUlucHV0
VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAg
IGlmIChuYW1lID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9
IHRoaXMtPmVsZW1lbnQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jv
b3QoKSk7CiAgICAgICAgICAgICBpZiAoYXV0byByb290ID0gZWxlbWVudC0+dXNlckFnZW50U2hh
ZG93Um9vdCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBidXR0b24gPSBjaGlsZHJl
bk9mVHlwZTxVcGxvYWRCdXR0b25FbGVtZW50Pigqcm9vdCkuZmlyc3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50LT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRv
bkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggN2IyYzA5NjYxZDU1YTM1NDI5
NDQ1NmIxY2JlNjRkODQwZGI1NzFmZi4uOTE1N2IxNzkwMjkyMDBmM2M0MzA4OGNiNmE0YzZiZTU1
ZTAwMDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTc3LDcgKzc3LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgSWNvbiogaWNvbigpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsK
ICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVs
dFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCmluZGV4IGYxMGM0ODNhNTQ2YzgwOTViMWMyMzkxYWZlOGQ0YjM3NzA3M2RjYzUuLmJj
ZDZjOGEwZWI3MDk5MjI2OTU0YWJkN2Q5ZTBkNTRiZWI1N2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM1LDkgKzEzNSwxMCBAQCBIVE1MSW5wdXRF
bGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bQogICAgICwgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcihmYWxzZSkKICNlbmRp
ZgogICAgICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNlbWVudChmYWxz
ZSkKKyAgICAsIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoZmFsc2UpCiB7
Ci0gICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBi
eSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBp
bnB1dFR5cGUgYW5kCi0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kg
dGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8g
c29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5
IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVj
dGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0
cm95IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2Vy
IHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2Vy
KQogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAK
QEAgLTE0NywxNCArMTQ4LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJ
bnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6
aWx5ID0gY3JlYXRlZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVs
ZW1lbnQgPSBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQs
IGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9v
dExhemlseSkgewotICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVl
ZHNTaGFkb3dTdWJ0cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVy
biBpbnB1dEVsZW1lbnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJ
bWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0
LDEyICsxNTgsNiBAQCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUlt
YWdlTG9hZGVyKCkKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eSgpCi17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCpt
X2lucHV0VHlwZSk7Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVk
aXRhYmxlKCkpOwotfQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiB7
CiAgICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBAIC0yMTIsNiArMjAwLDExIEBA
IFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6Omlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0
RWxlbWVudCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1M
SW5wdXRFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVk
ZWQoKQoreworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudENyZWF0aW5n
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1MSW5wdXRFbGVt
ZW50Ojppbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5pbm5lckJsb2NrRWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzMsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlLT5kZXRhY2hGcm9tRWxlbWVu
dCgpOwogCiAgICAgbV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5cGUpOwotICAgIGlmIChtX2lu
cHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgZW5zdXJlVXNlckFnZW50
U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5jcmVhdGVT
aGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlk
aXR5KCk7CiAKQEAgLTczNiwxOSArNzI2LDEyIEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmluaXRpYWxpemVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKICAgICBpZiAodHlwZS5p
c051bGwoKSkgewogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgq
dGhpcyk7Ci0gICAgICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkp
OwotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKICAgICAg
ICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1faGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6
OmNyZWF0ZSgqdGhpcywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1
YnRyZWUoKSkgewotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAg
IGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
KTsKLSAgICB9CiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICByZWdp
c3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgcnVuUG9zdFR5cGVVcGRh
dGVUYXNrcygpOwpAQCAtMTU5MSwxOCArMTU3NCwyNiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBIVE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
bwogI2VuZGlmCiAgICAgaWYgKGlzUmFkaW9CdXR0b24oKSkKICAgICAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50ICYmICFtX2hh
c1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKSB7CisgICAgICAgIGRvY3VtZW50KCku
YWRkRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7Cisg
ICAgICAgIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUgPSB0cnVlOworICAg
IH0KICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdEluc2Vy
dGlvbkNhbGxiYWNrOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2Vu
dFNoYWRvd1RyZWUoKQoreworICAgIEFTU0VSVChtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dU
cmVlVXBkYXRlKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJB
Z2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUgPSBmYWxzZTsKKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3Vi
dHJlZUlmTmVlZGVkKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5z
ZXJ0aW5nTm9kZSgpCiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZEZpbmlz
aEluc2VydGluZ05vZGUoKTsKICAgICBpZiAoaXNJblRyZWVTY29wZSgpICYmICFmb3JtKCkpCiAg
ICAgICAgIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQotICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0KQotICAgICAg
ICBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250
YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaAppbmRleCA5MzA3MjljOTU2YjRjZmQ0NDQwZmIwODkyODE4OTVjNTBjNmJk
MzBlLi5jYzUwZmVlMzNjOThkMWY4OTJhNDdlNGMwNTE0MTI5M2ZmMTMxYWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoK
ICAgICBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJl
ZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRl
eHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5k
ZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwog
CiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiAr
MzU3LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBj
b25zdCBmaW5hbDsKIAorICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9
CisKKyAgICB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKKwogcHJvdGVj
dGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCAr
Mzc2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAot
ICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eSgpOwotCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXli
b2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg3
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBm
aW5hbDsKIAotICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAg
ICBib29sIGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBpc1RleHRGaWVsZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdCBmaW5hbDsKQEAgLTQ5NSw2ICs0OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNUb3VjaEV2ZW50SGFuZGxlciA6IDE7CiAjZW5kaWYKICAgICBib29sIG1faXNTcGVsbGNo
ZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQgOiAxOworICAgIGJvb2wgbV9oYXNQZW5k
aW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSA6IDE7CiAgICAgUmVmUHRyPElucHV0VHlwZT4g
bV9pbnB1dFR5cGU7CiAgICAgLy8gVGhlIEltYWdlTG9hZGVyIG11c3QgYmUgb3duZWQgYnkgdGhp
cyBlbGVtZW50IGJlY2F1c2UgdGhlIGxvYWRlciBjb2RlIGFzc3VtZXMKICAgICAvLyB0aGF0IGl0
IGxpdmVzIGFzIGxvbmcgYXMgaXRzIG93bmluZyBlbGVtZW50IGxpdmVzLiBJZiB3ZSBtb3ZlIHRo
ZSBsb2FkZXIgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKaW5kZXggNjY4ZGQ3ZjlkZmQ2YTU4N2I5ODJhYjk1NDRiZjk2MWU1MDYzMmUyNS4uYWE1MmYw
MGRiNWRjMDZkZDMwNDgxNmUxMzMxNTVhNzM5YTRhMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNDUsNiArMzQ1LDExIEBAIFJlZlB0cjxU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4
dEVsZW1lbnQoKSBjb25zCiAgICAgcmV0dXJuIGNoaWxkcmVuT2ZUeXBlPFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnRDcmVh
dGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuIGlubmVyVGV4dEVsZW1l
bnQoKTsKK30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ry
b3llZCgpCiB7CiAgICAgdXBkYXRlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgKaW5kZXggM2JlNWFlOTZjMjM5YzU2ZGEyOTIyZDhiNWJhZDg5ZjVlNjBl
YjJmMy4uMDA3N2YwMjUzMjZkNzhmMDIxZGFjMGNiMjcxZDljOTY4ZmNjYmFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAgIHZvaWQgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5k
ZXggOTY0Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uNzkwZGQwY2Y0Yzg2
ZWQ5ZGZiMTg2YjAyOTdhZmU4ZDRhOTkwNTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50
KQogewogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsK
LSAgICBpbm5lclRleHRFbGVtZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisg
ICAgaWYgKGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5l
clRleHQtPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05v
dExpbmVCcmVhayhVQ2hhciBjaCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBj
aCAhPSBjYXJyaWFnZVJldHVybjsgfQpAQCAtMzA5LDcgKzMxMSw3IEBAIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwg
VGV4dEZpZWxkCiAgICAgZW5kID0gc3RkOjptYXgoZW5kLCAwKTsKICAgICBzdGFydCA9IHN0ZDo6
bWluKHN0ZDo6bWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5u
ZXJUZXh0RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENy
ZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBoYXNGb2N1cyA9IGRvY3Vt
ZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzOwogICAgIGlmICghaGFzRm9jdXMgJiYgaW5u
ZXJUZXh0KSB7CiAgICAgICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewpAQCAtMzY5LDYgKzM3MSw3
IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2libGVQb3NpdGlvbiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25z
dAogeworICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkpOwogICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJUZXh0RWxlbWVudCgpLmdldCgpLCBp
bmRleCk7CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKSA9PSBp
bmRleCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpAQCAtNTg3LDcgKzU5MCw3IEBAIHN0YXRpYyBT
dHJpbmcgaW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCYgaW5u
ZXJUZXh0KQogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUgbGF5
b3V0RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6UmVhc29uOjpQZXJmb3Jt
YW5jZU9wdGltaXphdGlvbik7Ci0gICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7CisgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgK
aW5kZXggOTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVjYi4uYTAzMWUxNDY4
ZWMxYzgyNGVhMDVjZjE1ZmNkMTMyOTMzMzZkYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODksNiArODksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50
PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSA9IDA7CiAg
ICAgdmlydHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYpID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVT
ZWxlY3RFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggN2EwNTA1MDJiM2Vh
YmVkNWNkMTcxZmVmOGYzZjZiNTE5NmVhMzMyYi4uNzRlMGRkZWIxOGMwYjYwMjBlODVjOTE0MjFh
MTRiNjJmYjdkZDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKICAgICBlbGVtZW50KCktPmRlZmF1bHRCbHVy
KCk7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSgpCiB7CiB9CiAKQEAgLTExMTksMTAgKzExMTksMjYgQEAgUmVmUHRyPFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29u
c3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKQoreworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworICAgIHJl
dHVybiBpbm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJbnB1dFR5cGU6OnJlc3VsdEZv
ckRpYWxvZ1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgcmV0
dXJuIGVsZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUg
fHwgIW5lZWRzU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOworICAgIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgPSB0cnVlOworICAgIGNyZWF0
ZVNoYWRvd1N1YnRyZWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmgKaW5kZXggMDQ1ZmY0NTdmYjMyZWU2YWI5MTA1YjUzYWEyMGQ2NzhjODkzMWNl
ZS4uODEyZDU4OGI2ZWQ4ZDAzODkyYzRiYjNkM2RjZjBlZjEwZjZlNjhkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCkBAIC0yMDYsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9y
dExhYmVscygpIGNvbnN0OwogICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdDsKICAgICBi
b29sIG5lZWRzU2hhZG93U3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuICFub25TaGFkb3dSb290VHlw
ZXMuY29udGFpbnMobV90eXBlKTsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlOyB9CiAKICAgICAvLyBG
b3JtIHZhbHVlIGZ1bmN0aW9ucy4KIApAQCAtMzA2LDcgKzMwNyw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCk7CisgICAg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U2hhZG93U3VidHJl
ZSgpOwogCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTMyMyw2ICszMjUsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogZGF0YUxpc3RC
dXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUmVm
UHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5n
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9u
cy4KIApAQCAtNDEzLDYgKzQxNiw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
YXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yKTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9oYXNDcmVhdGVkU2hh
ZG93U3VidHJlZSB7IGZhbHNlIH07CiAgICAgLy8gbV9lbGVtZW50IGlzIG51bGwgaWYgdGhpcyBJ
bnB1dFR5cGUgaXMgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IChlaXRoZXIg
dGhlIGVsZW1lbnQgZGllZCBvciBjaGFuZ2VkIGlucHV0IHR5cGUpLgogICAgIFdlYWtQdHI8SFRN
TElucHV0RWxlbWVudD4gbV9lbGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAKaW5kZXggODA5ZDU4OWNmM2Q4NzEyZWJjNzFjMzEzMGM0NDMyZGRlODE1ZTk5YS4u
ZjkyOTY3YzQ0MTYzZTBmMDc0NTk0OWMxYjhiNDkzNTEyNGYwZTMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJh
bmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5k
bGluZykgY29uc3QKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1v
dXNlRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFo
YXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoZWxl
bWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
NTEsMTAgKzE1NSwxNSBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dChNb3VzZUV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBSYW5n
ZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50JiBldmVudCkKIHsKKyAgICBB
U1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkK
KyAgICAgICAgcmV0dXJuOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLmhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpOwogI2VsaWYgRU5BQkxF
KFRPVUNIX1NMSURFUikKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChlbGVtZW50
KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4Mywx
MiArMTkyLDE4IEBAIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkg
Y29uc3QKIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogewor
ICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwogICAg
IHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7CiB9
CiAKIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAg
cmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyOjpZZXM7CisKICAgICBpZiAoZWxlbWVu
dCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIFNob3VsZENhbGxC
YXNlRXZlbnRIYW5kbGVyOjpZZXM7CiAKQEAgLTI0MSw3ICsyNTYsNyBAQCBhdXRvIFJhbmdlSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3Vs
ZENhbGxCYXNlRQogICAgIHJldHVybiBTaG91bGRDYWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwog
fQogCi12b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMjU5LDYgKzI3NCwxMCBAQCB2b2lkIFJhbmdlSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KGJvbwogSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1l
bnQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVh
dGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VS
VChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQo
KS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOyAvLyBjb250YWluZXIKICAg
ICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+
aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsyOTYsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJ
bnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiAKIFNsaWRlclRodW1iRWxlbWVu
dCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkgY29uc3QKIHsKKyAg
ICBBU1NFUlQoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKHNsaWRlclRy
YWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCkpOyAvLyB0aHVtYgogICAgIEFTU0VSVChzbGlkZXJU
cmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpLT5pc0hUTUxFbGVtZW50KCkpOwogCkBAIC0zMjIs
NyArMzQyLDggQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0RpcnR5VmFs
dWUoKSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRWYWx1ZShlbGVtZW50LT52YWx1ZSgp
KTsKICAgICAgICAgfQotICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0
aW9uRnJvbVZhbHVlKCk7CisgICAgICAgIGlmIChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQor
ICAgICAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1
ZSgpOwogICAgIH0KICAgICBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CkBA
IC0zMzksNyArMzYwLDggQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEUKICAgICAgICAgZWxlbWVu
dCgpLT5zZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KHZhbHVlKTsKICAgICB9
CiAKLSAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7
CisgICAgaWYgKGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdl
SW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKQEAgLTM2OCw3ICszOTAsNyBAQCB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tN
YXJrVmFsdWVzRGlydHkgPSB0cnVlOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJh
Y2tFbGVtZW50ID0gdGhpcy0+c2xpZGVyVHJhY2tFbGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRy
YWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNs
aWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50
LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmgKaW5kZXggMjk2NGM2NGU5ZDNkZjQwZmU5NWJiNTcyYjkxNzYzZDQzZmVjN2Ni
Yi4uMTBmZDNhNzJlN2Q2ZDBiMDE3ZWY2YmIyYjRiOTU1MDQ4YzAxNTlhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYpIGZpbmFsOwogICAgIFNob3VsZENh
bGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JikgZmlu
YWw7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHNlcmlhbGl6
ZShjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhY2Nlc3NLZXlBY3Rpb24o
Ym9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1
dFR5cGUuY3BwCmluZGV4IGY3MGIxMmUyNDM3ZmZjMWE4NjQ1ZWEwMzk4YWQ5NDBkNTI1MDI2NTUu
LjZlNWIxZTdmYmU3MmJiZDMxYmI5ODQ1N2UwMmVjZDRjNmE0N2RlNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAgLTEwMiwxMyArMTAyLDEzIEBAIGJvb2wgU2Vh
cmNoSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUp
Cit2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNT
RVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7
CiAgICAgQVNTRVJUKCFtX2NhbmNlbEJ1dHRvbik7CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHko
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOworICAgIFRleHRGaWVsZElucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZSgpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0g
Y29udGFpbmVyRWxlbWVudCgpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gdGV4dFdyYXBwZXIg
PSBpbm5lckJsb2NrRWxlbWVudCgpOwogICAgIEFTU0VSVChjb250YWluZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXggMjJmNjhjOTI1ZDg2Nzk2NDEzMGU4ZWYzMTc5
N2JjOTBlZGI4ZWY2MS4uMjNhNjI5NzRlMjJkYTc1N2RlMjJkOTdhMjgzODcwNzc0ODgxZWY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCkBAIC01MSw3ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBm
aW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgSFRNTEVs
ZW1lbnQqIHJlc3VsdHNCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CiAgICAgSFRNTEVsZW1l
bnQqIGNhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZTg3NzhiYmQ5MDA5YTVkYWI3ODFlMmRm
ZTM3ODhlOTA5N2ZhYzhjLi4zNzA1NmU0NWViMWE3NWMxNGZkNDNlNjU2ZjEzMTQ5ZmE1MWYwMzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xMDgs
NyArMTA4LDExIEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkg
Y29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc0VtcHR5VmFsdWUoKSBjb25zdAogewog
ICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOwotICAgIEFTU0VSVChpbm5l
clRleHQpOworICAgIGlmICghaW5uZXJUZXh0KSB7CisgICAgICAgIC8vIFNpbmNlIHdlIGFsd2F5
cyBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlmIGEgdmFsdWUgaXMgc2V0LCB3ZSBrbm93Cisg
ICAgICAgIC8vIHRoYXQgdGhlIHZhbHVlIGlzIGVtcHR5LgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAKICAgICBmb3IgKFRleHQqIHRleHQgPSBUZXh0Tm9kZVRyYXZlcnNhbDo6Zmlyc3RX
aXRoaW4oKmlubmVyVGV4dCk7IHRleHQ7IHRleHQgPSBUZXh0Tm9kZVRyYXZlcnNhbDo6bmV4dCgq
dGV4dCwgaW5uZXJUZXh0LmdldCgpKSkgewogICAgICAgICBpZiAodGV4dC0+bGVuZ3RoKCkpCkBA
IC0yMjEsNiArMjI1LDggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25F
dmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKSB7CiAgICAgICAgIG1faW5uZXJT
cGluQnV0dG9uLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAoZXZlbnQuZGVmYXVs
dEhhbmRsZWQoKSkKQEAgLTIzMSwxMCArMjM3LDggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBpc0JsdXJFdmVudCA9IGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50OwogICAgIGlmIChpc0ZvY3VzRXZlbnQg
fHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwot
ICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZl
bnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisgICAgaWYgKGV2ZW50LmlzTW91c2VF
dmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAgZWxlbWVudCgp
LT5mb3J3YXJkRXZlbnQoZXZlbnQpOwotICAgIH0KIH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmVsZW1lbnREaWRCbHVyKCkKQEAgLTMxNiwxMSArMzIwLDEyIEBAIGJvb2wgVGV4dEZpZWxk
SW5wdXRUeXBlOjpzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoKSBjb25zdAogICAgIHJldHVy
biBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCpl
bGVtZW50KCkpOwogfQogCi12b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJU
KGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKKyAgICBB
U1NFUlQoIWVsZW1lbnQoKS0+c2hhZG93Um9vdCgpLT5oYXNDaGlsZE5vZGVzKCkpOwogCiAgICAg
QVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNTRVJUKCFtX2lubmVyQmxvY2spOwpAQCAtMzMx
LDkgKzMzNiwxNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0
dG9uID0gdGhpcy0+c2hvdWxkSGF2ZVNwaW5CdXR0b24oKTsKICAgICBib29sIHNob3VsZEhhdmVD
YXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcigpOwot
ICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3Vs
ZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBuZWVkc0NvbnRhaW5lcigpOworICAgIGJvb2wgc2hv
dWxkRHJhd0F1dG9GaWxsQnV0dG9uID0gdGhpcy0+c2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uKCk7
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgYm9vbCBoYXNEYXRhTGlzdCA9IGVs
ZW1lbnQoKS0+bGlzdCgpOworI2VuZGlmCisgICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hv
dWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IHNob3Vs
ZERyYXdBdXRvRmlsbEJ1dHRvbgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAg
ICB8fCBoYXNEYXRhTGlzdAorI2VuZGlmCisgICAgICAgIHx8IG5lZWRzQ29udGFpbmVyKCk7CiAK
LSAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgbV9pbm5lclRleHQgPSBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgZWxlbWVudCgpLT5p
c0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpKTsKIAogICAgIGlmICghY3JlYXRlc0NvbnRhaW5l
cikgewogICAgICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCAqbV9pbm5lclRl
eHQpOwpAQCAtMzU4LDcgKzM3MSwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
U2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogCiAgICAg
ICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIsICptX2NhcHNMb2NrSW5kaWNhdG9yKTsKICAgICB9CisKICAgICB1cGRh
dGVBdXRvRmlsbEJ1dHRvbigpOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAg
ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOworI2VuZGlmCiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0
RmllbGRJbnB1dFR5cGU6OmNvbnRhaW5lckVsZW1lbnQoKSBjb25zdApAQCAtMzczLDcgKzM5MSw2
IEBAIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KCkg
Y29uc3QKIAogUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gVGV4dEZpZWxkSW5w
dXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9pbm5lclRl
eHQpOwogICAgIHJldHVybiBtX2lubmVyVGV4dDsKIH0KIApAQCAtNDI1LDYgKzQ0Miw5IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0
dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgp
OwpAQCAtNDMzLDYgKzQ1Myw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hh
bmdlZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGlu
QnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdl
ZCgpOwpAQCAtNjE2LDkgKzYzOSwxNCBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxk
UmVzcGVjdExpc3RBdHRyaWJ1dGUoKQogCiB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRl
UGxhY2Vob2xkZXJUZXh0KCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICgh
aGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFz
dXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZWxlbWVu
dCgpKTsKKwogICAgIFN0cmluZyBwbGFjZWhvbGRlclRleHQgPSBlbGVtZW50KCktPnBsYWNlaG9s
ZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KG1fcGxhY2Vob2xkZXIpIHsKQEAgLTgxNiwxMyArODQ0LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxC
dXR0b25UCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigp
CiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hh
bmdlZCgpOwogCiAgICAgaWYgKHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbigpKSB7CiAgICAgICAg
IGlmICghbV9jb250YWluZXIpCiAgICAgICAgICAgICBjcmVhdGVDb250YWluZXIoKTsKIAotICAg
ICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICAgICAgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9G
aWxsQnV0dG9uVHlwZSA9IGVsZW1lbnQoKS0+YXV0b0ZpbGxCdXR0b25UeXBlKCk7CiAgICAgICAg
IGlmICghbV9hdXRvRmlsbEJ1dHRvbikKICAgICAgICAgICAgIGNyZWF0ZUF1dG9GaWxsQnV0dG9u
KGF1dG9GaWxsQnV0dG9uVHlwZSk7CkBAIC04NDYsNiArODc4LDkgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQogeworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRv
d1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYWNoZWRTdWdnZXN0aW9ucyA9
IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggNWEyNDMyNzY1ZjFjZDY4YTQ2MWE4
ODUzNTMyNTgyODVmZTQ5OWY0OS4uNGUxYmIxNTRjNWE3YjU2MWNiNTQ0ZmUyZDZmZmI4N2YwMmFj
OWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC03MCw3
ICs3MCw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29u
dGFpbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggODYzMmYw
MmY0YmY2YmQ1YzIwMTc1ZjMxMzYzMzU2MTMyY2FhZjRlYi4uODQwZTRkOThjMDNhMjIzZTcyODlh
ZGMxZjYyMGI3OTYxZDFkMzVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKQEAgLTQ4LDEwICs0OCw3IEBAIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9jdW1lbnRFeHRlbnNpb25zKCkKLXsKLSAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fdXNlRWxlbWVudHNXaXRoUGVuZGlu
Z1NoYWRvd1RyZWVVcGRhdGUuY29tcHV0ZXNFbXB0eSgpKTsKLX0KK1NWR0RvY3VtZW50RXh0ZW5z
aW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygpID0gZGVmYXVsdDsKIAogdm9pZCBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OmFkZFRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCkK
IHsKQEAgLTkwLDIwICs4Nyw2IEBAIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnJlc291cmNlQnlJZChjb25zdCBBdG9tU3RyaW5nCiAgICAgcmV0dXJu
IG1fcmVzb3VyY2VzLmdldChpZCk7CiB9CiAKLQotdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYg
ZWxlbWVudCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1No
YWRvd1RyZWVVcGRhdGUuYWRkKGVsZW1lbnQpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04ocmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6cmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0
ZShTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewotICAgIG1fdXNlRWxlbWVudHNXaXRoUGVuZGlu
Z1NoYWRvd1RyZWVVcGRhdGUucmVtb3ZlKGVsZW1lbnQpOwotICAgIC8vIEZJWE1FOiBBc3NlcnQg
dGhhdCBlbGVtZW50IHdhcyBpbiBtX3N2Z1VzZUVsZW1lbnRzIG9uY2UgcmUtZW50cmFuY3kgdG8g
dXBkYXRlIHN0eWxlIGFuZCBsYXlvdXQgaGF2ZSBiZWVuIHJlbW92ZWQuCi19Ci0KLQogdm9pZCBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OnN0YXJ0QW5pbWF0aW9ucygpCiB7CiAgICAgLy8gRklYTUU6
IEV2ZW50dWFsbHkgZXZlcnkgIlRpbWUgQ29udGFpbmVyIiB3aWxsIG5lZWQgYSB3YXkgdG8gbGF0
Y2ggb24gdG8gc29tZSBnbG9iYWwgdGltZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaAppbmRleCBkYzI4NjllYTQ2MDYzODFkZTRmMmQ4OTA2NGIyNTE2ZGVhNmNi
NWYwLi45YmJkNzdiYmNjNTNiNThmOGQ5MDUxNmNkYmMxMzlhM2JkZDFmZWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00Myw3ICs0Myw3IEBAIGNs
YXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zKERvY3VtZW50Jik7CiAgICAgflNWR0RvY3VtZW50RXh0ZW5zaW9ucygp
OwotICAgIAorCiAgICAgdm9pZCBhZGRUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKICAg
ICB2b2lkIHJlbW92ZVRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYpOwogCkBAIC01MSwxMCAr
NTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5n
JiBpZCk7CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHJlc291cmNlQnlJZChjb25z
dCBBdG9tU3RyaW5nJiBpZCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZFVzZUVsZW1lbnRXaXRoUGVu
ZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlVXNl
RWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50Jik7Ci0gICAg
Y29uc3QgV2Vha0hhc2hTZXQ8U1ZHVXNlRWxlbWVudD4mIHVzZUVsZW1lbnRzV2l0aFBlbmRpbmdT
aGFkb3dUcmVlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5n
U2hhZG93VHJlZVVwZGF0ZTsgfQotCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHBhdXNlQW5pbWF0aW9ucygpOwogICAgIHZvaWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKQEAg
LTg2LDcgKzgyLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUmVzb3VyY2Vz
Q2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CiAKICAgICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiBt
X3JlYnVpbGRFbGVtZW50czsKLSAgICBXZWFrSGFzaFNldDxTVkdVc2VFbGVtZW50PiBtX3VzZUVs
ZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlOwogICAgIGJvb2wgbV9hcmVBbmltYXRp
b25zUGF1c2VkOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5k
ZXggMDU0N2NjYTlkMjZmYmQwZjM5NTk1M2FhYTQ5ZWRiYTUyMjIwNjQyZC4uYjllZGVmNjMxZTY2
ZTYwZmY1OGM3NTIzNDk4MWUyMTQ1MzBlNGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0IFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5CiAgICAg
U1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBw
YXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9E
b2N1bWVudCkgewogICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAg
ICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRVc2VFbGVtZW50V2l0aFBl
bmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRk
RWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAg
ICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGJhY2sg
dGhlIGNhbGwgdG8gdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpIGhlcmUgb25jZSBub3RpZnlGaW5p
c2hlZCBpcyBtYWRlIGFsd2F5cyBhc3luYy4KICAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmCiAgICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVw
ZGF0ZUV4dGVybmFsRG9jdW1lbnQgd2hpY2ggY2FsbHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4K
ICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAg
IGlmIChtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVV
cGRhdGUoKnRoaXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBl
bmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKICAgICB9CiAgICAgU1ZHR3Jh
cGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3Vt
ZW50KSB7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRp
bmdSZXNvdXJjZSgpCiAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKIH0KIAotdm9pZCBTVkdV
c2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRl
VXNlckFnZW50U2hhZG93VHJlZSgpCiB7CiAgICAgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgPSBm
YWxzZTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hh
ZG93VHJlZSgpCiAKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVVc2VFbGVtZW50V2l0aFBl
bmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1l
bnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogCiAgICAgU3Ry
aW5nIHRhcmdldElEOwogICAgIGF1dG8qIHRhcmdldCA9IGZpbmRUYXJnZXQoJnRhcmdldElEKTsK
QEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dU
cmVlKCkKICAgICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiAgICAg
aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCk7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkp
Ci0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFVzZUVsZW1lbnRX
aXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgpLmFk
ZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogfQog
CiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCA2OWVmYWZmYTk0MGYwMjA4OTE1NTg2MDc1
YzkxNTUyOGQxZWNjNDc5Li5jNDJkOGU1MzJlNmEyMWM2NmRkNzUyNTNmYjcxODI1MTIwMGUyNzU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTM4LDggKzM4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflNWR1VzZUVsZW1lbnQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVNo
YWRvd1RyZWUoKTsKLSAgICBib29sIHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRlOyB9Ci0gICAgdm9pZCB1cGRhdGVTaGFkb3dUcmVl
KCk7CisgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCkgZmluYWw7CiAKICAgICBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlckNsaXBDaGlsZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZmOTc0NGU0YzdjOGY2NWU5OTNkYzNhNTlmOWIy
N2RlOTEzZC4uMWQyYWY1NTA3MTQ1MzBkMTJlNWJjYzBjNTIyNTcyZjY2Yjg5NWE0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI1NCw2ICsxMjU0LDEwIEBAIE5vZGUq
IEludGVybmFsczo6ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdChFbGVtZW50JiBob3N0KQogCiBO
b2RlKiBJbnRlcm5hbHM6OnNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCkKIHsKKyAgICBpZiAoaG9z
dC5kb2N1bWVudCgpLmhhc0VsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRh
dGUoaG9zdCkpIHsKKyAgICAgICAgaG9zdC51cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCk7Cisg
ICAgICAgIGhvc3QuZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRT
aGFkb3dUcmVlVXBkYXRlKGhvc3QpOworICAgIH0KICAgICByZXR1cm4gaG9zdC5zaGFkb3dSb290
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjZGUwNTY1YjhhOTFmMjBlNWYwNmRiZjY5MDk2ZGQ3OTNmNDE4NmJj
Li4wMTg4NjYyYmRkMWNhNzU3MGY5YzJmNDYwNmZmZTE0ODNhMTk0MjZhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjItMDItMjYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIGlucHV0IGVsZW1lbnQgVUEgc2hhZG93IHRyZWUgY3JlYXRpb24g
bGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qczog
QWRkZWQuCisgICAgICAgIChzdXBwb3J0c1R5cGUpOgorICAgICAgICAobWFrZUFuZEFwcGVuZElu
cHV0KToKKwogMjAyMi0wMi0yNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgQ1NQIGhhbmRsaW5nIG9mIGphdmFzY3JpcHQgVVJMcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0
aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRy
ZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTYyY2M0NDBhZTRkMTA2M2Jj
NDc4MDIyNDg4YTY0YzI5MzFkY2NhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Imxhenktc2hhZG93
LXRyZWUtY3JlYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3J1bih7IHVzZVBhcnNlcjog
dHJ1ZSB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9s
YXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xh
enktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjI4YTBkOWI5ZTRmNzlm
NDQ0YWQ5MDQ1ZWQzYzkyNTllYjBhYzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmh0bWwKQEAgLTAsMCArMSw2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Imxhenktc2hhZG93LXRyZWUt
Y3JlYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3J1bih7IHVzZVBhcnNlcjogZmFsc2Ug
fSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjhmYjlmOWZjOWNmNWE1MzNjMDViZjFk
NzZiMDkzMTUzNzdkOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzCkBAIC0wLDAgKzEsNTcgQEAKK2NvbnN0IHR5
cGVzID0geworICAgICJjb2xvciI6IHsgdmFsdWU6ICIjMDA4MDAwIiB9LAorICAgICJkYXRlIjog
eyB2YWx1ZTogIjIwMjItMDEtMDEiIH0sCisgICAgImRhdGV0aW1lLWxvY2FsIjogeyB2YWx1ZTog
IjIwMjItMDEtMDEiIH0sCisgICAgImVtYWlsIjogeyB2YWx1ZTogImhlbGxvQGV4YW1wbGUuY29t
IiB9LAorICAgICJmaWxlIjogeyB9LAorICAgICJtb250aCI6IHsgdmFsdWU6ICIyMDIyLTAxIiB9
LAorICAgICJudW1iZXIiOiB7IHZhbHVlOiAiMTIzIiB9LAorICAgICJwYXNzd29yZCI6IHsgfSwK
KyAgICAicmFuZ2UiOiB7IHZhbHVlOiAiNzUiIH0sCisgICAgInNlYXJjaCI6IHsgdmFsdWU6ICJh
YmMiIH0sCisgICAgInRlbGVwaG9uZSI6IHsgdmFsdWU6ICIrNjEzMDAwMDAwMDAiIH0sCisgICAg
InRleHQiOiB7IHZhbHVlOiAiYWJjIiB9LAorICAgICJ0aW1lIjogeyB2YWx1ZTogIjEwOjAwIiB9
LAorICAgICJ1cmwiOiB7IHZhbHVlOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iIH0sCisgICAgIndl
ZWsiOiB7IHZhbHVlOiAiMjAyMi1XMSIgfSwKK307CisKK2Z1bmN0aW9uIHN1cHBvcnRzVHlwZSh0
eXBlTmFtZSkgeworICAgIGxldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsK
KyAgICBlLnR5cGUgPSB0eXBlTmFtZTsKKyAgICByZXR1cm4gZS50eXBlID09IHR5cGVOYW1lOwor
fQorCitmdW5jdGlvbiBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIGF0dHJp
YnV0ZXMgPSB7IH0pIHsKKyAgICBsZXQgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChzcGFuKTsKKworICAgIGlmIChvcHRpb25z
LnVzZVBhcnNlcikgeworICAgICAgICBsZXQgdGFnID0gYDxpbnB1dCB0eXBlPSIke3R5cGVOYW1l
fSJgOworICAgICAgICBmb3IgKGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICB0
YWcgKz0gYCAke25hbWV9PSIke2F0dHJpYnV0ZXNbbmFtZV19ImA7CisgICAgICAgIHRhZyArPSAi
PiI7CisgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gdGFnOworICAgIH0gZWxzZSB7CisgICAgICAg
IGxldCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIGlu
cHV0LnR5cGUgPSB0eXBlTmFtZTsKKyAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBhdHRyaWJ1dGVz
KQorICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZXNbbmFtZV0p
OworICAgICAgICBzcGFuLmFwcGVuZChpbnB1dCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW4o
b3B0aW9ucykgeworICAgIGZvciAobGV0IHR5cGVOYW1lIGluIHR5cGVzKSB7CisgICAgICAgIGlm
ICghc3VwcG9ydHNUeXBlKHR5cGVOYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGxldCB0eXBlID0gdHlwZXNbdHlwZU5hbWVdOworICAgICAgICBtYWtlQW5kQXBwZW5kSW5w
dXQob3B0aW9ucywgdHlwZU5hbWUpOworCisgICAgICAgIGlmICh0eXBlLnZhbHVlKQorICAgICAg
ICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZhbHVlOiB0eXBl
LnZhbHVlIH0pOworCisgICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFt
ZSwgeyB2YWx1ZTogdHlwZS52YWx1ZSwgZGlzYWJsZWQ6ICJkaXNhYmxlZCIgfSk7CisgICAgfQor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453314</attachid>
            <date>2022-02-26 16:32:16 -0800</date>
            <delta_ts>2022-02-26 20:42:28 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-236747-20220227113214.patch</filename>
            <type>text/plain</type>
            <size>59741</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4NDk4NzY5NWJlM2Jh
ZmY3NTY1NTA2OTVkM2U5ODc0NjllMzc1OC4uZTFiMTliYWE5M2YzMzFmZGU3ZmEyNjA1OGM1ZWIw
NmQxNGU0YTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMi0wMi0yNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCBpbiBjYXNl
IHRoZSBldmVudCB3aWxsIGNoYW5nZQorICAgICAgICB0aGUgdmFsdWUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAgICAg
ICBPbmx5IHJldHVybiB0aGUgZWxlbWVudCBpZiBpdCdzIGJlZW4gY3JlYXRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGVsZW1lbnQgaGFzIGJlZW4gY3JlYXRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQp
OgorICAgICAgICBPbmx5IHRyeSB0byByZS1sYXlvdXQgaWYgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSBjb25zdCk6
CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3VidHJlZS4KKworICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICBNb3Zl
IHRoZSBlbGVtZW50IGFzc2VydGlvbiB1cCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZnVu
Y3Rpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4
dEVsZW1lbnQgY29uc3QpOgorICAgICAgICBEb24ndCBhc3NlcnQsIHNpbmNlIHRoaXMgbm93IGNh
biBsZWdpdGltYXRlbHkgcmV0dXJuIG51bGwuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVk
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cmVh
ZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorICAgICAgICBEb24ndCB1cGRh
dGUgdGhlIHNoYWRvdyB0cmVlIGNvbnRlbnRzIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0
LgorICAgICAgICBjcmVhdGVTaGFkb3dUcmVlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBp
dCBjcmVhdGVzIHRoZSBzaGFkb3cKKyAgICAgICAgdHJlZSBjb250ZW50cyByZWZsZWN0aW5nIHRo
ZSBjdXJyZW50IHN0YXRlLgorCisyMDIyLTAyLTI2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHRvIHJlcXVlc3QgYSBVQSBz
aGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTVkcgPHVzZT4gZWxlbWVudHMgcmVnaXN0ZXIgdGhlbXNl
bHZlcyB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRoZWlyCisgICAgICAgIHNoYWRvdyB0cmVlIGNv
bnRlbnRzIG5lZWQgdXBkYXRpbmcsIGFuZCB0aGlzIHVwZGF0aW5nIGlzIGRvbmUgaW4KKyAgICAg
ICAgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZS4gRm9yIGxhenkgSFRNTCA8aW5wdXQ+IGVsZW1lbnQg
VUEgc2hhZG93IHRyZWVzCisgICAgICAgIChpbiBidWcgMjM2NzQ3KSB3ZSBuZWVkIHNvbWV0aGlu
ZyBzaW1pbGFyLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRT
aGFkb3dUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5z
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVVc2VFbGVtZW50V2l0
aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMi0wMi0yNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQ1NQIGhhbmRsaW5nIG9mIGph
dmFzY3JpcHQgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTU1Zjc0NjZjM2FlNzU0
NzYzNGI0OTcwZjllOTZiNDYzOGFkNzRiNS4uMTQxOTk4MjFmZmNjOGFlODNlM2ZjZjI3ZTdjNDhj
OGQ0YzBlMzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDA1LDE0ICsyMDA1LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVUeXBlIHR5cGUpCiAK
ICAgICBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IgcmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yKHJlbmRlclZpZXcoKSk7CiAKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB1cGRhdGUg
cGVyIHRyZWUgc2NvcGUuCi0gICAgaWYgKGF1dG8qIGV4dGVuc2lvbnMgPSBtX3N2Z0V4dGVuc2lv
bnMuZ2V0KCkpIHsKLSAgICAgICAgYXV0byBlbGVtZW50cyA9IGNvcHlUb1ZlY3Rvck9mPFJlZjxT
VkdVc2VFbGVtZW50Pj4oZXh0ZW5zaW9ucy0+dXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUoKSk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGNsZWFyIG1fc3ZnVXNlRWxlbWVudHMg
aGVyZSBiZWNhdXNlIHVwZGF0ZVNoYWRvd1RyZWUgbWF5IGVuZCB1cCBleGVjdXRpbmcgYXJiaXRy
YXJ5IHNjcmlwdHMKLSAgICAgICAgLy8gd2hpY2ggbWF5IGluc2VydCBuZXcgU1ZHIHVzZSBlbGVt
ZW50cyBvciByZW1vdmUgZXhpc3Rpbmcgb25lcyBpbnNpZGUgc3luYyBJUEMgdmlhIEltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudHMpCi0gICAgICAgICAgICBlbGVtZW50LT51cGRhdGVTaGFkb3dUcmVlKCk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgdXBkYXRlIHBlciB0
cmVlIHNjb3BlLgorCisgICAgLy8gV2UgY2FuJ3QgY2xlYXIgbV9lbGVtZW50c1dpdGhQZW5kaW5n
VXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMgaGVyZQorICAgIC8vIGJlY2F1c2UgU1ZHVXNlRWxl
bWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4ZWN1dGluZworICAg
IC8vIGFyYml0cmFyeSBzY3JpcHRzIHdoaWNoIG1heSBpbnNlcnQgbmV3IFNWRyB1c2UgZWxlbWVu
dHMgb3IgcmVtb3ZlCisgICAgLy8gZXhpc3Rpbmcgb25lcyBpbnNpZGUgc3luYyBJUEMgdmlhIElt
YWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KKyAgICAvLworICAgIC8vIEluc3RlYWQsIGl0
IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlIHRvCisg
ICAgLy8gcmVtb3ZlIHRoZSBlbGVtZW50LgorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNvcHlU
b1ZlY3Rvck9mPFJlZjxFbGVtZW50Pj4obV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZXMpKQorICAgICAgICBlbGVtZW50LT51cGRhdGVVc2VyQWdlbnRTaGFkb3dU
cmVlKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBzdHlsZSBvbiBvdXIgYW5j
ZXN0b3IgY2hhaW4gYmVmb3JlIHByb2NlZWRpbmcsIGhvd2V2ZXIgZG9pbmcgc28gYXQKICAgICAv
LyB0aGUgdGltZSB0aGlzIGNvbW1lbnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBjYXVzZWQgc2V2
ZXJhbCB0ZXN0cyB0byBjcmFzaC4KQEAgLTkwODYsNiArOTA4OSwyNSBAQCBzdGQ6Om9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiBEb2N1bWVudDo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCit2b2lkIERvY3VtZW50OjphZGRFbGVtZW50V2l0aFBlbmRpbmdV
c2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgQVNTRVJU
KCZlbGVtZW50LmRvY3VtZW50KCkgPT0gdGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtX2VsZW1l
bnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcy5hZGQoZWxlbWVudCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJB
Z2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoJmVs
ZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlcy5yZW1vdmUoZWxlbWVudCk7CisgICAgLy8gRklYTUU6IEFz
c2VydCB0aGF0IGVsZW1lbnQgd2FzIGluIG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGVzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0eWxlIGFuZCBsYXlv
dXQgaGF2ZSBiZWVuIHJlbW92ZWQuCit9CisKK2Jvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRo
UGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVw
ZGF0ZXMuY29udGFpbnMoZWxlbWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMxYmVj
Y2QyMWFiMTMxNmFlMDMwNGU5NzkzOWM3YTI2NjI0MjM2MTMuLjZmODk0NGY1MTU0Y2UyM2UyNDc1
OWFhMjNiNjJkYmMyOGYwYjQxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjczLDYgKzE2
NzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVOZXdJZGVudGlmaWVyKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0VsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRv
d1RyZWVVcGRhdGUoRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgYWRkRWxlbWVudFdpdGhQZW5k
aW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRl
KEVsZW1lbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBT
eW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJM
JiwgRG9jdW1lbnRDbGFzc2VzID0geyB9LCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0geyB9KTsKQEAgLTIyNjQsNiArMjI2
OCw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXI+IG1fbW9kYWxDb250YWluZXJPYnNlcnZlcjsKIAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+PiBtX3doZW5Jc1Zpc2libGVIYW5kbGVyczsKKworICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+
IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzOwogfTsKIAog
RWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IDYyMDliZTYyYTcwNDY0ZmVjNzMzMzQ1ZTY1NTM2M2RjY2ZlOWY1ODgu
LjY5ZWIzM2I1MjNhODkyYWI4YjhhZmQ4MjExMTViMDA1YmY1NjlkNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNjY0LDYgKzY2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0R1cGxpY2F0ZUF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRHVwbGljYXRlQXR0cmlidXRlOyB9OwogICAg
IHZvaWQgc2V0SGFzRHVwbGljYXRlQXR0cmlidXRlKGJvb2wgaGFzRHVwbGljYXRlQXR0cmlidXRl
KSB7IG1faGFzRHVwbGljYXRlQXR0cmlidXRlID0gaGFzRHVwbGljYXRlQXR0cmlidXRlOyB9Owog
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSB7IH0KKwogcHJv
dGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29u
c3RydWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcAppbmRleCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZk
YTM1YzQ2Li5jZjdjYzMxZjM0MmY3YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0z
MDYsNyArMzA2LDcgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFj
dGl2YXRlRXZlbnQoRXZlbnQmKQogICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VChlbGVtZW50KCkpOwpAQCAtMzM0LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwor
CisgICAgY3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRp
bWVFZGl0RWxlbWVudCkgewogICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50
Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5oCmluZGV4IDNlYjZkNTVmMWNhMzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVm
OGUxOWZmYjQ4ODU1ZjRlMmZlODJlM2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2
b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9p
ZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0
VmFsdWUoKSBmaW5hbDsKICAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDY2NTNmZDNjZDU2
NzU5MTcxZjVkMDZhNmI1M2JkYmZjYjExN2Q1MS4uZjExOWU4MmIzNzdkZGI0MWZjZDllOGI5M2Fh
N2ZjZWZhMGY1ZGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAg
LTEzNiw3ICsxMzYsNyBAQCBDb2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29u
c3QKICAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSku
dmFsdWUoKTsKIH0KIAotdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuaAppbmRleCA5YjU3MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4x
MTZkYWIxMTdiOTc1OWIyMzYxNzM3MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUo
KSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZh
bHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCmluZGV4IGU4MzhlNWM4NzRiZmFkODI2ZTI3MThhNzFkZTgxMWE0NjFjZWZhMGYu
LmVhN2RmYWNmNjJiNzgyNTU5ZDY1ZTNiZmI2YjNkMGNjZGZlMjUyMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yKQogICAgIGVsZW1lbnQoKS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12
b2lkIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAg
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/
IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkp
KTsKKworICAgIGF1dG8gYnV0dG9uID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVw
bG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVs
ZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0
ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hh
ZG93Um9vdCgpKTsKIAogICAgIGF1dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQg
PSB0aGlzLT5lbGVtZW50KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dS
b290KCkpOwogICAgICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRy
ZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0
b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQy
OTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1
NWUwMDAyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7
CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1
bHRUb29sVGlwKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCBmMTBjNDgzYTU0NmM4MDk1YjFjMjM5MWFmZThkNGIzNzcwNzNkY2M1Li5i
Y2Q2YzhhMGViNzA5OTIyNjk1NGFiZDdkOWUwZDU0YmViNTdkZWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEzNSw5ICsxMzUsMTAgQEAgSFRNTElucHV0
RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW0KICAgICAsIG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFsc2UpCiAjZW5k
aWYKICAgICAsIG1faXNTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoZmFs
c2UpCisgICAgLCBtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGZhbHNlKQog
ewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQg
YnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQg
aW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBkZXN0cm95
IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRv
IHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemls
eSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1
Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3QgdG8gZGVz
dHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBhcnNl
ciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRCeVBhcnNl
cikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOwog
CkBAIC0xNDcsMTQgKzE0OCw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJlZjxIVE1M
SW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExh
emlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gaW5wdXRF
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRvd1Jv
b3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5cGUtPm5l
ZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVVc2VyQWdl
bnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAgICByZXR1
cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBIVE1M
SW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKQEAgLTE2
NCwxMiArMTU4LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJ
bWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlwZSgq
bV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQog
ewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzIwMCwxMSBA
QCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpp
bm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4
dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSFRN
TElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRDcmVhdGlu
Z1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElucHV0RWxl
bWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTczLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1l
bnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9p
bnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRl
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxp
ZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNiwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBlID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYgKHR5cGUu
aXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQo
KnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgp
KTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAgICAg
ICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBl
OjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dT
dWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAg
ICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgcmVn
aXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RUeXBlVXBk
YXRlVGFza3MoKTsKQEAgLTE1OTEsMTggKzE1NzQsMjYgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQgSFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW8KICNlbmRpZgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIHVwZGF0ZVZhbGlk
aXR5KCk7CisgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiAhbV9o
YXNQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSkgeworICAgICAgICBkb2N1bWVudCgp
LmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwor
ICAgICAgICBtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlID0gdHJ1ZTsKKyAg
ICB9CiAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNl
cnRpb25DYWxsYmFjazsKIH0KIAordm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVVc2VyQWdl
bnRTaGFkb3dUcmVlKCkKK3sKKyAgICBBU1NFUlQobV9oYXNQZW5kaW5nVXNlckFnZW50U2hhZG93
VHJlZVVwZGF0ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICBtX2hhc1BlbmRpbmdVc2VyQWdlbnRT
aGFkb3dUcmVlVXBkYXRlID0gZmFsc2U7CisgICAgbV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZEZpbmlzaElu
c2VydGluZ05vZGUoKQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRGaW5p
c2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSAmJiAhZm9ybSgpKQog
ICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVtcHR5TGlzdCkKLSAgICAg
ICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKaW5kZXggOTMwNzI5Yzk1NmI0Y2ZkNDQ0MGZiMDg5MjgxODk1YzUwYzZi
ZDMwZS4uY2M1MGZlZTMzYzk4ZDFmODkyYTQ3ZTRjMDUxNDEyOTNmZjEzMWFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6
CiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdDsKICAgICAKICAgICBS
ZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJU
ZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVu
ZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsK
IAogICAgIEhUTUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0OwpAQCAtMzU2LDYg
KzM1NywxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgcmVzdWx0Rm9yRGlhbG9nU3VibWl0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsg
fQorCisgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCkgZmluYWw7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIApAQCAtMzcxLDgg
KzM3Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAK
LSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkoKTsKLQogICAgIGludCBkZWZhdWx0VGFiSW5kZXgoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzS2V5
Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IGZpbmFsOwpAQCAtMzg0LDggKzM4
Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsgfQotCiAg
ICAgYm9vbCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gaXNUZXh0RmllbGQoKTsgfQogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QgZmluYWw7CkBAIC00OTUsNiArNDk2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzVG91Y2hFdmVudEhhbmRsZXIgOiAxOwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3BlbGxj
aGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50IDogMTsKKyAgICBib29sIG1faGFzUGVu
ZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUgOiAxOwogICAgIFJlZlB0cjxJbnB1dFR5cGU+
IG1faW5wdXRUeXBlOwogICAgIC8vIFRoZSBJbWFnZUxvYWRlciBtdXN0IGJlIG93bmVkIGJ5IHRo
aXMgZWxlbWVudCBiZWNhdXNlIHRoZSBsb2FkZXIgY29kZSBhc3N1bWVzCiAgICAgLy8gdGhhdCBp
dCBsaXZlcyBhcyBsb25nIGFzIGl0cyBvd25pbmcgZWxlbWVudCBsaXZlcy4gSWYgd2UgbW92ZSB0
aGUgbG9hZGVyIGludG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCmluZGV4IDY2OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJm
MDBkYjVkYzA2ZGQzMDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRl
eHRFbGVtZW50KCkgY29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3Jl
YXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVt
ZW50KCk7Cit9CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0
cm95ZWQoKQogewogICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYw
ZWIyZjMuLjAwNzdmMDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBp
bm5lclRleHRFbGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hh
ZG93U3VidHJlZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRy
aWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmlu
ZGV4IDk2NGNjMWEyMWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4
NmVkOWRmYjE4NmIwMjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAg
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVu
dCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwg
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgaW5uZXJUZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKwor
ICAgIGlmIChhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5u
ZXJUZXh0LT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNO
b3RMaW5lQnJlYWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYg
Y2ggIT0gY2FycmlhZ2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQs
IFRleHRGaWVsZAogICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6
Om1pbihzdGQ6Om1heChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlu
bmVyVGV4dEVsZW1lbnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRD
cmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1
bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlu
bmVyVGV4dCkgewogICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEs
NyBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29u
c3QKIHsKKyAgICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwg
aW5kZXgpOwogICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0g
aW5kZXgpOwogICAgIHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMg
U3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlu
bmVyVGV4dCkKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZh
bHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxh
eW91dERpc2FsbG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9y
bWFuY2VPcHRpbWl6YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVu
dCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
CmluZGV4IDk5ODZhYzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2
OGVjMWM4MjRlYTA1Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKSA9IDA7CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJl
U2VsZWN0RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNl
YWJlZDVjZDE3MWZlZjhmM2Y2YjUxOTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIwZTg1YzkxNDIx
YTE0YjYyZmI3ZGQ5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1
cigpOwogfQogCi12b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkKK3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gaW5uZXJUZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRG
b3JEaWFsb2dTdWJtaXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJl
dHVybiBlbGVtZW50KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
IHx8ICFuZWVkc1NoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKKyAgICBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFj
ZWUuLjgxMmQ1ODhiNmVkOGQwMzg5MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBv
cnRMYWJlbHMoKSBjb25zdDsKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAg
Ym9vbCBuZWVkc1NoYWRvd1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5
cGVzLmNvbnRhaW5zKG1fdHlwZSk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8g
Rm9ybSB2YWx1ZSBmdW5jdGlvbnMuCiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTaGFkb3cgdHJlZSBoYW5kbGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0
QnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJl
ZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGlu
Z1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlv
bnMuCiAKQEAgLTQxMyw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGFwcGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvcik7CiAKICAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFzQ3JlYXRlZFNo
YWRvd1N1YnRyZWUgeyBmYWxzZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMg
SW5wdXRUeXBlIGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVy
IHRoZSBlbGVtZW50IGRpZWQgb3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhU
TUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCmluZGV4IDgwOWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEu
LmYwNmJkNTU5YjAyNzRiMDY3NWVhNGFmNzc2N2Y4MjU1ZDc2YmIxNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBS
YW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0CiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChN
b3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICgh
aGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVs
ZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZl
bnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkp
CisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRT
bGlkZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJM
RShUT1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVu
dCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMs
MTIgKzE5MiwxNSBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigp
IGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAg
ICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwog
fQogCiBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyOjpZZXM7CiAKQEAgLTI0
MSw3ICsyNTMsNyBAQCBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRQogICAgIHJldHVybiBTaG91bGRD
YWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogfQogCi12b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wp
Cit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMjU5
LDYgKzI3MSwxMCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvbwogSFRNTEVsZW1lbnQqIFJhbmdl
SW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJz
dENoaWxkKCkpOyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsy
OTMsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgp
IGNvbnN0CiAKIFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaGFzQ3JlYXRlZFNoYWRvd1N1YnRy
ZWUoKSk7CiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCkpOyAv
LyB0aHVtYgogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpLT5p
c0hUTUxFbGVtZW50KCkpOwogCkBAIC0zMjIsNyArMzM5LDggQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0RpcnR5VmFsdWUoKSkKICAgICAgICAgICAgICAgICBlbGVtZW50
LT5zZXRWYWx1ZShlbGVtZW50LT52YWx1ZSgpKTsKICAgICAgICAgfQotICAgICAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgICAgIGlmICho
YXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVs
ZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwogICAgIH0KICAgICBJbnB1dFR5cGU6OmF0
dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CkBAIC0zMzksNyArMzU3LDggQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFRleHRGaWVsZEUKICAgICAgICAgZWxlbWVudCgpLT5zZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJv
bENoYW5nZUV2ZW50KHZhbHVlKTsKICAgICB9CiAKLSAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVu
dCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgaWYgKGhhc0NyZWF0ZWRTaGFkb3dTdWJ0
cmVlKCkpCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9t
VmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29u
c3QKQEAgLTM2OCw3ICszODcsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhh
dmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwogICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVyVHJhY2tF
bGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBp
ZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkK
ICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggMjk2NGM2NGU5ZDNk
ZjQwZmU5NWJiNTcyYjkxNzYzZDQzZmVjN2NiYi4uMTBmZDNhNzJlN2Q2ZDBiMDE3ZWY2YmIyYjRi
OTU1MDQ4YzAxNTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTIs
NyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VF
dmVudCYpIGZpbmFsOwogICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50JikgZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJv
b2wpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIERl
Y2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qg
ZmluYWw7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IGY3MGIxMmUyNDM3ZmZj
MWE4NjQ1ZWEwMzk4YWQ5NDBkNTI1MDI2NTUuLjZlNWIxZTdmYmU3MmJiZDMxYmI5ODQ1N2UwMmVj
ZDRjNmE0N2RlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAg
LTEwMiwxMyArMTAyLDEzIEBAIGJvb2wgU2VhcmNoSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCit2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRl
U2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAg
ICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7CiAgICAgQVNTRVJUKCFtX2NhbmNlbEJ1dHRvbik7
CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOwor
ICAgIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0gY29udGFpbmVyRWxlbWVudCgpOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gdGV4dFdyYXBwZXIgPSBpbm5lckJsb2NrRWxlbWVudCgpOwogICAgIEFT
U0VSVChjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXgg
MjJmNjhjOTI1ZDg2Nzk2NDEzMGU4ZWYzMTc5N2JjOTBlZGI4ZWY2MS4uMjNhNjI5NzRlMjJkYTc1
N2RlMjJkOTdhMjgzODcwNzc0ODgxZWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0
VHlwZS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7CiAgICAgY29u
c3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBu
ZWVkc0NvbnRhaW5lcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dT
dWJ0cmVlKCkgZmluYWw7CiAgICAgSFRNTEVsZW1lbnQqIHJlc3VsdHNCdXR0b25FbGVtZW50KCkg
Y29uc3QgZmluYWw7CiAgICAgSFRNTEVsZW1lbnQqIGNhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRl
eCA1ZTg3NzhiYmQ5MDA5YTVkYWI3ODFlMmRmZTM3ODhlOTA5N2ZhYzhjLi4zNzA1NmU0NWViMWE3
NWMxNGZkNDNlNjU2ZjEzMTQ5ZmE1MWYwMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xMDgsNyArMTA4LDExIEBAIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBl
Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOwotICAgIEFTU0VSVChpbm5lclRleHQpOworICAgIGlmICghaW5uZXJUZXh0KSB7
CisgICAgICAgIC8vIFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlm
IGEgdmFsdWUgaXMgc2V0LCB3ZSBrbm93CisgICAgICAgIC8vIHRoYXQgdGhlIHZhbHVlIGlzIGVt
cHR5LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICBmb3IgKFRleHQqIHRleHQg
PSBUZXh0Tm9kZVRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oKmlubmVyVGV4dCk7IHRleHQ7IHRleHQg
PSBUZXh0Tm9kZVRyYXZlcnNhbDo6bmV4dCgqdGV4dCwgaW5uZXJUZXh0LmdldCgpKSkgewogICAg
ICAgICBpZiAodGV4dC0+bGVuZ3RoKCkpCkBAIC0yMjEsNiArMjI1LDggQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQm
IGV2ZW50KQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgaWYgKG1faW5uZXJTcGlu
QnV0dG9uKSB7CiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5mb3J3YXJkRXZlbnQoZXZlbnQp
OwogICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTIzMSwxMCArMjM3LDgg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAg
ICAgYm9vbCBpc0JsdXJFdmVudCA9IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2
ZW50OwogICAgIGlmIChpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGNhcHNM
b2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwotICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8
fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CisgICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0Js
dXJFdmVudCkKICAgICAgICAgZWxlbWVudCgpLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwotICAgIH0K
IH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVyKCkKQEAgLTMxNiwx
MSArMzIwLDEyIEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRIYXZlQ2Fwc0xvY2tJ
bmRpY2F0b3IoKSBjb25zdAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2hv
dWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCplbGVtZW50KCkpOwogfQogCi12b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1No
YWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKS0+c2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQoKS0+c2hhZG93Um9vdCgp
LT5oYXNDaGlsZE5vZGVzKCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNT
RVJUKCFtX2lubmVyQmxvY2spOwpAQCAtMzMxLDkgKzMzNiwxNyBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eQogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsK
ICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hvdWxkSGF2ZVNwaW5CdXR0
b24oKTsKICAgICBib29sIHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3Vs
ZEhhdmVDYXBzTG9ja0luZGljYXRvcigpOwotICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNo
b3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBuZWVk
c0NvbnRhaW5lcigpOworICAgIGJvb2wgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uID0gdGhpcy0+
c2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uKCk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisgICAgYm9vbCBoYXNEYXRhTGlzdCA9IGVsZW1lbnQoKS0+bGlzdCgpOworI2VuZGlmCisgICAg
Ym9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2
ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbgorI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICB8fCBoYXNEYXRhTGlzdAorI2VuZGlmCisgICAg
ICAgIHx8IG5lZWRzQ29udGFpbmVyKCk7CiAKLSAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0
YWJsZSk7CisgICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgZWxlbWVudCgpLT5pc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpKTsK
IAogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikgewogICAgICAgICBlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCAqbV9pbm5lclRleHQpOwpAQCAtMzU4LDcgKzM3MSwxMiBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eQogCiAgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2NhcHNMb2NrSW5k
aWNhdG9yKTsKICAgICB9CisKICAgICB1cGRhdGVBdXRvRmlsbEJ1dHRvbigpOworCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOworI2Vu
ZGlmCiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNvbnRhaW5lckVsZW1l
bnQoKSBjb25zdApAQCAtMzczLDcgKzM5MSw2IEBAIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1
dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29uc3QKIAogUmVmUHRyPFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9pbm5lclRleHQpOwogICAgIHJldHVybiBtX2lubmVyVGV4dDsK
IH0KIApAQCAtNDI1LDYgKzQ0Miw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVkU2hh
ZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0
b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNh
cHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNDMzLDYgKzQ1Myw5IEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVk
U2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9pbm5lclNwaW5C
dXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAg
IGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNjE2LDkgKzYzOSwxNCBAQCBib29s
IFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKQogCiB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKIHsKKyAgICBBU1NF
UlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIFN0cmluZyBwbGFjZWhvbGRl
clRleHQgPSBlbGVtZW50KCktPnBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKQEAgLTgxNiwxMyAr
ODQ0LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihB
dXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCiAgICAgaWYgKHNob3VsZERyYXdB
dXRvRmlsbEJ1dHRvbigpKSB7CiAgICAgICAgIGlmICghbV9jb250YWluZXIpCiAgICAgICAgICAg
ICBjcmVhdGVDb250YWluZXIoKTsKIAotICAgICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICAg
ICAgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVHlwZSA9IGVsZW1lbnQoKS0+YXV0
b0ZpbGxCdXR0b25UeXBlKCk7CiAgICAgICAgIGlmICghbV9hdXRvRmlsbEJ1dHRvbikKICAgICAg
ICAgICAgIGNyZWF0ZUF1dG9GaWxsQnV0dG9uKGF1dG9GaWxsQnV0dG9uVHlwZSk7CkBAIC04NDYs
NiArODc4LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9u
KCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQog
eworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9jYWNoZWRTdWdnZXN0aW9ucyA9IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlzdERy
b3Bkb3duSW5kaWNhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
aW5kZXggNWEyNDMyNzY1ZjFjZDY4YTQ2MWE4ODUzNTMyNTgyODVmZTQ5OWY0OS4uNGUxYmIxNTRj
NWE3YjU2MWNiNTQ0ZmUyZDZmZmI4N2YwMmFjOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgog
CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wp
IG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKaW5kZXggODYzMmYwMmY0YmY2YmQ1YzIwMTc1ZjMxMzYzMzU2MTMyY2Fh
ZjRlYi4uODQwZTRkOThjMDNhMjIzZTcyODlhZGMxZjYyMGI3OTYxZDFkMzVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQ4LDEwICs0OCw3
IEBAIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKIH0KIAotU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUuY29tcHV0ZXNFbXB0
eSgpKTsKLX0KK1NWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygp
ID0gZGVmYXVsdDsKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFRpbWVDb250YWlu
ZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKQEAgLTkwLDIwICs4Nyw2IEBAIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlc291cmNlQnlJZChj
b25zdCBBdG9tU3RyaW5nCiAgICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldChpZCk7CiB9CiAKLQot
dm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRv
d1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUuYWRkKGVsZW1lbnQpOwot
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlVXNlRWxlbWVu
dFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewot
ICAgIG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUucmVtb3ZlKGVsZW1l
bnQpOwotICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhhdCBlbGVtZW50IHdhcyBpbiBtX3N2Z1VzZUVs
ZW1lbnRzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0eWxlIGFuZCBsYXlvdXQgaGF2ZSBi
ZWVuIHJlbW92ZWQuCi19Ci0KLQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnN0YXJ0QW5p
bWF0aW9ucygpCiB7CiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgZXZlcnkgIlRpbWUgQ29udGFp
bmVyIiB3aWxsIG5lZWQgYSB3YXkgdG8gbGF0Y2ggb24gdG8gc29tZSBnbG9iYWwgdGltZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBkYzI4NjllYTQ2
MDYzODFkZTRmMmQ4OTA2NGIyNTE2ZGVhNmNiNWYwLi45YmJkNzdiYmNjNTNiNThmOGQ5MDUxNmNk
YmMxMzlhM2JkZDFmZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50Jik7CiAg
ICAgflNWR0RvY3VtZW50RXh0ZW5zaW9ucygpOwotICAgIAorCiAgICAgdm9pZCBhZGRUaW1lQ29u
dGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVRpbWVDb250YWluZXIoU1ZH
U1ZHRWxlbWVudCYpOwogCkBAIC01MSwxMCArNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIqIHJlc291cmNlQnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxl
bWVudCYpOwotICAgIHZvaWQgcmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVw
ZGF0ZShTVkdVc2VFbGVtZW50Jik7Ci0gICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHVXNlRWxlbWVu
dD4mIHVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCkgY29uc3QgeyByZXR1
cm4gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZTsgfQotCiAgICAgdm9p
ZCBzdGFydEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHBhdXNlQW5pbWF0aW9ucygpOwogICAgIHZv
aWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKQEAgLTg2LDcgKzgyLDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHUmVzb3VyY2VzQ2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CiAKICAg
ICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiBtX3JlYnVpbGRFbGVtZW50czsKLSAgICBXZWFrSGFz
aFNldDxTVkdVc2VFbGVtZW50PiBtX3VzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBk
YXRlOwogICAgIGJvb2wgbV9hcmVBbmltYXRpb25zUGF1c2VkOwogCiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMDU0N2NjYTlkMjZmYmQwZjM5NTk1M2FhYTQ5
ZWRiYTUyMjIwNjQyZC4uYjllZGVmNjMxZTY2ZTYwZmY1OGM3NTIzNDk4MWUyMTQ1MzBlNGZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIE5v
ZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvblR5CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZElu
dG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYg
KGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkgewogICAgICAgICBpZiAobV9zaGFk
b3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5hZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
KyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBNb3ZlIGJhY2sgdGhlIGNhbGwgdG8gdXBkYXRlRXh0ZXJuYWxEb2N1
bWVudCgpIGhlcmUgb25jZSBub3RpZnlGaW5pc2hlZCBpcyBtYWRlIGFsd2F5cyBhc3luYy4KICAg
ICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRp
b25DYWxsYmFjazsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmCiAg
ICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQgd2hpY2ggY2Fs
bHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAgIGlmIChtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSkK
LSAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZVVzZUVs
ZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgICAgICAgICAgZG9j
dW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRl
KCp0aGlzKTsKICAgICB9CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3Zh
bFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgaW52YWxpZGF0ZVNo
YWRvd1RyZWUoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkK
K3ZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpCiB7CiAgICAg
bV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSgpCiAKICAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5yZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
KyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGUoKnRoaXMpOwogCiAgICAgU3RyaW5nIHRhcmdldElEOwogICAgIGF1dG8qIHRhcmdl
dCA9IGZpbmRUYXJnZXQoJnRhcmdldElEKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKICAgICBpbnZhbGlkYXRlU3R5bGVBbmRS
ZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiAgICAgaW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVz
KCk7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRo
aXMpOworICAgICAgICBkb2N1bWVudCgpLmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogfQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRh
dGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRl
eCA2OWVmYWZmYTk0MGYwMjA4OTE1NTg2MDc1YzkxNTUyOGQxZWNjNDc5Li5jNDJkOGU1MzJlNmEy
MWM2NmRkNzUyNTNmYjcxODI1MTIwMGUyNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmgKQEAgLTM4LDggKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR1VzZUVsZW1lbnQo
KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICBib29sIHNoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRlOyB9
Ci0gICAgdm9pZCB1cGRhdGVTaGFkb3dUcmVlKCk7CisgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRT
aGFkb3dUcmVlKCkgZmluYWw7CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlckNsaXBDaGls
ZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZm
OTc0NGU0YzdjOGY2NWU5OTNkYzNhNTlmOWIyN2RlOTEzZC4uMWQyYWY1NTA3MTQ1MzBkMTJlNWJj
YzBjNTIyNTcyZjY2Yjg5NWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMTI1NCw2ICsxMjU0LDEwIEBAIE5vZGUqIEludGVybmFsczo6ZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdChFbGVtZW50JiBob3N0KQogCiBOb2RlKiBJbnRlcm5hbHM6OnNoYWRvd1Jvb3QoRWxl
bWVudCYgaG9zdCkKIHsKKyAgICBpZiAoaG9zdC5kb2N1bWVudCgpLmhhc0VsZW1lbnRXaXRoUGVu
ZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoaG9zdCkpIHsKKyAgICAgICAgaG9zdC51cGRh
dGVVc2VyQWdlbnRTaGFkb3dUcmVlKCk7CisgICAgICAgIGhvc3QuZG9jdW1lbnQoKS5yZW1vdmVF
bGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGhvc3QpOworICAgIH0K
ICAgICByZXR1cm4gaG9zdC5zaGFkb3dSb290KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZGUwNTY1YjhhOTFm
MjBlNWYwNmRiZjY5MDk2ZGQ3OTNmNDE4NmJjLi45OWUxNTU2OGRmY2MzNzVmNGVjMTQxZGFjMjM0
MTg5MDdmMWMwZjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDItMjYgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGlucHV0IGVsZW1l
bnQgVUEgc2hhZG93IHRyZWUgY3JlYXRpb24gbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRp
dHlhIEtlZXJ0aGkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3Jl
YXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNo
YWRvdy10cmVlLWNyZWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6
eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzdXBwb3J0c1R5cGUp
OgorICAgICAgICAobWFrZUFuZEFwcGVuZElucHV0KToKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSB0
byBhY2NvdW50IGZvciB0aGUgbGF6eSBzaGFkb3cgdHJlZSBiZWluZyBjcmVhdGVkIGxhdGVyLgor
CiAyMDIyLTAyLTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSBDU1AgaGFuZGxpbmcgb2YgamF2YXNjcmlwdCBVUkxzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVh
dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjJjYzQ0MGFlNGQxMDYzYmM0NzgwMjI0
ODhhNjRjMjkzMWRjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1j
cmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcnVuKHsgdXNlUGFyc2VyOiB0cnVlIH0p
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hh
ZG93LXRyZWUtY3JlYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MjhhMGQ5YjllNGY3OWY0NDRhZDkw
NDVlZDNjOTI1OWViMGFjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ibGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlv
bi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcnVuKHsgdXNlUGFyc2VyOiBmYWxzZSB9KTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVl
LWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliOGZiOWY5ZmM5Y2Y1YTUzM2MwNWJmMWQ3NmIwOTMx
NTM3N2Q5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenkt
c2hhZG93LXRyZWUtY3JlYXRpb24uanMKQEAgLTAsMCArMSw1NyBAQAorY29uc3QgdHlwZXMgPSB7
CisgICAgImNvbG9yIjogeyB2YWx1ZTogIiMwMDgwMDAiIH0sCisgICAgImRhdGUiOiB7IHZhbHVl
OiAiMjAyMi0wMS0wMSIgfSwKKyAgICAiZGF0ZXRpbWUtbG9jYWwiOiB7IHZhbHVlOiAiMjAyMi0w
MS0wMSIgfSwKKyAgICAiZW1haWwiOiB7IHZhbHVlOiAiaGVsbG9AZXhhbXBsZS5jb20iIH0sCisg
ICAgImZpbGUiOiB7IH0sCisgICAgIm1vbnRoIjogeyB2YWx1ZTogIjIwMjItMDEiIH0sCisgICAg
Im51bWJlciI6IHsgdmFsdWU6ICIxMjMiIH0sCisgICAgInBhc3N3b3JkIjogeyB9LAorICAgICJy
YW5nZSI6IHsgdmFsdWU6ICI3NSIgfSwKKyAgICAic2VhcmNoIjogeyB2YWx1ZTogImFiYyIgfSwK
KyAgICAidGVsZXBob25lIjogeyB2YWx1ZTogIis2MTMwMDAwMDAwMCIgfSwKKyAgICAidGV4dCI6
IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRpbWUiOiB7IHZhbHVlOiAiMTA6MDAiIH0sCisgICAg
InVybCI6IHsgdmFsdWU6ICJodHRwczovL2V4YW1wbGUuY29tLyIgfSwKKyAgICAid2VlayI6IHsg
dmFsdWU6ICIyMDIyLVcxIiB9LAorfTsKKworZnVuY3Rpb24gc3VwcG9ydHNUeXBlKHR5cGVOYW1l
KSB7CisgICAgbGV0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGUu
dHlwZSA9IHR5cGVOYW1lOworICAgIHJldHVybiBlLnR5cGUgPT0gdHlwZU5hbWU7Cit9CisKK2Z1
bmN0aW9uIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgYXR0cmlidXRlcyA9
IHsgfSkgeworICAgIGxldCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNwYW4pOworCisgICAgaWYgKG9wdGlvbnMudXNlUGFy
c2VyKSB7CisgICAgICAgIGxldCB0YWcgPSBgPGlucHV0IHR5cGU9IiR7dHlwZU5hbWV9ImA7Cisg
ICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgICAgIHRhZyArPSBg
ICR7bmFtZX09IiR7YXR0cmlidXRlc1tuYW1lXX0iYDsKKyAgICAgICAgdGFnICs9ICI+IjsKKyAg
ICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0YWc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGV0IGlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgaW5wdXQudHlw
ZSA9IHR5cGVOYW1lOworICAgICAgICBmb3IgKGxldCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAg
ICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7CisgICAg
ICAgIHNwYW4uYXBwZW5kKGlucHV0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bihvcHRpb25z
KSB7CisgICAgZm9yIChsZXQgdHlwZU5hbWUgaW4gdHlwZXMpIHsKKyAgICAgICAgaWYgKCFzdXBw
b3J0c1R5cGUodHlwZU5hbWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbGV0
IHR5cGUgPSB0eXBlc1t0eXBlTmFtZV07CisgICAgICAgIG1ha2VBbmRBcHBlbmRJbnB1dChvcHRp
b25zLCB0eXBlTmFtZSk7CisKKyAgICAgICAgaWYgKHR5cGUudmFsdWUpCisgICAgICAgICAgICBt
YWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUudmFsdWUg
fSk7CisKKyAgICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZh
bHVlOiB0eXBlLnZhbHVlLCBkaXNhYmxlZDogImRpc2FibGVkIiB9KTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmlu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2
ZXItc2hhcmluZy1leHBlY3RlZC50eHQKaW5kZXggNjk0ZDA0NjM5ZDE3YWFmNjk2NTRhY2UzNmY4
OWMwMzNhZTdhZjljNC4uYjdhNWEwM2RhOTg5NDE0YWE0NGQyNDA3MDAzMjc5MjlkOGQ1YWM5NyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNo
YXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHls
ZS1yZXNvbHZlci1zaGFyaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAKIFZlcmlmeSB0
aGF0IHNoYWRvdyByb290cyB3aXRoIGlkZW50aWNhbCBzdHlsZXMgc2hhcmUgc3R5bGUgcmVzb2x2
ZXJzIChoYXZlIGVxdWFsIGlkZW50aWZpZXIgYmVsb3cpLgogKGRvY3VtZW50IHJlc29sdmVyIChp
ZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZl
ciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQotKHNo
YWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9
MikgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3Ip
IChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCkBAIC0x
MSwxMSArMTAsMTEgQEAgVmVyaWZ5IHRoYXQgc2hhZG93IHJvb3RzIHdpdGggaWRlbnRpY2FsIHN0
eWxlcyBzaGFyZSBzdHlsZSByZXNvbHZlcnMgKGhhdmUgZXF1YWwKIChzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0zKSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCiAoc2hh
ZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNv
dW50PTEpKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTMpIChh
dXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkg
KGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQogCiBBZnRlciBzdHlsZSBtdXRh
dGlvbgogKGRvY3VtZW50IHJlc29sdmVyIChpZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3Vu
dD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkg
KGF1dGhvciBydWxlIGNvdW50PTApKQotKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50
KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVz
b2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNo
YWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBj
b3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0zKSAo
YXV0aG9yIHJ1bGUgY291bnQ9MSkpCkBAIC0yNSw0ICsyNCw1IEBAIEFmdGVyIHN0eWxlIG11dGF0
aW9uCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhv
ciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlm
aWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0
aG9yKSAoaWRlbnRpZmllcj0zKSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hhZG93IHJvb3Qg
cmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0w
KSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453321</attachid>
            <date>2022-02-26 20:42:34 -0800</date>
            <delta_ts>2022-02-27 17:25:38 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-236747-20220227154232.patch</filename>
            <type>text/plain</type>
            <size>60867</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4NDk4NzY5NWJlM2Jh
ZmY3NTY1NTA2OTVkM2U5ODc0NjllMzc1OC4uZTFiMTliYWE5M2YzMzFmZGU3ZmEyNjA1OGM1ZWIw
NmQxNGU0YTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMi0wMi0yNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCBpbiBjYXNl
IHRoZSBldmVudCB3aWxsIGNoYW5nZQorICAgICAgICB0aGUgdmFsdWUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAgICAg
ICBPbmx5IHJldHVybiB0aGUgZWxlbWVudCBpZiBpdCdzIGJlZW4gY3JlYXRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGVsZW1lbnQgaGFzIGJlZW4gY3JlYXRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQp
OgorICAgICAgICBPbmx5IHRyeSB0byByZS1sYXlvdXQgaWYgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSBjb25zdCk6
CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3VidHJlZS4KKworICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICBNb3Zl
IHRoZSBlbGVtZW50IGFzc2VydGlvbiB1cCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZnVu
Y3Rpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4
dEVsZW1lbnQgY29uc3QpOgorICAgICAgICBEb24ndCBhc3NlcnQsIHNpbmNlIHRoaXMgbm93IGNh
biBsZWdpdGltYXRlbHkgcmV0dXJuIG51bGwuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVk
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cmVh
ZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorICAgICAgICBEb24ndCB1cGRh
dGUgdGhlIHNoYWRvdyB0cmVlIGNvbnRlbnRzIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0
LgorICAgICAgICBjcmVhdGVTaGFkb3dUcmVlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBp
dCBjcmVhdGVzIHRoZSBzaGFkb3cKKyAgICAgICAgdHJlZSBjb250ZW50cyByZWZsZWN0aW5nIHRo
ZSBjdXJyZW50IHN0YXRlLgorCisyMDIyLTAyLTI2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHRvIHJlcXVlc3QgYSBVQSBz
aGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTVkcgPHVzZT4gZWxlbWVudHMgcmVnaXN0ZXIgdGhlbXNl
bHZlcyB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRoZWlyCisgICAgICAgIHNoYWRvdyB0cmVlIGNv
bnRlbnRzIG5lZWQgdXBkYXRpbmcsIGFuZCB0aGlzIHVwZGF0aW5nIGlzIGRvbmUgaW4KKyAgICAg
ICAgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZS4gRm9yIGxhenkgSFRNTCA8aW5wdXQ+IGVsZW1lbnQg
VUEgc2hhZG93IHRyZWVzCisgICAgICAgIChpbiBidWcgMjM2NzQ3KSB3ZSBuZWVkIHNvbWV0aGlu
ZyBzaW1pbGFyLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVVc2VyQWdlbnRT
aGFkb3dUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5z
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVVc2VFbGVtZW50V2l0
aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMi0wMi0yNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQ1NQIGhhbmRsaW5nIG9mIGph
dmFzY3JpcHQgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTU1Zjc0NjZjM2FlNzU0
NzYzNGI0OTcwZjllOTZiNDYzOGFkNzRiNS4uMTQxOTk4MjFmZmNjOGFlODNlM2ZjZjI3ZTdjNDhj
OGQ0YzBlMzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDA1LDE0ICsyMDA1LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVUeXBlIHR5cGUpCiAK
ICAgICBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IgcmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yKHJlbmRlclZpZXcoKSk7CiAKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB1cGRhdGUg
cGVyIHRyZWUgc2NvcGUuCi0gICAgaWYgKGF1dG8qIGV4dGVuc2lvbnMgPSBtX3N2Z0V4dGVuc2lv
bnMuZ2V0KCkpIHsKLSAgICAgICAgYXV0byBlbGVtZW50cyA9IGNvcHlUb1ZlY3Rvck9mPFJlZjxT
VkdVc2VFbGVtZW50Pj4oZXh0ZW5zaW9ucy0+dXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1Ry
ZWVVcGRhdGUoKSk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGNsZWFyIG1fc3ZnVXNlRWxlbWVudHMg
aGVyZSBiZWNhdXNlIHVwZGF0ZVNoYWRvd1RyZWUgbWF5IGVuZCB1cCBleGVjdXRpbmcgYXJiaXRy
YXJ5IHNjcmlwdHMKLSAgICAgICAgLy8gd2hpY2ggbWF5IGluc2VydCBuZXcgU1ZHIHVzZSBlbGVt
ZW50cyBvciByZW1vdmUgZXhpc3Rpbmcgb25lcyBpbnNpZGUgc3luYyBJUEMgdmlhIEltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudHMpCi0gICAgICAgICAgICBlbGVtZW50LT51cGRhdGVTaGFkb3dUcmVlKCk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgdXBkYXRlIHBlciB0
cmVlIHNjb3BlLgorCisgICAgLy8gV2UgY2FuJ3QgY2xlYXIgbV9lbGVtZW50c1dpdGhQZW5kaW5n
VXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXMgaGVyZQorICAgIC8vIGJlY2F1c2UgU1ZHVXNlRWxl
bWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4ZWN1dGluZworICAg
IC8vIGFyYml0cmFyeSBzY3JpcHRzIHdoaWNoIG1heSBpbnNlcnQgbmV3IFNWRyB1c2UgZWxlbWVu
dHMgb3IgcmVtb3ZlCisgICAgLy8gZXhpc3Rpbmcgb25lcyBpbnNpZGUgc3luYyBJUEMgdmlhIElt
YWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KKyAgICAvLworICAgIC8vIEluc3RlYWQsIGl0
IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlIHRvCisg
ICAgLy8gcmVtb3ZlIHRoZSBlbGVtZW50LgorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNvcHlU
b1ZlY3Rvck9mPFJlZjxFbGVtZW50Pj4obV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZXMpKQorICAgICAgICBlbGVtZW50LT51cGRhdGVVc2VyQWdlbnRTaGFkb3dU
cmVlKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBzdHlsZSBvbiBvdXIgYW5j
ZXN0b3IgY2hhaW4gYmVmb3JlIHByb2NlZWRpbmcsIGhvd2V2ZXIgZG9pbmcgc28gYXQKICAgICAv
LyB0aGUgdGltZSB0aGlzIGNvbW1lbnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBjYXVzZWQgc2V2
ZXJhbCB0ZXN0cyB0byBjcmFzaC4KQEAgLTkwODYsNiArOTA4OSwyNSBAQCBzdGQ6Om9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiBEb2N1bWVudDo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCit2b2lkIERvY3VtZW50OjphZGRFbGVtZW50V2l0aFBlbmRpbmdV
c2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgQVNTRVJU
KCZlbGVtZW50LmRvY3VtZW50KCkgPT0gdGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtX2VsZW1l
bnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlcy5hZGQoZWxlbWVudCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJB
Z2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoJmVs
ZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlcy5yZW1vdmUoZWxlbWVudCk7CisgICAgLy8gRklYTUU6IEFz
c2VydCB0aGF0IGVsZW1lbnQgd2FzIGluIG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGVzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0eWxlIGFuZCBsYXlv
dXQgaGF2ZSBiZWVuIHJlbW92ZWQuCit9CisKK2Jvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRo
UGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYgZWxlbWVudCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVw
ZGF0ZXMuY29udGFpbnMoZWxlbWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMxYmVj
Y2QyMWFiMTMxNmFlMDMwNGU5NzkzOWM3YTI2NjI0MjM2MTMuLjZmODk0NGY1MTU0Y2UyM2UyNDc1
OWFhMjNiNjJkYmMyOGYwYjQxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjczLDYgKzE2
NzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVOZXdJZGVudGlmaWVyKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0VsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRv
d1RyZWVVcGRhdGUoRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgYWRkRWxlbWVudFdpdGhQZW5k
aW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRl
KEVsZW1lbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBT
eW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJM
JiwgRG9jdW1lbnRDbGFzc2VzID0geyB9LCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0geyB9KTsKQEAgLTIyNjQsNiArMjI2
OCw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXI+IG1fbW9kYWxDb250YWluZXJPYnNlcnZlcjsKIAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+PiBtX3doZW5Jc1Zpc2libGVIYW5kbGVyczsKKworICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+
IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzOwogfTsKIAog
RWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IDYyMDliZTYyYTcwNDY0ZmVjNzMzMzQ1ZTY1NTM2M2RjY2ZlOWY1ODgu
LjY5ZWIzM2I1MjNhODkyYWI4YjhhZmQ4MjExMTViMDA1YmY1NjlkNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNjY0LDYgKzY2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0R1cGxpY2F0ZUF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRHVwbGljYXRlQXR0cmlidXRlOyB9OwogICAg
IHZvaWQgc2V0SGFzRHVwbGljYXRlQXR0cmlidXRlKGJvb2wgaGFzRHVwbGljYXRlQXR0cmlidXRl
KSB7IG1faGFzRHVwbGljYXRlQXR0cmlidXRlID0gaGFzRHVwbGljYXRlQXR0cmlidXRlOyB9Owog
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSB7IH0KKwogcHJv
dGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29u
c3RydWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcAppbmRleCBjYmY2MTIwMGVlNjkxNjFjYWZhNTY5MTllN2VmOWMxYWZk
YTM1YzQ2Li5jZjdjYzMxZjM0MmY3YjVhNzQ3NDc1ZTRjY2ExODliZDEzYTc0MTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0z
MDYsNyArMzA2LDcgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFj
dGl2YXRlRXZlbnQoRXZlbnQmKQogICAgIH0KIH0KIAotdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkKK3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VChlbGVtZW50KCkpOwpAQCAtMzM0LDYgKzMzNCw5IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwor
CisgICAgY3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIW1fZGF0ZVRp
bWVFZGl0RWxlbWVudCkgewogICAgICAgICBhdXRvIG5vZGUgPSBlbGVtZW50KCktPnVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50
Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5oCmluZGV4IDNlYjZkNTVmMWNhMzlmMTE5YmMwNTI3NWVjYWMxZTBlNWUxYjI2OTAuLmI2ODVm
OGUxOWZmYjQ4ODU1ZjRlMmZlODJlM2IxMjFiZTQ5M2E3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2
b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9p
ZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0
VmFsdWUoKSBmaW5hbDsKICAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMDY2NTNmZDNjZDU2
NzU5MTcxZjVkMDZhNmI1M2JkYmZjYjExN2Q1MS4uZjExOWU4MmIzNzdkZGI0MWZjZDllOGI5M2Fh
N2ZjZWZhMGY1ZGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAg
LTEzNiw3ICsxMzYsNyBAQCBDb2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9yKCkgY29u
c3QKICAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKGVsZW1lbnQoKS0+dmFsdWUoKSku
dmFsdWUoKTsKIH0KIAotdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFu
ZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBDb2xvcklucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuaAppbmRleCA5YjU3MGQwODgwMjJkNTRkNzlmZWY0NWI4MDBkNjA1MjRmOTQ5MzEyLi4x
MTZkYWIxMTdiOTc1OWIyMzYxNzM3MGVkNDgzNzlhOGM3N2EzMzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUo
KSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRl
eHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZh
bHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgZmluYWw7CiAgICAgdm9pZCBhdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCmluZGV4IGU4MzhlNWM4NzRiZmFkODI2ZTI3MThhNzFkZTgxMWE0NjFjZWZhMGYu
LmVhN2RmYWNmNjJiNzgyNTU5ZDY1ZTNiZmI2YjNkMGNjZGZlMjUyMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMjYyLDE4ICsyNjIsMjAgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yKQogICAgIGVsZW1lbnQoKS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12
b2lkIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290KCkpOwotICAg
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/
IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkp
KTsKKworICAgIGF1dG8gYnV0dG9uID0gZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSA6IFVw
bG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGVs
ZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIGJ1dHRvbik7CisgICAgZGlzYWJsZWRTdGF0
ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hh
ZG93Um9vdCgpKTsKIAogICAgIGF1dG8gcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpOwogICAgIGlmICghcm9vdCkKQEAgLTI4Nyw3ICsyODksNiBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0dHIpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQg
PSB0aGlzLT5lbGVtZW50KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dS
b290KCkpOwogICAgICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IGVsZW1lbnQtPnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRy
ZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxlbWVudC0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0
b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IDdiMmMwOTY2MWQ1NWEzNTQy
OTQ0NTZiMWNiZTY0ZDg0MGRiNTcxZmYuLjkxNTdiMTc5MDI5MjAwZjNjNDMwODhjYjZhNGM2YmU1
NWUwMDAyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEljb24qIGljb24oKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7
CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgYXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5nIGRlZmF1
bHRUb29sVGlwKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCBmMTBjNDgzYTU0NmM4MDk1YjFjMjM5MWFmZThkNGIzNzcwNzNkY2M1Li5i
Y2Q2YzhhMGViNzA5OTIyNjk1NGFiZDdkOWUwZDU0YmViNTdkZWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEzNSw5ICsxMzUsMTAgQEAgSFRNTElucHV0
RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW0KICAgICAsIG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFsc2UpCiAjZW5k
aWYKICAgICAsIG1faXNTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQoZmFs
c2UpCisgICAgLCBtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGZhbHNlKQog
ewotICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemlseSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQg
YnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQg
aW5wdXRUeXBlIGFuZAotICAgIC8vIGl0cyBzaGFkb3cgc3VidHJlZSwganVzdCB0byBkZXN0cm95
IHRoZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRv
IHNvbWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgorICAgIC8vIG1faW5wdXRUeXBlIGlzIGxhemls
eSBjcmVhdGVkIHdoZW4gY29uc3RydWN0ZWQgYnkgdGhlIHBhcnNlciB0byBhdm9pZCBjb25zdHJ1
Y3RpbmcgdW5uZWNlc3NhcmlseSBhIHRleHQgaW5wdXRUeXBlLAorICAgIC8vIGp1c3QgdG8gZGVz
dHJveSB0aGVtIHdoZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBhcnNl
ciB0byBzb21ldGhpbmcgZWxzZSB0aGFuICd0ZXh0Jy4KICAgICBpZiAoIWNyZWF0ZWRCeVBhcnNl
cikKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOwog
CkBAIC0xNDcsMTQgKzE0OCw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFJlZjxIVE1M
SW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExh
emlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gaW5wdXRF
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRvd1Jv
b3RMYXppbHkpIHsKLSAgICAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+bV9pbnB1dFR5cGUtPm5l
ZWRzU2hhZG93U3VidHJlZSgpKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVVc2VyQWdl
bnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGlucHV0RWxlbWVudC0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KLSAgICByZXR1
cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBIVE1M
SW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKQEAgLTE2
NCwxMiArMTU4LDYgQEAgSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJ
bWFnZUxvYWRlcigpCiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCi12b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkoKQotewotICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlwZSgq
bV9pbnB1dFR5cGUpOwotICAgIHByb3RlY3RlZElucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSgpKTsKLX0KLQogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQog
ewogICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQpAQCAtMjEyLDYgKzIwMCwxMSBA
QCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpp
bm5lclRleHRFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4
dEVsZW1lbnQoKTsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gSFRN
TElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVl
ZGVkKCkKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlubmVyVGV4dEVsZW1lbnRDcmVhdGlu
Z1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworfQorCiBIVE1MRWxlbWVudCogSFRNTElucHV0RWxl
bWVudDo6aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+aW5uZXJCbG9ja0VsZW1lbnQoKTsKQEAgLTU4MCwxMCArNTczLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+ZGV0YWNoRnJvbUVsZW1l
bnQoKTsKIAogICAgIG1faW5wdXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKLSAgICBpZiAobV9p
bnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgpKSB7Ci0gICAgICAgIGVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKLSAgICAgICAgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwotICAgIH0KKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRl
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICB1cGRhdGVXaWxsVmFsaWRhdGVBbmRWYWxp
ZGl0eSgpOwogCkBAIC03MzYsMTkgKzcyNiwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKICAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBlID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiAgICAgaWYgKHR5cGUu
aXNOdWxsKCkpIHsKICAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQo
KnRoaXMpOwotICAgICAgICBBU1NFUlQobV9pbnB1dFR5cGUtPm5lZWRzU2hhZG93U3VidHJlZSgp
KTsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAgICBjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAgICAg
ICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBtX2hhc1R5cGUgPSB0cnVlOwogICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBl
OjpjcmVhdGUoKnRoaXMsIHR5cGUpOwotICAgIGlmIChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dT
dWJ0cmVlKCkpIHsKLSAgICAgICAgY3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgICAg
ICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
KCk7Ci0gICAgfQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgcmVn
aXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHJ1blBvc3RUeXBlVXBk
YXRlVGFza3MoKTsKQEAgLTE1OTEsMTggKzE1NzQsMjYgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQgSFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW8KICNlbmRpZgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIHVwZGF0ZVZhbGlk
aXR5KCk7CisgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiAhbV9o
YXNQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSkgeworICAgICAgICBkb2N1bWVudCgp
LmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOwor
ICAgICAgICBtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlID0gdHJ1ZTsKKyAg
ICB9CiAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNl
cnRpb25DYWxsYmFjazsKIH0KIAordm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVVc2VyQWdl
bnRTaGFkb3dUcmVlKCkKK3sKKyAgICBBU1NFUlQobV9oYXNQZW5kaW5nVXNlckFnZW50U2hhZG93
VHJlZVVwZGF0ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2Vy
QWdlbnRTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKKyAgICBtX2hhc1BlbmRpbmdVc2VyQWdlbnRT
aGFkb3dUcmVlVXBkYXRlID0gZmFsc2U7CisgICAgbV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZEZpbmlzaElu
c2VydGluZ05vZGUoKQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRGaW5p
c2hJbnNlcnRpbmdOb2RlKCk7CiAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSAmJiAhZm9ybSgpKQog
ICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiBtX2hhc05vbkVtcHR5TGlzdCkKLSAgICAg
ICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKaW5kZXggOTMwNzI5Yzk1NmI0Y2ZkNDQ0MGZiMDg5MjgxODk1YzUwYzZi
ZDMwZS4uY2M1MGZlZTMzYzk4ZDFmODkyYTQ3ZTRjMDUxNDEyOTNmZjEzMWFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6
CiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdDsKICAgICAKICAgICBS
ZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJU
ZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVu
ZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsK
IAogICAgIEhUTUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0OwpAQCAtMzU2LDYg
KzM1NywxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgcmVzdWx0Rm9yRGlhbG9nU3VibWl0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsg
fQorCisgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRTaGFkb3dUcmVlKCkgZmluYWw7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIApAQCAtMzcxLDgg
KzM3Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAK
LSAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkoKTsKLQogICAgIGludCBkZWZhdWx0VGFiSW5kZXgoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzS2V5
Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IGZpbmFsOwpAQCAtMzg0LDggKzM4
Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIWhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsgfQotCiAg
ICAgYm9vbCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gaXNUZXh0RmllbGQoKTsgfQogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QgZmluYWw7CkBAIC00OTUsNiArNDk2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzVG91Y2hFdmVudEhhbmRsZXIgOiAxOwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3BlbGxj
aGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50IDogMTsKKyAgICBib29sIG1faGFzUGVu
ZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUgOiAxOwogICAgIFJlZlB0cjxJbnB1dFR5cGU+
IG1faW5wdXRUeXBlOwogICAgIC8vIFRoZSBJbWFnZUxvYWRlciBtdXN0IGJlIG93bmVkIGJ5IHRo
aXMgZWxlbWVudCBiZWNhdXNlIHRoZSBsb2FkZXIgY29kZSBhc3N1bWVzCiAgICAgLy8gdGhhdCBp
dCBsaXZlcyBhcyBsb25nIGFzIGl0cyBvd25pbmcgZWxlbWVudCBsaXZlcy4gSWYgd2UgbW92ZSB0
aGUgbG9hZGVyIGludG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCmluZGV4IDY2OGRkN2Y5ZGZkNmE1ODdiOTgyYWI5NTQ0YmY5NjFlNTA2MzJlMjUuLmFhNTJm
MDBkYjVkYzA2ZGQzMDQ4MTZlMTMzMTU1YTczOWE0YTEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzQ1LDYgKzM0NSwxMSBAQCBSZWZQdHI8
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRl
eHRFbGVtZW50KCkgY29ucwogICAgIHJldHVybiBjaGlsZHJlbk9mVHlwZTxUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ+KCpyb290KS5maXJzdCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3Jl
YXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIHJldHVybiBpbm5lclRleHRFbGVt
ZW50KCk7Cit9CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0
cm95ZWQoKQogewogICAgIHVwZGF0ZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCmluZGV4IDNiZTVhZTk2YzIzOWM1NmRhMjkyMmQ4YjViYWQ4OWY1ZTYw
ZWIyZjMuLjAwNzdmMDI1MzI2ZDc4ZjAyMWRhYzBjYjI3MWQ5Yzk2OGZjY2JhZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBp
bm5lclRleHRFbGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hh
ZG93U3VidHJlZUlmTmVlZGVkKCkgZmluYWw7CiAgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKICAgICB2b2lkIGNvcHlOb25BdHRy
aWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmlu
ZGV4IDk2NGNjMWEyMWQwMzUxZTA1OTVkN2I3ZmViYzg5ZjYyMWZjMGYxOWIuLjc5MGRkMGNmNGM4
NmVkOWRmYjE4NmIwMjk3YWZlOGQ0YTk5MDU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xNTcsNyArMTU3LDkgQEAg
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVu
dCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwg
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgaW5uZXJUZXh0RWxlbWVudCgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKwor
ICAgIGlmIChhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKSkKKyAgICAgICAgaW5u
ZXJUZXh0LT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogc3RhdGljIGJvb2wgaXNO
b3RMaW5lQnJlYWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xpbmVDaGFyYWN0ZXIgJiYg
Y2ggIT0gY2FycmlhZ2VSZXR1cm47IH0KQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQs
IFRleHRGaWVsZAogICAgIGVuZCA9IHN0ZDo6bWF4KGVuZCwgMCk7CiAgICAgc3RhcnQgPSBzdGQ6
Om1pbihzdGQ6Om1heChzdGFydCwgMCksIGVuZCk7CiAKLSAgICBhdXRvIGlubmVyVGV4dCA9IGlu
bmVyVGV4dEVsZW1lbnQoKTsKKyAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRD
cmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogICAgIGJvb2wgaGFzRm9jdXMgPSBkb2N1
bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gdGhpczsKICAgICBpZiAoIWhhc0ZvY3VzICYmIGlu
bmVyVGV4dCkgewogICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKQEAgLTM2OSw2ICszNzEs
NyBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogCiBWaXNpYmxlUG9zaXRpb24gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29u
c3QKIHsKKyAgICBBU1NFUlQoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb24gPSBwb3NpdGlvbkZvckluZGV4KGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSwg
aW5kZXgpOwogICAgIEFTU0VSVChpbmRleEZvclZpc2libGVQb3NpdGlvbihwb3NpdGlvbikgPT0g
aW5kZXgpOwogICAgIHJldHVybiBwb3NpdGlvbjsKQEAgLTU4Nyw3ICs1OTAsNyBAQCBzdGF0aWMg
U3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlu
bmVyVGV4dCkKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZh
bHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIGxh
eW91dERpc2FsbG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2NvcGU6OlJlYXNvbjo6UGVyZm9y
bWFuY2VPcHRpbWl6YXRpb24pOwotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVu
dCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFpbm5lclRleHQpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
CmluZGV4IDk5ODZhYzU1NDA4ZWJhNzAzYTU3NjIyNTE4MGZmMWRmYTQ2YzllY2IuLmEwMzFlMTQ2
OGVjMWM4MjRlYTA1Y2YxNWZjZDEzMjkzMzM2ZGMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKSA9IDA7CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJl
U2VsZWN0RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdhMDUwNTAyYjNl
YWJlZDVjZDE3MWZlZjhmM2Y2YjUxOTZlYTMzMmIuLjc0ZTBkZGViMThjMGI2MDIwZTg1YzkxNDIx
YTE0YjYyZmI3ZGQ5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1
cigpOwogfQogCi12b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlu
bmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKQordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKQogewogfQogCkBAIC0xMTE5LDEwICsxMTE5LDI2IEBAIFJlZlB0cjxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKCkKK3sKKyAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gaW5uZXJUZXh0RWxlbWVudCgpOworfQorCiBTdHJpbmcgSW5wdXRUeXBlOjpyZXN1bHRG
b3JEaWFsb2dTdWJtaXQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIHJl
dHVybiBlbGVtZW50KCktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlSWZOZWVkZWQoKQoreworICAgIGlmIChtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
IHx8ICFuZWVkc1NoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKKyAgICBlbGVtZW50KCktPmVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKKyAgICBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlID0gdHJ1ZTsKKyAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCmluZGV4IDA0NWZmNDU3ZmIzMmVlNmFiOTEwNWI1M2FhMjBkNjc4Yzg5MzFj
ZWUuLjgxMmQ1ODhiNmVkOGQwMzg5MmM0YmIzZDNkY2YwZWYxMGY2ZTY4ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBv
cnRMYWJlbHMoKSBjb25zdDsKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Q7CiAgICAg
Ym9vbCBuZWVkc1NoYWRvd1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiAhbm9uU2hhZG93Um9vdFR5
cGVzLmNvbnRhaW5zKG1fdHlwZSk7IH0KKyAgICBib29sIGhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVl
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDcmVhdGVkU2hhZG93U3VidHJlZTsgfQogCiAgICAgLy8g
Rm9ybSB2YWx1ZSBmdW5jdGlvbnMuCiAKQEAgLTMwNiw3ICszMDcsOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTaGFkb3cgdHJlZSBoYW5kbGluZy4KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpOworICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0zMjMsNiArMzI1LDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGRhdGFMaXN0
QnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFJl
ZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnRDcmVhdGlu
Z1NoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlv
bnMuCiAKQEAgLTQxMyw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGFwcGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvcik7CiAKICAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1faGFzQ3JlYXRlZFNo
YWRvd1N1YnRyZWUgeyBmYWxzZSB9OwogICAgIC8vIG1fZWxlbWVudCBpcyBudWxsIGlmIHRoaXMg
SW5wdXRUeXBlIGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCAoZWl0aGVy
IHRoZSBlbGVtZW50IGRpZWQgb3IgY2hhbmdlZCBpbnB1dCB0eXBlKS4KICAgICBXZWFrUHRyPEhU
TUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCmluZGV4IDgwOWQ1ODljZjNkODcxMmViYzcxYzMxMzBjNDQzMmRkZTgxNWU5OWEu
LmYwNmJkNTU5YjAyNzRiMDY3NWVhNGFmNzc2N2Y4MjU1ZDc2YmIxNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMzMsNiArMTMzLDEwIEBAIFN0ZXBSYW5nZSBS
YW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0CiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChN
b3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlmICgh
aGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVs
ZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTUxLDEwICsxNTUsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZl
bnQoTW91c2VFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkp
CisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdHlwZWRT
bGlkZXJUaHVtYkVsZW1lbnQoKS5oYW5kbGVUb3VjaEV2ZW50KGV2ZW50KTsKICNlbGlmIEVOQUJM
RShUT1VDSF9TTElERVIpCi0gICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVu
dCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODMs
MTIgKzE5MiwxNSBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigp
IGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKICAg
ICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhvc3REaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwog
fQogCiBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyOjpZZXM7CiAKQEAgLTI0
MSw3ICsyNTMsNyBAQCBhdXRvIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCYgZXZlbnQpIC0+IFNob3VsZENhbGxCYXNlRQogICAgIHJldHVybiBTaG91bGRD
YWxsQmFzZUV2ZW50SGFuZGxlcjo6WWVzOwogfQogCi12b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wp
Cit2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NF
UlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpAQCAtMjU5
LDYgKzI3MSwxMCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5k
VXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvbwogSFRNTEVsZW1lbnQqIFJhbmdl
SW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJz
dENoaWxkKCkpOyAvLyBjb250YWluZXIKICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+aXNIVE1MRWxlbWVudCgpKTsKQEAgLTI3Nyw2ICsy
OTMsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRyYWNrRWxlbWVudCgp
IGNvbnN0CiAKIFNsaWRlclRodW1iRWxlbWVudCYgUmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVy
VGh1bWJFbGVtZW50KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaGFzQ3JlYXRlZFNoYWRvd1N1YnRy
ZWUoKSk7CiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCkpOyAv
LyB0aHVtYgogICAgIEFTU0VSVChzbGlkZXJUcmFja0VsZW1lbnQoKS0+Zmlyc3RDaGlsZCgpLT5p
c0hUTUxFbGVtZW50KCkpOwogCkBAIC0zMjIsNyArMzM5LDggQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0RpcnR5VmFsdWUoKSkKICAgICAgICAgICAgICAgICBlbGVtZW50
LT5zZXRWYWx1ZShlbGVtZW50LT52YWx1ZSgpKTsKICAgICAgICAgfQotICAgICAgICB0eXBlZFNs
aWRlclRodW1iRWxlbWVudCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgICAgIGlmICho
YXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVs
ZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgpOwogICAgIH0KICAgICBJbnB1dFR5cGU6OmF0
dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CkBAIC0zMzksNyArMzU3LDggQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFRleHRGaWVsZEUKICAgICAgICAgZWxlbWVudCgpLT5zZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJv
bENoYW5nZUV2ZW50KHZhbHVlKTsKICAgICB9CiAKLSAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVu
dCgpLnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgaWYgKGhhc0NyZWF0ZWRTaGFkb3dTdWJ0
cmVlKCkpCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9t
VmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29u
c3QKQEAgLTM2OCw3ICszODcsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhh
dmVDaGFuZ2VkKCkKIHsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGlydHkgPSB0cnVlOwogICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gc2xpZGVyVHJhY2tFbGVtZW50ID0gdGhpcy0+c2xpZGVyVHJhY2tF
bGVtZW50KCk7Ci0gICAgaWYgKHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBp
ZiAoc2xpZGVyVHJhY2tFbGVtZW50ICYmIHNsaWRlclRyYWNrRWxlbWVudC0+cmVuZGVyZXIoKSkK
ICAgICAgICAgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggMjk2NGM2NGU5ZDNk
ZjQwZmU5NWJiNTcyYjkxNzYzZDQzZmVjN2NiYi4uMTBmZDNhNzJlN2Q2ZDBiMDE3ZWY2YmIyYjRi
OTU1MDQ4YzAxNTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTIs
NyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VF
dmVudCYpIGZpbmFsOwogICAgIFNob3VsZENhbGxCYXNlRXZlbnRIYW5kbGVyIGhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50JikgZmluYWw7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Ci0gICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJv
b2wpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIERl
Y2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qg
ZmluYWw7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IGY3MGIxMmUyNDM3ZmZj
MWE4NjQ1ZWEwMzk4YWQ5NDBkNTI1MDI2NTUuLjZlNWIxZTdmYmU3MmJiZDMxYmI5ODQ1N2UwMmVj
ZDRjNmE0N2RlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAg
LTEwMiwxMyArMTAyLDEzIEBAIGJvb2wgU2VhcmNoSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wg
aXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCit2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRl
U2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3VidHJlZSgpKTsKICAg
ICBBU1NFUlQoIW1fcmVzdWx0c0J1dHRvbik7CiAgICAgQVNTRVJUKCFtX2NhbmNlbEJ1dHRvbik7
CiAKLSAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpOwor
ICAgIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0gY29udGFpbmVyRWxlbWVudCgpOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gdGV4dFdyYXBwZXIgPSBpbm5lckJsb2NrRWxlbWVudCgpOwogICAgIEFT
U0VSVChjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXgg
MjJmNjhjOTI1ZDg2Nzk2NDEzMGU4ZWYzMTc5N2JjOTBlZGI4ZWY2MS4uMjNhNjI5NzRlMjJkYTc1
N2RlMjJkOTdhMjgzODcwNzc0ODgxZWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0
VHlwZS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7CiAgICAgY29u
c3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBu
ZWVkc0NvbnRhaW5lcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lTaGFkb3dT
dWJ0cmVlKCkgZmluYWw7CiAgICAgSFRNTEVsZW1lbnQqIHJlc3VsdHNCdXR0b25FbGVtZW50KCkg
Y29uc3QgZmluYWw7CiAgICAgSFRNTEVsZW1lbnQqIGNhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRl
eCA1ZTg3NzhiYmQ5MDA5YTVkYWI3ODFlMmRmZTM3ODhlOTA5N2ZhYzhjLi4zNzA1NmU0NWViMWE3
NWMxNGZkNDNlNjU2ZjEzMTQ5ZmE1MWYwMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xMDgsNyArMTA4LDExIEBAIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBl
Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOwotICAgIEFTU0VSVChpbm5lclRleHQpOworICAgIGlmICghaW5uZXJUZXh0KSB7
CisgICAgICAgIC8vIFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVlIGlm
IGEgdmFsdWUgaXMgc2V0LCB3ZSBrbm93CisgICAgICAgIC8vIHRoYXQgdGhlIHZhbHVlIGlzIGVt
cHR5LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICBmb3IgKFRleHQqIHRleHQg
PSBUZXh0Tm9kZVRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oKmlubmVyVGV4dCk7IHRleHQ7IHRleHQg
PSBUZXh0Tm9kZVRyYXZlcnNhbDo6bmV4dCgqdGV4dCwgaW5uZXJUZXh0LmdldCgpKSkgewogICAg
ICAgICBpZiAodGV4dC0+bGVuZ3RoKCkpCkBAIC0yMjEsNiArMjI1LDggQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQm
IGV2ZW50KQogeworICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgaWYgKG1faW5uZXJTcGlu
QnV0dG9uKSB7CiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5mb3J3YXJkRXZlbnQoZXZlbnQp
OwogICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTIzMSwxMCArMjM3LDgg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAg
ICAgYm9vbCBpc0JsdXJFdmVudCA9IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2
ZW50OwogICAgIGlmIChpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpCiAgICAgICAgIGNhcHNM
b2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwotICAgIGlmIChldmVudC5pc01vdXNlRXZlbnQoKSB8
fCBpc0ZvY3VzRXZlbnQgfHwgaXNCbHVyRXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CisgICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0Js
dXJFdmVudCkKICAgICAgICAgZWxlbWVudCgpLT5mb3J3YXJkRXZlbnQoZXZlbnQpOwotICAgIH0K
IH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnREaWRCbHVyKCkKQEAgLTMxNiwx
MSArMzIwLDEyIEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRIYXZlQ2Fwc0xvY2tJ
bmRpY2F0b3IoKSBjb25zdAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2hv
dWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yKCplbGVtZW50KCkpOwogfQogCi12b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKQordm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVkc1No
YWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKS0+c2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQoKS0+c2hhZG93Um9vdCgp
LT5oYXNDaGlsZE5vZGVzKCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNT
RVJUKCFtX2lubmVyQmxvY2spOwpAQCAtMzMxLDkgKzMzNiwxNyBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eQogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsK
ICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hvdWxkSGF2ZVNwaW5CdXR0
b24oKTsKICAgICBib29sIHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3Vs
ZEhhdmVDYXBzTG9ja0luZGljYXRvcigpOwotICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNo
b3VsZEhhdmVTcGluQnV0dG9uIHx8IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvciB8fCBuZWVk
c0NvbnRhaW5lcigpOworICAgIGJvb2wgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uID0gdGhpcy0+
c2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uKCk7CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisgICAgYm9vbCBoYXNEYXRhTGlzdCA9IGVsZW1lbnQoKS0+bGlzdCgpOworI2VuZGlmCisgICAg
Ym9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2
ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IHNob3VsZERyYXdBdXRvRmlsbEJ1dHRvbgorI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICB8fCBoYXNEYXRhTGlzdAorI2VuZGlmCisgICAg
ICAgIHx8IG5lZWRzQ29udGFpbmVyKCk7CiAKLSAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBpc0lubmVyVGV4dEVsZW1lbnRFZGl0
YWJsZSk7CisgICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgZWxlbWVudCgpLT5pc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpKTsK
IAogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikgewogICAgICAgICBlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCAqbV9pbm5lclRleHQpOwpAQCAtMzU4LDcgKzM3MSwxMiBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eQogCiAgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsICptX2NhcHNMb2NrSW5k
aWNhdG9yKTsKICAgICB9CisKICAgICB1cGRhdGVBdXRvRmlsbEJ1dHRvbigpOworCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOworI2Vu
ZGlmCiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNvbnRhaW5lckVsZW1l
bnQoKSBjb25zdApAQCAtMzczLDcgKzM5MSw2IEBAIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1
dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29uc3QKIAogUmVmUHRyPFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9pbm5lclRleHQpOwogICAgIHJldHVybiBtX2lubmVyVGV4dDsK
IH0KIApAQCAtNDI1LDYgKzQ0Miw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIHZvaWQgVGV4dEZpZWxkSW5w
dXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVkU2hh
ZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0
b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAgIGNh
cHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNDMzLDYgKzQ1Myw5IEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpyZWFkT25seVN0YXRlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFoYXNDcmVhdGVk
U2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9pbm5lclNwaW5C
dXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOwogICAg
IGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtNjE2LDkgKzYzOSwxNCBAQCBib29s
IFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKQogCiB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKIHsKKyAgICBBU1NF
UlQoZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIFN0cmluZyBwbGFjZWhvbGRl
clRleHQgPSBlbGVtZW50KCktPnBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKQEAgLTgxNiwxMyAr
ODQ0LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihB
dXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbigpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisK
KyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCiAgICAgaWYgKHNob3VsZERyYXdB
dXRvRmlsbEJ1dHRvbigpKSB7CiAgICAgICAgIGlmICghbV9jb250YWluZXIpCiAgICAgICAgICAg
ICBjcmVhdGVDb250YWluZXIoKTsKIAotICAgICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICAg
ICAgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVHlwZSA9IGVsZW1lbnQoKS0+YXV0
b0ZpbGxCdXR0b25UeXBlKCk7CiAgICAgICAgIGlmICghbV9hdXRvRmlsbEJ1dHRvbikKICAgICAg
ICAgICAgIGNyZWF0ZUF1dG9GaWxsQnV0dG9uKGF1dG9GaWxsQnV0dG9uVHlwZSk7CkBAIC04NDYs
NiArODc4LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9u
KCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQog
eworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9jYWNoZWRTdWdnZXN0aW9ucyA9IHsgfTsKIAogICAgIGlmICghbV9kYXRhTGlzdERy
b3Bkb3duSW5kaWNhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
aW5kZXggNWEyNDMyNzY1ZjFjZDY4YTQ2MWE4ODUzNTMyNTgyODVmZTQ5OWY0OS4uNGUxYmIxNTRj
NWE3YjU2MWNiNTQ0ZmUyZDZmZmI4N2YwMmFjOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgog
CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wp
IG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKaW5kZXggODYzMmYwMmY0YmY2YmQ1YzIwMTc1ZjMxMzYzMzU2MTMyY2Fh
ZjRlYi4uODQwZTRkOThjMDNhMjIzZTcyODlhZGMxZjYyMGI3OTYxZDFkMzVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQ4LDEwICs0OCw3
IEBAIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKIH0KIAotU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUuY29tcHV0ZXNFbXB0
eSgpKTsKLX0KK1NWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygp
ID0gZGVmYXVsdDsKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFRpbWVDb250YWlu
ZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKQEAgLTkwLDIwICs4Nyw2IEBAIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlc291cmNlQnlJZChj
b25zdCBBdG9tU3RyaW5nCiAgICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldChpZCk7CiB9CiAKLQot
dm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRv
d1RyZWVVcGRhdGUoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUuYWRkKGVsZW1lbnQpOwot
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlVXNlRWxlbWVu
dFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewot
ICAgIG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUucmVtb3ZlKGVsZW1l
bnQpOwotICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhhdCBlbGVtZW50IHdhcyBpbiBtX3N2Z1VzZUVs
ZW1lbnRzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0eWxlIGFuZCBsYXlvdXQgaGF2ZSBi
ZWVuIHJlbW92ZWQuCi19Ci0KLQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnN0YXJ0QW5p
bWF0aW9ucygpCiB7CiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgZXZlcnkgIlRpbWUgQ29udGFp
bmVyIiB3aWxsIG5lZWQgYSB3YXkgdG8gbGF0Y2ggb24gdG8gc29tZSBnbG9iYWwgdGltZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBkYzI4NjllYTQ2
MDYzODFkZTRmMmQ4OTA2NGIyNTE2ZGVhNmNiNWYwLi45YmJkNzdiYmNjNTNiNThmOGQ5MDUxNmNk
YmMxMzlhM2JkZDFmZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50Jik7CiAg
ICAgflNWR0RvY3VtZW50RXh0ZW5zaW9ucygpOwotICAgIAorCiAgICAgdm9pZCBhZGRUaW1lQ29u
dGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVRpbWVDb250YWluZXIoU1ZH
U1ZHRWxlbWVudCYpOwogCkBAIC01MSwxMCArNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIqIHJlc291cmNlQnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoU1ZHVXNlRWxl
bWVudCYpOwotICAgIHZvaWQgcmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVw
ZGF0ZShTVkdVc2VFbGVtZW50Jik7Ci0gICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHVXNlRWxlbWVu
dD4mIHVzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCkgY29uc3QgeyByZXR1
cm4gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZTsgfQotCiAgICAgdm9p
ZCBzdGFydEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHBhdXNlQW5pbWF0aW9ucygpOwogICAgIHZv
aWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKQEAgLTg2LDcgKzgyLDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHUmVzb3VyY2VzQ2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CiAKICAg
ICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiBtX3JlYnVpbGRFbGVtZW50czsKLSAgICBXZWFrSGFz
aFNldDxTVkdVc2VFbGVtZW50PiBtX3VzZUVsZW1lbnRzV2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBk
YXRlOwogICAgIGJvb2wgbV9hcmVBbmltYXRpb25zUGF1c2VkOwogCiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMDU0N2NjYTlkMjZmYmQwZjM5NTk1M2FhYTQ5
ZWRiYTUyMjIwNjQyZC4uYjllZGVmNjMxZTY2ZTYwZmY1OGM3NTIzNDk4MWUyMTQ1MzBlNGZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIE5v
ZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvblR5CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZElu
dG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYg
KGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkgewogICAgICAgICBpZiAobV9zaGFk
b3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5hZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
KyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hh
ZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBNb3ZlIGJhY2sgdGhlIGNhbGwgdG8gdXBkYXRlRXh0ZXJuYWxEb2N1
bWVudCgpIGhlcmUgb25jZSBub3RpZnlGaW5pc2hlZCBpcyBtYWRlIGFsd2F5cyBhc3luYy4KICAg
ICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRp
b25DYWxsYmFjazsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmCiAg
ICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQgd2hpY2ggY2Fs
bHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAgIGlmIChtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSkK
LSAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZVVzZUVs
ZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgICAgICAgICAgZG9j
dW1lbnQoKS5yZW1vdmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRl
KCp0aGlzKTsKICAgICB9CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3Zh
bFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgaW52YWxpZGF0ZVNo
YWRvd1RyZWUoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKCkK
K3ZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpCiB7CiAgICAg
bV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSgpCiAKICAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5yZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsK
KyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGUoKnRoaXMpOwogCiAgICAgU3RyaW5nIHRhcmdldElEOwogICAgIGF1dG8qIHRhcmdl
dCA9IGZpbmRUYXJnZXQoJnRhcmdldElEKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKICAgICBpbnZhbGlkYXRlU3R5bGVBbmRS
ZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiAgICAgaW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVz
KCk7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLmFkZFVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKnRo
aXMpOworICAgICAgICBkb2N1bWVudCgpLmFkZEVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoKnRoaXMpOwogfQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmludmFsaWRh
dGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRl
eCA2OWVmYWZmYTk0MGYwMjA4OTE1NTg2MDc1YzkxNTUyOGQxZWNjNDc5Li5jNDJkOGU1MzJlNmEy
MWM2NmRkNzUyNTNmYjcxODI1MTIwMGUyNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmgKQEAgLTM4LDggKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR1VzZUVsZW1lbnQo
KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICBib29sIHNoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRlOyB9
Ci0gICAgdm9pZCB1cGRhdGVTaGFkb3dUcmVlKCk7CisgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRT
aGFkb3dUcmVlKCkgZmluYWw7CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlckNsaXBDaGls
ZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZm
OTc0NGU0YzdjOGY2NWU5OTNkYzNhNTlmOWIyN2RlOTEzZC4uMWQyYWY1NTA3MTQ1MzBkMTJlNWJj
YzBjNTIyNTcyZjY2Yjg5NWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMTI1NCw2ICsxMjU0LDEwIEBAIE5vZGUqIEludGVybmFsczo6ZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdChFbGVtZW50JiBob3N0KQogCiBOb2RlKiBJbnRlcm5hbHM6OnNoYWRvd1Jvb3QoRWxl
bWVudCYgaG9zdCkKIHsKKyAgICBpZiAoaG9zdC5kb2N1bWVudCgpLmhhc0VsZW1lbnRXaXRoUGVu
ZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoaG9zdCkpIHsKKyAgICAgICAgaG9zdC51cGRh
dGVVc2VyQWdlbnRTaGFkb3dUcmVlKCk7CisgICAgICAgIGhvc3QuZG9jdW1lbnQoKS5yZW1vdmVF
bGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGhvc3QpOworICAgIH0K
ICAgICByZXR1cm4gaG9zdC5zaGFkb3dSb290KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZGUwNTY1YjhhOTFm
MjBlNWYwNmRiZjY5MDk2ZGQ3OTNmNDE4NmJjLi5jNDgyYzAxNDAxYTk4N2NiYTQwN2UzYTJiNDk5
ZjIyOGJmYjE1ZGU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDItMjYgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGlucHV0IGVsZW1l
bnQgVUEgc2hhZG93IHRyZWUgY3JlYXRpb24gbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRp
dHlhIEtlZXJ0aGkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3Jl
YXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNo
YWRvdy10cmVlLWNyZWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6
eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzdXBwb3J0c1R5cGUp
OgorICAgICAgICAobWFrZUFuZEFwcGVuZElucHV0KToKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2guaHRtbDoKKyAgICAgICAg
KiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2gt
ZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgQ3Jhc2h0ZXN0LgorICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRl
IHRvIGFjY291bnQgZm9yIHRoZSBsYXp5IHNoYWRvdyB0cmVlIGJlaW5nIGNyZWF0ZWQgbGF0ZXIu
CisKIDIwMjItMDItMjYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIENTUCBoYW5kbGluZyBvZiBqYXZhc2NyaXB0IFVSTHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1j
cmFzaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLWNyYXNoLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1NDFmNGYzZGQ3
MmQ0Mjc1ZTk2MTY3YTEwOTYyODk3OTRlNzMyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1jcmFzaC1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEgQEAKK1BBU1MgaWYgbm8gY3Jhc2guCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2guaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1jcmFzaC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5Y2I3YjJjNWYzYmM1ZThkOWQ1NjZjNzM1N2YyZGVkNGVkZTViNGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUt
Y3JlYXRpb24tY3Jhc2guaHRtbApAQCAtMCwwICsxLDEwIEBACitQQVNTIGlmIG5vIGNyYXNoLgor
PGRpdiBpZD14PjwvZGl2PgorPHNjcmlwdD4KK2xldCBhdWRpbzAgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdhdWRpbycpOworeC5hcHBlbmQoYXVkaW8wKTsKK2F1ZGlvMC5jb250cm9scyA9IHRy
dWU7Cit4LmFwcGVuZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKK3gub3V0ZXJI
VE1MICs9ICcnOworeC5yZW1vdmUoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YTYyY2M0NDBhZTRkMTA2M2JjNDc4MDIyNDg4YTY0YzI5MzFkY2Nh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Imxhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK3J1bih7IHVzZVBhcnNlcjogdHJ1ZSB9KTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNjI4YTBkOWI5ZTRmNzlmNDQ0YWQ5MDQ1ZWQzYzkyNTllYjBh
YzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRv
dy10cmVlLWNyZWF0aW9uLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Imxhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK3J1bih7IHVzZVBhcnNlcjogZmFsc2UgfSk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YjhmYjlmOWZjOWNmNWE1MzNjMDViZjFkNzZiMDkzMTUzNzdkOTQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNy
ZWF0aW9uLmpzCkBAIC0wLDAgKzEsNTcgQEAKK2NvbnN0IHR5cGVzID0geworICAgICJjb2xvciI6
IHsgdmFsdWU6ICIjMDA4MDAwIiB9LAorICAgICJkYXRlIjogeyB2YWx1ZTogIjIwMjItMDEtMDEi
IH0sCisgICAgImRhdGV0aW1lLWxvY2FsIjogeyB2YWx1ZTogIjIwMjItMDEtMDEiIH0sCisgICAg
ImVtYWlsIjogeyB2YWx1ZTogImhlbGxvQGV4YW1wbGUuY29tIiB9LAorICAgICJmaWxlIjogeyB9
LAorICAgICJtb250aCI6IHsgdmFsdWU6ICIyMDIyLTAxIiB9LAorICAgICJudW1iZXIiOiB7IHZh
bHVlOiAiMTIzIiB9LAorICAgICJwYXNzd29yZCI6IHsgfSwKKyAgICAicmFuZ2UiOiB7IHZhbHVl
OiAiNzUiIH0sCisgICAgInNlYXJjaCI6IHsgdmFsdWU6ICJhYmMiIH0sCisgICAgInRlbGVwaG9u
ZSI6IHsgdmFsdWU6ICIrNjEzMDAwMDAwMDAiIH0sCisgICAgInRleHQiOiB7IHZhbHVlOiAiYWJj
IiB9LAorICAgICJ0aW1lIjogeyB2YWx1ZTogIjEwOjAwIiB9LAorICAgICJ1cmwiOiB7IHZhbHVl
OiAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iIH0sCisgICAgIndlZWsiOiB7IHZhbHVlOiAiMjAyMi1X
MSIgfSwKK307CisKK2Z1bmN0aW9uIHN1cHBvcnRzVHlwZSh0eXBlTmFtZSkgeworICAgIGxldCBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICBlLnR5cGUgPSB0eXBlTmFt
ZTsKKyAgICByZXR1cm4gZS50eXBlID09IHR5cGVOYW1lOworfQorCitmdW5jdGlvbiBtYWtlQW5k
QXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIGF0dHJpYnV0ZXMgPSB7IH0pIHsKKyAgICBs
ZXQgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZChzcGFuKTsKKworICAgIGlmIChvcHRpb25zLnVzZVBhcnNlcikgeworICAgICAg
ICBsZXQgdGFnID0gYDxpbnB1dCB0eXBlPSIke3R5cGVOYW1lfSJgOworICAgICAgICBmb3IgKGxl
dCBuYW1lIGluIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICB0YWcgKz0gYCAke25hbWV9PSIke2F0
dHJpYnV0ZXNbbmFtZV19ImA7CisgICAgICAgIHRhZyArPSAiPiI7CisgICAgICAgIHNwYW4uaW5u
ZXJIVE1MID0gdGFnOworICAgIH0gZWxzZSB7CisgICAgICAgIGxldCBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIGlucHV0LnR5cGUgPSB0eXBlTmFtZTsK
KyAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgaW5wdXQu
c2V0QXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZXNbbmFtZV0pOworICAgICAgICBzcGFuLmFwcGVu
ZChpbnB1dCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW4ob3B0aW9ucykgeworICAgIGZvciAo
bGV0IHR5cGVOYW1lIGluIHR5cGVzKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNUeXBlKHR5cGVO
YW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGxldCB0eXBlID0gdHlwZXNb
dHlwZU5hbWVdOworICAgICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUp
OworCisgICAgICAgIGlmICh0eXBlLnZhbHVlKQorICAgICAgICAgICAgbWFrZUFuZEFwcGVuZElu
cHV0KG9wdGlvbnMsIHR5cGVOYW1lLCB7IHZhbHVlOiB0eXBlLnZhbHVlIH0pOworCisgICAgICAg
IG1ha2VBbmRBcHBlbmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgeyB2YWx1ZTogdHlwZS52YWx1
ZSwgZGlzYWJsZWQ6ICJkaXNhYmxlZCIgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhw
ZWN0ZWQudHh0CmluZGV4IDY5NGQwNDYzOWQxN2FhZjY5NjU0YWNlMzZmODljMDMzYWU3YWY5YzQu
LmI3YTVhMDNkYTk4OTQxNGFhNDRkMjQwNzAwMzI3OTI5ZDhkNWFjOTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5nLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hh
cmluZy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBWZXJpZnkgdGhhdCBzaGFkb3cgcm9v
dHMgd2l0aCBpZGVudGljYWwgc3R5bGVzIHNoYXJlIHN0eWxlIHJlc29sdmVycyAoaGF2ZSBlcXVh
bCBpZGVudGlmaWVyIGJlbG93KS4KIChkb2N1bWVudCByZXNvbHZlciAoaWRlbnRpZmllcj0wKSAo
YXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQp
IChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKLShzaGFkb3cgcm9vdCByZXNv
bHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQog
KHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVs
ZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0y
KSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikg
KGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQpAQCAtMTEsMTEgKzEwLDExIEBA
IFZlcmlmeSB0aGF0IHNoYWRvdyByb290cyB3aXRoIGlkZW50aWNhbCBzdHlsZXMgc2hhcmUgc3R5
bGUgcmVzb2x2ZXJzIChoYXZlIGVxdWFsCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikg
KGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNvdW50PTEpKQogKHNoYWRvdyByb290IHJlc29s
dmVyIChhdXRob3IpIChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKIChzaGFk
b3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0zKSAoYXV0aG9yIHJ1bGUgY291
bnQ9MSkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEp
IChhdXRob3IgcnVsZSBjb3VudD0wKSkKIAogQWZ0ZXIgc3R5bGUgbXV0YXRpb24KIChkb2N1bWVu
dCByZXNvbHZlciAoaWRlbnRpZmllcj0wKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93
IHJvb3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBj
b3VudD0wKSkKLShzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9
MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3Ip
IChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hh
ZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNv
dW50PTEpKQpAQCAtMjUsNCArMjQsNSBAQCBBZnRlciBzdHlsZSBtdXRhdGlvbgogKHNoYWRvdyBy
b290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0w
KSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9y
IHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZp
ZXI9MykgKGF1dGhvciBydWxlIGNvdW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2Vy
IGFnZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453362</attachid>
            <date>2022-02-27 17:25:44 -0800</date>
            <delta_ts>2022-02-28 13:01:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236747-20220228122543.patch</filename>
            <type>text/plain</type>
            <size>50383</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjYTk1ZDdlYTU1ZmFj
NDE2NzE1NDkyMjM5ZDNlOTQ1OGYwMjQwNi4uZTFiMTliYWE5M2YzMzFmZGU3ZmEyNjA1OGM1ZWIw
NmQxNGU0YTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAyMi0wMi0yNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCBpbiBjYXNl
IHRoZSBldmVudCB3aWxsIGNoYW5nZQorICAgICAgICB0aGUgdmFsdWUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAgICAg
ICBPbmx5IHJldHVybiB0aGUgZWxlbWVudCBpZiBpdCdzIGJlZW4gY3JlYXRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGVsZW1lbnQgaGFzIGJlZW4gY3JlYXRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQp
OgorICAgICAgICBPbmx5IHRyeSB0byByZS1sYXlvdXQgaWYgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSBjb25zdCk6
CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3VidHJlZS4KKworICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICBNb3Zl
IHRoZSBlbGVtZW50IGFzc2VydGlvbiB1cCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZnVu
Y3Rpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4
dEVsZW1lbnQgY29uc3QpOgorICAgICAgICBEb24ndCBhc3NlcnQsIHNpbmNlIHRoaXMgbm93IGNh
biBsZWdpdGltYXRlbHkgcmV0dXJuIG51bGwuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVk
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cmVh
ZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorICAgICAgICBEb24ndCB1cGRh
dGUgdGhlIHNoYWRvdyB0cmVlIGNvbnRlbnRzIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0
LgorICAgICAgICBjcmVhdGVTaGFkb3dUcmVlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBp
dCBjcmVhdGVzIHRoZSBzaGFkb3cKKyAgICAgICAgdHJlZSBjb250ZW50cyByZWZsZWN0aW5nIHRo
ZSBjdXJyZW50IHN0YXRlLgorCiAyMDIyLTAyLTI2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHRvIHJlcXVlc3QgYSBVQSBz
aGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCAzNTM0MWNiZTdmOTAyMTliMDA3NTNkNmI4MTE2N2M4Y2I0MDI3ZGRjLi4xNDE5OTgyMWZmY2M4
YWU4M2UzZmNmMjdlN2M0OGM4ZDRjMGUzMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTkxMDMsNiArOTEwMywxMSBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVFbGVtZW50V2l0aFBlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbgogICAgIC8vIEZJWE1F
OiBBc3NlcnQgdGhhdCBlbGVtZW50IHdhcyBpbiBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdl
bnRTaGFkb3dUcmVlVXBkYXRlcyBvbmNlIHJlLWVudHJhbmN5IHRvIHVwZGF0ZSBzdHlsZSBhbmQg
bGF5b3V0IGhhdmUgYmVlbiByZW1vdmVkLgogfQogCitib29sIERvY3VtZW50OjpoYXNFbGVtZW50
V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGVzLmNvbnRhaW5zKGVsZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICN1bmRlZiBET0NVTUVOVF9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAw
NTczNWY1YzJiMzE4ZmY2Y2U1Njg1NTE5MmRiYzAxZDdiOTRkMTM4Li42Zjg5NDRmNTE1NGNlMjNl
MjQ3NTlhYTIzYjYyZGJjMjhmMGI0MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY3Myw4
ICsxNjczLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVOZXdJZGVudGlmaWVyKCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0VsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpIGNvbnN0OwogICAgIHZvaWQgYWRkRWxlbWVudFdpdGhQ
ZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50Jik7Ci0gICAgdm9pZCByZW1v
dmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2Vu
dFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25z
dHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9
IDEgPDwgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2MWNhZmE1NjkxOWU3ZWY5YzFhZmRhMzVjNDYu
LmNmN2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4OWJkMTNhNzQxM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICsz
MDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1
cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKwogICAgIGlmICghbV9kYXRlVGltZUVkaXRF
bGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5k
ZXggM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNhYzFlMGU1ZTFiMjY5MC4uYjY4NWY4ZTE5ZmZi
NDg4NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5h
bDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNjY1M2ZkM2NkNTY3NTkxNzFm
NWQwNmE2YjUzYmRiZmNiMTE3ZDUxLi5mMTE5ZTgyYjM3N2RkYjQxZmNkOWU4YjkzYWE3ZmNlZmEw
ZjVkYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAogICAg
IHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKS52YWx1ZSgp
OwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIENvbG9ySW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkp
OwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CmluZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1YjgwMGQ2MDUyNGY5NDkzMTIuLjExNmRhYjEx
N2I5NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRz
UmVxdWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0
IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFu
Z2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0
aXZhdGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKaW5kZXggZTgzOGU1Yzg3NGJmYWQ4MjZlMjcxOGE3MWRlODExYTQ2MWNlZmEwZi4uZWE3ZGZh
Y2Y2MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUyNTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCkBAIC0yNjIsMTggKzI2MiwyMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAg
ICAgZWxlbWVudCgpLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgRmls
ZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sKQordm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVt
ZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7Ci0gICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2Fk
QnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTog
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworCisg
ICAgYXV0byBidXR0b24gPSBlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVt
ZW50OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpIDogVXBsb2FkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgYnV0dG9uKTsKKyAgICBkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290
KCkpOwogCiAgICAgYXV0byByb290ID0gZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7
CiAgICAgaWYgKCFyb290KQpAQCAtMjg3LDcgKzI4OSw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChu
YW1lID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMt
PmVsZW1lbnQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7
CiAgICAgICAgICAgICBpZiAoYXV0byByb290ID0gZWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9v
dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBidXR0b24gPSBjaGlsZHJlbk9mVHlw
ZTxVcGxvYWRCdXR0b25FbGVtZW50Pigqcm9vdCkuZmlyc3QoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50LT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29z
ZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggN2IyYzA5NjYxZDU1YTM1NDI5NDQ1NmIx
Y2JlNjRkODQwZGI1NzFmZi4uOTE1N2IxNzkwMjkyMDBmM2M0MzA4OGNiNmE0YzZiZTU1ZTAwMDIz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgSWNvbiogaWNvbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2
b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xU
aXAoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGYxMGM0ODNhNTQ2YzgwOTViMWMyMzkxYWZlOGQ0YjM3NzA3M2RjYzUuLmJjZDZjOGEw
ZWI3MDk5MjI2OTU0YWJkN2Q5ZTBkNTRiZWI1N2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM1LDkgKzEzNSwxMCBAQCBIVE1MSW5wdXRFbGVtZW50
OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bQogICAgICwgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcihmYWxzZSkKICNlbmRpZgogICAg
ICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNlbWVudChmYWxzZSkKKyAg
ICAsIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoZmFsc2UpCiB7Ci0gICAg
Ly8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUg
cGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5
cGUgYW5kCi0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3
aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRo
aW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0
ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1
bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0cm95IHRo
ZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRvIHNv
bWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2VyKQogICAg
ICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAKQEAgLTE0
NywxNCArMTQ4LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJbnB1dEVs
ZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6aWx5ID0g
Y3JlYXRlZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQg
PSBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0s
IGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemls
eSkgewotICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVlZHNTaGFk
b3dTdWJ0cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1
dEVsZW1lbnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbWFnZUxv
YWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0LDEyICsx
NTgsNiBAQCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9h
ZGVyKCkKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSgpCi17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCptX2lucHV0
VHlwZSk7Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxl
KCkpOwotfQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiB7CiAgICAg
aWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBAIC0yMTIsNiArMjAwLDExIEBAIFJlZlB0
cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVu
dCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRF
bGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQor
eworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50Ojpp
bm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pbm5l
ckJsb2NrRWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlLT5kZXRhY2hGcm9tRWxlbWVudCgpOwog
CiAgICAgbV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5cGUpOwotICAgIGlmIChtX2lucHV0VHlw
ZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7
CiAKQEAgLTczNiwxOSArNzI2LDEyIEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Omlu
aXRpYWxpemVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKICAgICBpZiAodHlwZS5pc051bGwo
KSkgewogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7
Ci0gICAgICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwotICAg
ICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKICAgICAgICAgdXBk
YXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIG1faGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0
ZSgqdGhpcywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUo
KSkgewotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAg
ICB9CiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICByZWdpc3RlckZv
clN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgcnVuUG9zdFR5cGVVcGRhdGVUYXNr
cygpOwpAQCAtMTU5MSwxOCArMTU3NCwyNiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdCBIVE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpbwogI2Vu
ZGlmCiAgICAgaWYgKGlzUmFkaW9CdXR0b24oKSkKICAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsK
KyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50ICYmICFtX2hhc1BlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKSB7CisgICAgICAgIGRvY3VtZW50KCkuYWRkRWxl
bWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CisgICAgICAg
IG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUgPSB0cnVlOworICAgIH0KICAg
ICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNh
bGxiYWNrOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRv
d1RyZWUoKQoreworICAgIEFTU0VSVChtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBk
YXRlKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGUgPSBmYWxzZTsKKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZUlm
TmVlZGVkKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5n
Tm9kZSgpCiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZEZpbmlzaEluc2Vy
dGluZ05vZGUoKTsKICAgICBpZiAoaXNJblRyZWVTY29wZSgpICYmICFmb3JtKCkpCiAgICAgICAg
IGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQot
ICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0KQotICAgICAgICBkYXRh
TGlzdE1heUhhdmVDaGFuZ2VkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCA5MzA3MjljOTU2YjRjZmQ0NDQwZmIwODkyODE4OTVjNTBjNmJkMzBlLi5j
YzUwZmVlMzNjOThkMWY4OTJhNDdlNGMwNTE0MTI5M2ZmMTMxYWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBI
VE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVt
ZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHls
ZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAg
SFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDEw
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBjb25zdCBm
aW5hbDsKIAorICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9CisKKyAg
ICB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKKwogcHJvdGVjdGVkOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc2LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZv
aWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eSgpOwotCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZv
Y3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg3LDYgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsK
IAotICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29s
IGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1Rl
eHRGaWVsZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdCBmaW5hbDsKQEAgLTQ5NSw2ICs0OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNU
b3VjaEV2ZW50SGFuZGxlciA6IDE7CiAjZW5kaWYKICAgICBib29sIG1faXNTcGVsbGNoZWNrRGlz
YWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQgOiAxOworICAgIGJvb2wgbV9oYXNQZW5kaW5nVXNl
ckFnZW50U2hhZG93VHJlZVVwZGF0ZSA6IDE7CiAgICAgUmVmUHRyPElucHV0VHlwZT4gbV9pbnB1
dFR5cGU7CiAgICAgLy8gVGhlIEltYWdlTG9hZGVyIG11c3QgYmUgb3duZWQgYnkgdGhpcyBlbGVt
ZW50IGJlY2F1c2UgdGhlIGxvYWRlciBjb2RlIGFzc3VtZXMKICAgICAvLyB0aGF0IGl0IGxpdmVz
IGFzIGxvbmcgYXMgaXRzIG93bmluZyBlbGVtZW50IGxpdmVzLiBJZiB3ZSBtb3ZlIHRoZSBsb2Fk
ZXIgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5k
ZXggNjY4ZGQ3ZjlkZmQ2YTU4N2I5ODJhYjk1NDRiZjk2MWU1MDYzMmUyNS4uYWE1MmYwMGRiNWRj
MDZkZDMwNDgxNmUxMzMxNTVhNzM5YTRhMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNDUsNiArMzQ1LDExIEBAIFJlZlB0cjxUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1l
bnQoKSBjb25zCiAgICAgcmV0dXJuIGNoaWxkcmVuT2ZUeXBlPFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuIGlubmVyVGV4dEVsZW1lbnQoKTsK
K30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgp
CiB7CiAgICAgdXBkYXRlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmgKaW5kZXggM2JlNWFlOTZjMjM5YzU2ZGEyOTIyZDhiNWJhZDg5ZjVlNjBlYjJmMy4u
MDA3N2YwMjUzMjZkNzhmMDIxZGFjMGNiMjcxZDljOTY4ZmNjYmFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0
cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVBy
b3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0
Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uNzkwZGQwY2Y0Yzg2ZWQ5ZGZi
MTg2YjAyOTdhZmU4ZDRhOTkwNTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBp
bm5lclRleHRFbGVtZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYg
KGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5lclRleHQt
PmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vdExpbmVC
cmVhayhVQ2hhciBjaCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBjaCAhPSBj
YXJyaWFnZVJldHVybjsgfQpAQCAtMzA5LDcgKzMxMSw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZp
ZWxkCiAgICAgZW5kID0gc3RkOjptYXgoZW5kLCAwKTsKICAgICBzdGFydCA9IHN0ZDo6bWluKHN0
ZDo6bWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5n
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBoYXNGb2N1cyA9IGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzOwogICAgIGlmICghaGFzRm9jdXMgJiYgaW5uZXJUZXh0
KSB7CiAgICAgICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewpAQCAtMzY5LDYgKzM3MSw3IEBAIGlu
dCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2libGVQb3NpdGlvbiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdAogewor
ICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJUZXh0RWxlbWVudCgpLmdldCgpLCBpbmRleCk7
CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7
CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpAQCAtNTg3LDcgKzU5MCw3IEBAIHN0YXRpYyBTdHJpbmcg
aW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCYgaW5uZXJUZXh0
KQogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUgbGF5b3V0RGlz
YWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6UmVhc29uOjpQZXJmb3JtYW5jZU9w
dGltaXphdGlvbik7Ci0gICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Cisg
ICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXgg
OTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVjYi4uYTAzMWUxNDY4ZWMxYzgy
NGVhMDVjZjE1ZmNkMTMyOTMzMzZkYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZlB0
cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5l
clRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSA9IDA7CiAgICAgdmly
dHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYp
ID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RF
dmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggN2EwNTA1MDJiM2VhYmVkNWNk
MTcxZmVmOGYzZjZiNTE5NmVhMzMyYi4uNzRlMGRkZWIxOGMwYjYwMjBlODVjOTE0MjFhMTRiNjJm
YjdkZDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBA
IHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKICAgICBlbGVtZW50KCktPmRlZmF1bHRCbHVyKCk7CiB9
CiAKLXZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiB9CiAKQEAgLTExMTksMTAgKzExMTksMjYgQEAgUmVmUHRyPFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVk
ZWQoKQoreworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworICAgIHJldHVybiBp
bm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJbnB1dFR5cGU6OnJlc3VsdEZvckRpYWxv
Z1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIGVs
ZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgfHwgIW5l
ZWRzU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3RlY3RlZFRo
aXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OworICAgIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgPSB0cnVlOworICAgIGNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKaW5kZXggMDQ1ZmY0NTdmYjMyZWU2YWI5MTA1YjUzYWEyMGQ2NzhjODkzMWNlZS4uODEy
ZDU4OGI2ZWQ4ZDAzODkyYzRiYjNkM2RjZjBlZjEwZjZlNjhkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCkBAIC0yMDYsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydExhYmVs
cygpIGNvbnN0OwogICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdDsKICAgICBib29sIG5l
ZWRzU2hhZG93U3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuICFub25TaGFkb3dSb290VHlwZXMuY29u
dGFpbnMobV90eXBlKTsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSBjb25z
dCB7IHJldHVybiBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlOyB9CiAKICAgICAvLyBGb3JtIHZh
bHVlIGZ1bmN0aW9ucy4KIApAQCAtMzA2LDcgKzMwNyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFNo
YWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCk7CisgICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpOwog
CiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTMyMyw2ICszMjUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogZGF0YUxpc3RCdXR0b25F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucy4KIApA
QCAtNDEzLDYgKzQxNiw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwbHlT
dGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKTsK
IAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9oYXNDcmVhdGVkU2hhZG93U3Vi
dHJlZSB7IGZhbHNlIH07CiAgICAgLy8gbV9lbGVtZW50IGlzIG51bGwgaWYgdGhpcyBJbnB1dFR5
cGUgaXMgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IChlaXRoZXIgdGhlIGVs
ZW1lbnQgZGllZCBvciBjaGFuZ2VkIGlucHV0IHR5cGUpLgogICAgIFdlYWtQdHI8SFRNTElucHV0
RWxlbWVudD4gbV9lbGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKaW5kZXggODA5ZDU4OWNmM2Q4NzEyZWJjNzFjMzEzMGM0NDMyZGRlODE1ZTk5YS4uZjA2YmQ1
NTliMDI3NGIwNjc1ZWE0YWY3NzY3ZjgyNTVkNzZiYjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZl
bnQmIGV2ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVh
dGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoZWxlbWVudCgp
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTEsMTAg
KzE1NSwxNSBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3Vz
ZUV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBSYW5nZUlucHV0
VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0eXBlZFNsaWRlclRo
dW1iRWxlbWVudCgpLmhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpOwogI2VsaWYgRU5BQkxFKFRPVUNI
X1NMSURFUikKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChlbGVtZW50KCktPmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4MywxMiArMTky
LDE1IEBAIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkgY29uc3QK
IAogdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogeworICAgIGlm
ICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHR5cGVk
U2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIGF1
dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVu
dCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQoZWxlbWVudCgp
KTsKKwogICAgIGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAg
ICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIApAQCAtMjQxLDcgKzI1
Myw3IEBAIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFCiAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNl
RXZlbnRIYW5kbGVyOjpZZXM7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQg
UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVk
c1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0yNTksNiArMjcx
LDEwIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vCiBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5
cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpKTsK
ICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQo
KSk7IC8vIGNvbnRhaW5lcgogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpLT5pc0hUTUxFbGVtZW50KCkpOwpAQCAtMjc3LDYgKzI5Myw3IEBA
IEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QK
IAogU2xpZGVyVGh1bWJFbGVtZW50JiBSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVs
ZW1lbnQoKSBjb25zdAogeworICAgIEFTU0VSVChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKTsK
ICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRodW1i
CiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVs
ZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszMzksOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldFZh
bHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVyVGh1
bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAgICAgaWYgKGhhc0NyZWF0
ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgp
LnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiAgICAgfQogICAgIElucHV0VHlwZTo6YXR0cmlidXRl
Q2hhbmdlZChuYW1lKTsKIH0KQEAgLTMzOSw3ICszNTcsOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBl
OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZp
ZWxkRQogICAgICAgICBlbGVtZW50KCktPnNldFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdl
RXZlbnQodmFsdWUpOwogICAgIH0KIAotICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0
UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkK
KyAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgp
OwogfQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdApAQCAt
MzY4LDcgKzM4Nyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5n
ZWQoKQogewogICAgIG1fdGlja01hcmtWYWx1ZXNEaXJ0eSA9IHRydWU7CiAgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBzbGlkZXJUcmFja0VsZW1lbnQgPSB0aGlzLT5zbGlkZXJUcmFja0VsZW1lbnQo
KTsKLSAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGlmIChzbGlk
ZXJUcmFja0VsZW1lbnQgJiYgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAg
ICBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCAyOTY0YzY0ZTlkM2RmNDBmZTk1
YmI1NzJiOTE3NjNkNDNmZWM3Y2JiLi4xMGZkM2E3MmU3ZDZkMGIwMTdlZjZiYjJiNGI5NTUwNDhj
MDE1OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50Jikg
ZmluYWw7CiAgICAgU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIgaGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQmKSBmaW5hbDsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgRGVjaW1hbCBw
YXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBmaW5hbDsK
ICAgICBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKaW5kZXggZjcwYjEyZTI0MzdmZmMxYTg2NDVl
YTAzOThhZDk0MGQ1MjUwMjY1NS4uNmU1YjFlN2ZiZTcyYmJkMzFiYjk4NDU3ZTAyZWNkNGM2YTQ3
ZGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAtMTAyLDEz
ICsxMDIsMTMgQEAgYm9vbCBTZWFyY2hJbnB1dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVy
VGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VCghbV9yZXN1bHRzQnV0dG9uKTsKICAgICBBU1NFUlQoIW1fY2FuY2VsQnV0dG9uKTsKIAotICAg
IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBjb250YWluZXIgPSBjb250YWluZXJFbGVtZW50KCk7CiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiB0ZXh0V3JhcHBlciA9IGlubmVyQmxvY2tFbGVtZW50KCk7CiAgICAgQVNTRVJUKGNv
bnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAppbmRleCAyMmY2OGM5
MjVkODY3OTY0MTMwZThlZjMxNzk3YmM5MGVkYjhlZjYxLi4yM2E2Mjk3NGUyMmRhNzU3ZGUyMmQ5
N2EyODM4NzA3NzQ4ODFlZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBmaW5hbDsKICAgICBjb25zdCBBdG9t
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIG5lZWRzQ29u
dGFpbmVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBm
aW5hbDsKICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDVlODc3
OGJiZDkwMDlhNWRhYjc4MWUyZGZlMzc4OGU5MDk3ZmFjOGMuLjM3MDU2ZTQ1ZWIxYTc1YzE0ZmQ0
M2U2NTZmMTMxNDlmYTUxZjAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKQEAgLTEwOCw3ICsxMDgsMTEgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6
OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1w
dHlWYWx1ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7Ci0gICAgQVNTRVJUKGlubmVyVGV4dCk7CisgICAgaWYgKCFpbm5lclRleHQpIHsKKyAgICAg
ICAgLy8gU2luY2Ugd2UgYWx3YXlzIGNyZWF0ZSB0aGUgc2hhZG93IHN1YnRyZWUgaWYgYSB2YWx1
ZSBpcyBzZXQsIHdlIGtub3cKKyAgICAgICAgLy8gdGhhdCB0aGUgdmFsdWUgaXMgZW1wdHkuCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogICAgIGZvciAoVGV4dCogdGV4dCA9IFRleHRO
b2RlVHJhdmVyc2FsOjpmaXJzdFdpdGhpbigqaW5uZXJUZXh0KTsgdGV4dDsgdGV4dCA9IFRleHRO
b2RlVHJhdmVyc2FsOjpuZXh0KCp0ZXh0LCBpbm5lclRleHQuZ2V0KCkpKSB7CiAgICAgICAgIGlm
ICh0ZXh0LT5sZW5ndGgoKSkKQEAgLTIyMSw2ICsyMjUsOCBAQCB2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihLZXlib2FyZEV2ZW50JiBldmVu
dCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQp
CiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24p
IHsKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmZvcndhcmRFdmVudChldmVudCk7CiAgICAg
ICAgIGlmIChldmVudC5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMjMxLDEwICsyMzcsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKICAgICBib29s
IGlzQmx1ckV2ZW50ID0gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQ7CiAg
ICAgaWYgKGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAgY2Fwc0xvY2tTdGF0
ZU1heUhhdmVDaGFuZ2VkKCk7Ci0gICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9j
dXNFdmVudCB8fCBpc0JsdXJFdmVudCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAg
ICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50
KQogICAgICAgICBlbGVtZW50KCktPmZvcndhcmRFdmVudChldmVudCk7Ci0gICAgfQogfQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudERpZEJsdXIoKQpAQCAtMzE2LDExICszMjAs
MTIgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRv
cigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zaG91bGRIYXZl
Q2Fwc0xvY2tJbmRpY2F0b3IoKmVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCit2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5z
aGFkb3dSb290KCkpOworICAgIEFTU0VSVCghZWxlbWVudCgpLT5zaGFkb3dSb290KCktPmhhc0No
aWxkTm9kZXMoKSk7CiAKICAgICBBU1NFUlQoIW1faW5uZXJUZXh0KTsKICAgICBBU1NFUlQoIW1f
aW5uZXJCbG9jayk7CkBAIC0zMzEsOSArMzM2LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGJv
b2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3BpbkJ1dHRvbigpOwog
ICAgIGJvb2wgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hvdWxkSGF2ZUNh
cHNMb2NrSW5kaWNhdG9yKCk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2
ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IG5lZWRzQ29udGFp
bmVyKCk7CisgICAgYm9vbCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24gPSB0aGlzLT5zaG91bGRE
cmF3QXV0b0ZpbGxCdXR0b24oKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBi
b29sIGhhc0RhdGFMaXN0ID0gZWxlbWVudCgpLT5saXN0KCk7CisjZW5kaWYKKyAgICBib29sIGNy
ZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fwc0xv
Y2tJbmRpY2F0b3IgfHwgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCisgICAgICAgIHx8IGhhc0RhdGFMaXN0CisjZW5kaWYKKyAgICAgICAgfHwg
bmVlZHNDb250YWluZXIoKTsKIAotICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsK
KyAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBlbGVtZW50KCktPmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogCiAgICAg
aWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7CiAgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIsICptX2lubmVyVGV4dCk7CkBAIC0zNTgsNyArMzcxLDEyIEBAIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5CiAKICAgICAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1fY2Fwc0xvY2tJbmRpY2F0b3Ip
OwogICAgIH0KKwogICAgIHVwZGF0ZUF1dG9GaWxsQnV0dG9uKCk7CisKKyNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKKyAgICBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCk7CisjZW5kaWYKIH0K
IAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCgpIGNv
bnN0CkBAIC0zNzMsNyArMzkxLDYgQEAgSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogCiBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogewot
ICAgIEFTU0VSVChtX2lubmVyVGV4dCk7CiAgICAgcmV0dXJuIG1faW5uZXJUZXh0OwogfQogCkBA
IC00MjUsNiArNDQyLDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0
cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKICAg
ICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xvY2tT
dGF0ZU1heUhhdmVDaGFuZ2VkKCk7CkBAIC00MzMsNiArNDUzLDkgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikK
ICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xv
Y2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CkBAIC02MTYsOSArNjM5LDE0IEBAIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpCiAKIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogeworICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIXN1cHBvcnRzUGxhY2Vob2xkZXIoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9
IGVsZW1lbnQoKS0+cGxhY2Vob2xkZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1w
dHkoKSkgewogICAgICAgICBpZiAobV9wbGFjZWhvbGRlcikgewpAQCAtODE2LDEzICs4NDQsMTcg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUF1dG9GaWxsQnV0dG9uKEF1dG9GaWxs
QnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblQKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlm
ICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fw
c0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0F1dG9GaWxs
QnV0dG9uKCkpIHsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5lcikKICAgICAgICAgICAgIGNyZWF0
ZUNvbnRhaW5lcigpOwogCi0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgICAgICBBdXRv
RmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlID0gZWxlbWVudCgpLT5hdXRvRmlsbEJ1
dHRvblR5cGUoKTsKICAgICAgICAgaWYgKCFtX2F1dG9GaWxsQnV0dG9uKQogICAgICAgICAgICAg
Y3JlYXRlQXV0b0ZpbGxCdXR0b24oYXV0b0ZpbGxCdXR0b25UeXBlKTsKQEAgLTg0Niw2ICs4Nzgs
OSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CisgICAg
aWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBt
X2NhY2hlZFN1Z2dlc3Rpb25zID0geyB9OwogCiAgICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25J
bmRpY2F0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCA1
YTI0MzI3NjVmMWNkNjhhNDYxYTg4NTM1MzI1ODI4NWZlNDk5ZjQ5Li40ZTFiYjE1NGM1YTdiNTYx
Y2I1NDRmZTJkNmZmYjg3ZjAyYWM5ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRl
Q2hhbmdlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk0
NmVmZjk3NDRlNGM3YzhmNjVlOTkzZGMzYTU5ZjliMjdkZTkxM2QuLjFkMmFmNTUwNzE0NTMwZDEy
ZTViY2MwYzUyMjU3MmY2NmI4OTVhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTEyNTQsNiArMTI1NCwxMCBAQCBOb2RlKiBJbnRlcm5hbHM6OmVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCkKIAogTm9kZSogSW50ZXJuYWxzOjpzaGFkb3dSb290
KEVsZW1lbnQmIGhvc3QpCiB7CisgICAgaWYgKGhvc3QuZG9jdW1lbnQoKS5oYXNFbGVtZW50V2l0
aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGhvc3QpKSB7CisgICAgICAgIGhvc3Qu
dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpOworICAgICAgICBob3N0LmRvY3VtZW50KCkucmVt
b3ZlRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShob3N0KTsKKyAg
ICB9CiAgICAgcmV0dXJuIGhvc3Quc2hhZG93Um9vdCgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2RlMDU2NWI4
YTkxZjIwZTVmMDZkYmY2OTA5NmRkNzkzZjQxODZiYy4uYzQ4MmMwMTQwMWE5ODdjYmE0MDdlM2Ey
YjQ5OWYyMjhiZmIxNWRlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAyLTI2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVl
LWNyZWF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6
eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisgICAgICAgICogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWw6CisgICAg
ICAgICogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNy
YXNoLWV4cGVjdGVkLmh0bWw6CisgICAgICAgIENyYXNodGVzdC4KKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVw
ZGF0ZSB0byBhY2NvdW50IGZvciB0aGUgbGF6eSBzaGFkb3cgdHJlZSBiZWluZyBjcmVhdGVkIGxh
dGVyLgorCiAyMDIyLTAyLTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBDU1AgaGFuZGxpbmcgb2YgamF2YXNjcmlwdCBVUkxzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24tY3Jhc2gtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi1jcmFzaC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNTQxZjRm
M2RkNzJkNDI3NWU5NjE2N2ExMDk2Mjg5Nzk0ZTczMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2gtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxIEBACitQQVNTIGlmIG5vIGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2gu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lOWNiN2IyYzVmM2JjNWU4ZDlkNTY2YzczNTdmMmRlZDRlZGU1YjRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorUEFTUyBpZiBubyBjcmFz
aC4KKzxkaXYgaWQ9eD48L2Rpdj4KKzxzY3JpcHQ+CitsZXQgYXVkaW8wID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYXVkaW8nKTsKK3guYXBwZW5kKGF1ZGlvMCk7CithdWRpbzAuY29udHJvbHMg
PSB0cnVlOworeC5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7Cit4Lm91
dGVySFRNTCArPSAnJzsKK3gucmVtb3ZlKCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MmNjNDQwYWU0ZDEwNjNiYzQ3ODAyMjQ4OGE2NGMyOTMx
ZGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IHRydWUgfSk7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1j
cmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNy
ZWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyOGEwZDliOWU0Zjc5ZjQ0NGFkOTA0NWVkM2M5MjU5
ZWIwYWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IGZhbHNlIH0pOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWI4ZmI5ZjlmYzljZjVhNTMzYzA1YmYxZDc2YjA5MzE1Mzc3ZDk0NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJl
ZS1jcmVhdGlvbi5qcwpAQCAtMCwwICsxLDU3IEBACitjb25zdCB0eXBlcyA9IHsKKyAgICAiY29s
b3IiOiB7IHZhbHVlOiAiIzAwODAwMCIgfSwKKyAgICAiZGF0ZSI6IHsgdmFsdWU6ICIyMDIyLTAx
LTAxIiB9LAorICAgICJkYXRldGltZS1sb2NhbCI6IHsgdmFsdWU6ICIyMDIyLTAxLTAxIiB9LAor
ICAgICJlbWFpbCI6IHsgdmFsdWU6ICJoZWxsb0BleGFtcGxlLmNvbSIgfSwKKyAgICAiZmlsZSI6
IHsgfSwKKyAgICAibW9udGgiOiB7IHZhbHVlOiAiMjAyMi0wMSIgfSwKKyAgICAibnVtYmVyIjog
eyB2YWx1ZTogIjEyMyIgfSwKKyAgICAicGFzc3dvcmQiOiB7IH0sCisgICAgInJhbmdlIjogeyB2
YWx1ZTogIjc1IiB9LAorICAgICJzZWFyY2giOiB7IHZhbHVlOiAiYWJjIiB9LAorICAgICJ0ZWxl
cGhvbmUiOiB7IHZhbHVlOiAiKzYxMzAwMDAwMDAwIiB9LAorICAgICJ0ZXh0IjogeyB2YWx1ZTog
ImFiYyIgfSwKKyAgICAidGltZSI6IHsgdmFsdWU6ICIxMDowMCIgfSwKKyAgICAidXJsIjogeyB2
YWx1ZTogImh0dHBzOi8vZXhhbXBsZS5jb20vIiB9LAorICAgICJ3ZWVrIjogeyB2YWx1ZTogIjIw
MjItVzEiIH0sCit9OworCitmdW5jdGlvbiBzdXBwb3J0c1R5cGUodHlwZU5hbWUpIHsKKyAgICBs
ZXQgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgZS50eXBlID0gdHlw
ZU5hbWU7CisgICAgcmV0dXJuIGUudHlwZSA9PSB0eXBlTmFtZTsKK30KKworZnVuY3Rpb24gbWFr
ZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCBhdHRyaWJ1dGVzID0geyB9KSB7Cisg
ICAgbGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmQoc3Bhbik7CisKKyAgICBpZiAob3B0aW9ucy51c2VQYXJzZXIpIHsKKyAg
ICAgICAgbGV0IHRhZyA9IGA8aW5wdXQgdHlwZT0iJHt0eXBlTmFtZX0iYDsKKyAgICAgICAgZm9y
IChsZXQgbmFtZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgdGFnICs9IGAgJHtuYW1lfT0i
JHthdHRyaWJ1dGVzW25hbWVdfSJgOworICAgICAgICB0YWcgKz0gIj4iOworICAgICAgICBzcGFu
LmlubmVySFRNTCA9IHRhZzsKKyAgICB9IGVsc2UgeworICAgICAgICBsZXQgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBpbnB1dC50eXBlID0gdHlwZU5h
bWU7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgICAgIGlu
cHV0LnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGVzW25hbWVdKTsKKyAgICAgICAgc3Bhbi5h
cHBlbmQoaW5wdXQpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuKG9wdGlvbnMpIHsKKyAgICBm
b3IgKGxldCB0eXBlTmFtZSBpbiB0eXBlcykgeworICAgICAgICBpZiAoIXN1cHBvcnRzVHlwZSh0
eXBlTmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsZXQgdHlwZSA9IHR5
cGVzW3R5cGVOYW1lXTsKKyAgICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVO
YW1lKTsKKworICAgICAgICBpZiAodHlwZS52YWx1ZSkKKyAgICAgICAgICAgIG1ha2VBbmRBcHBl
bmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgeyB2YWx1ZTogdHlwZS52YWx1ZSB9KTsKKworICAg
ICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUu
dmFsdWUsIGRpc2FibGVkOiAiZGlzYWJsZWQiIH0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5n
LWV4cGVjdGVkLnR4dAppbmRleCA2OTRkMDQ2MzlkMTdhYWY2OTY1NGFjZTM2Zjg5YzAzM2FlN2Fm
OWM0Li5iN2E1YTAzZGE5ODk0MTRhYTQ0ZDI0MDcwMDMyNzkyOWQ4ZDVhYzk3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVy
LXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogVmVyaWZ5IHRoYXQgc2hhZG93
IHJvb3RzIHdpdGggaWRlbnRpY2FsIHN0eWxlcyBzaGFyZSBzdHlsZSByZXNvbHZlcnMgKGhhdmUg
ZXF1YWwgaWRlbnRpZmllciBiZWxvdykuCiAoZG9jdW1lbnQgcmVzb2x2ZXIgKGlkZW50aWZpZXI9
MCkgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFn
ZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCi0oc2hhZG93IHJvb3Qg
cmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0w
KSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9y
IHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZp
ZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKQEAgLTExLDExICsxMCwx
MSBAQCBWZXJpZnkgdGhhdCBzaGFkb3cgcm9vdHMgd2l0aCBpZGVudGljYWwgc3R5bGVzIHNoYXJl
IHN0eWxlIHJlc29sdmVycyAoaGF2ZSBlcXVhbAogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKIChzaGFkb3cgcm9vdCBy
ZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0zKSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCiAo
c2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxl
IGNvdW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmll
cj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAKIEFmdGVyIHN0eWxlIG11dGF0aW9uCiAoZG9j
dW1lbnQgcmVzb2x2ZXIgKGlkZW50aWZpZXI9MCkgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNo
YWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCi0oc2hhZG93IHJvb3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlm
aWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0
aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3Qg
cmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQog
KHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVs
ZSBjb3VudD0xKSkKQEAgLTI1LDQgKzI0LDUgQEAgQWZ0ZXIgc3R5bGUgbXV0YXRpb24KIChzaGFk
b3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291
bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1
dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVu
dGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAo
dXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453418</attachid>
            <date>2022-02-28 13:01:46 -0800</date>
            <delta_ts>2022-03-01 02:29:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236747-20220301080144.patch</filename>
            <type>text/plain</type>
            <size>50383</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjYTk1ZDdlYTU1ZmFj
NDE2NzE1NDkyMjM5ZDNlOTQ1OGYwMjQwNi4uZTFiMTliYWE5M2YzMzFmZGU3ZmEyNjA1OGM1ZWIw
NmQxNGU0YTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAyMi0wMi0yNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaW5wdXQg
ZWxlbWVudCBVQSBzaGFkb3cgdHJlZSBjcmVhdGlvbiBsYXp5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGl0eWEgS2VlcnRoaS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZGVsYXkgSW5wdXRUeXBl
IGNyZWF0aW9uIGZvciBwYXJzZXIgaW5zZXJ0ZWQgZWxlbWVudHMgdW50aWwKKyAgICAgICAganVz
dCBhZnRlciB0aGUgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0LCBzbyB0aGF0IHdlIGRvbid0IHdh
c3RlZnVsbHkKKyAgICAgICAgY3JlYXRlIGFuIElucHV0VHlwZSBhbmQgdGhlIFVBIHNoYWRvdyB0
cmVlIGNyZWF0aW9uIGlmIGEgbm9uLXRleHQKKyAgICAgICAgdHlwZT0iIiB3YXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWcuIFdlIGRvbid0IGRvIGFueXRoaW5nIHNpbWlsYXIgZm9yCisgICAgICAgIHNj
cmlwdCBpbnNlcnRlZCBpbnB1dCBlbGVtZW50cy4gV2UgY291bGQgbWFrZSB0aGUgSW5wdXRUeXBl
IGNyZWF0aW9uCisgICAgICAgIGxhenksIGJ1dCBtb3N0IG9mIHRoZSB3YXN0ZWQgdGltZSBpcyBk
dWUgdG8gdGhlIHNoYWRvdyB0cmVlIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgSW5wdXRUeXBlIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkgYnkgZGVsYXlpbmcgaXQKKyAg
ICAgICAgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAxLiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAyLiB0aGUg
dHlwZT0iIiBvciB2YWx1ZT0iIiBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZWxl
bWVudAorICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICAz
LiBhbnkgRE9NIG1ldGhvZHMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgaW5uZXJUZXh0RWxlbWVu
dCgpIGFyZQorICAgICAgICAgICBjYWxsZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgICAgIGRvY3VtZW50CisKKyAgICAgICAg
Tm90IGFsbCBwbGFjZXMgd2hlcmUgd2UgY2FsbCBpbm5lclRleHRFbGVtZW50KCkgb24gdGhlCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgYXJlIHNhZmUgdG8gbGF6aWx5IGNyZWF0ZSB0aGUgc2hh
ZG93IHRyZWVzLCBzbyB3ZQorICAgICAgICBoYXZlIHR3byBhY2Nlc3NvcnM6CisKKyAgICAgICAg
LSBpbm5lclRleHRFbGVtZW50KCkgcmV0dXJucyB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGlmIGl0
J3MgYmVlbgorICAgICAgICAgIGNyZWF0ZWQgYWxyZWFkeQorICAgICAgICAtIGlubmVyVGV4dEVs
ZW1lbnRDcmVhdGluZ1NoYWRvd1N1YnRyZWVJZk5lZWRlZCB3aWxsIHBlcmZvcm0gdGhlIGxhenkK
KyAgICAgICAgICBzaGFkb3cgdHJlZSBjb25zdHJ1Y3Rpb24gaWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBkb25lCisKKyAgICAgICAgU2luY2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkgZnVuY3Rpb24g
aGFzCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgdGhhbiBqdXN0IGNyZWF0aW5nIHRoZSBz
dWJ0cmVlIGFuZCBlbnN1cmluZyB0aGUKKyAgICAgICAgZWRpdGFiaWxpdHkgaXMgc2V0IGFwcHJv
cHJpYXRlbHksIGl0J3MgcmVuYW1lZCB0byBhIG1vcmUgbWFuYWdlYWJsZQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGEgMC41JSBwcm9ncmVz
c2lvbiBvbiBTcGVlZG9tZXRlciAyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkp
OgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
QW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1Jh
bmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0
ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgUmVuYW1lZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5IHRvCisgICAgICAgIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUgYW5kIHJlbW92ZSB0aGUgImlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlIgorICAgICAgICBhcmd1bWVudCwgc2luY2Ugd2UgY2FuIGFzayB0aGUgZWxlbWVudCgpIGZv
ciBpdHMgdmFsdWUgaWYgbmVlZGVkLgorICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlIGlzIG5v
dyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgc2hhZG93CisgICAgICAgIHJvb3Qu
CisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRp
dGFiaWxpdHkpOgorICAgICAgICBSZW5hbWVkLiBFbnN1cmUgYWxsIHNoYWRvdyB0cmVlIHN0YXRl
IGlzIHVwIHRvIGRhdGUgbm93IHRoYXQgaXQgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlIGNv
bnN0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9ucyB0byBjcmVhdGUgdGhlIHNoYWRvdyBzdWJ0cmVl
IGlmIGl0IGhhc24ndCBiZWVuIGRvbmUKKyAgICAgICAgYWxyZWFkeSwgYW5kIHRvIHF1ZXJ5IHdo
ZXRoZXIgaXQncyBiZWVuIGRvbmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJl
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIE5ldyBmdW5jdGlvbnMgdG8gZmlyc3QgY3Jl
YXRlIHRoZSBzaGFkb3cgc3VidHJlZSBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS4gSFRNTFRleHRBcmVhRWxlbWVudCBuZXZlciBsYXppbHkgY3JlYXRlcyBpdHMK
KyAgICAgICAgc2hhZG93IHN1YnRyZWUgYW5kIHNvIGp1c3QgcmV0dXJucyBpbm5lclRleHRFbGVt
ZW50KCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSk6CisgICAgICAgIERlbGV0ZWQuIEp1c3QgY2FsbCB0aHJvdWdoIHRvIG1faW5wdXRUeXBl
LT5jcmVhdGVTaGFkb3dUcmVlKCkKKyAgICAgICAgZGlyZWN0bHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGNyZWF0
ZSB0aGUgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICBDcmVhdGUgdGhlIHNoYWRvdyBzdWJ0
cmVlIG5vdyB0aGF0IHRoZSBlbGVtZW50J3MgYmVlbiBpbnNlcnRlZC4gTm8KKyAgICAgICAgbmVl
ZCB0byBjYWxsIGRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQgc2luY2UKKyAgICAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlIHdpbGwgbm93IGRvIHRoaXMuCisKKyAgICAg
ICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgRW5zdXJlIHRoZSBzaGFkb3cgc3VidHJlZSBpcyBjcmVhdGVkIHNpbmNlIHdlIG5lZWQgdG8g
cG9rZSBhdCBpdC4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndh
cmRFdmVudCk6CisgICAgICAgIERvbid0IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSBzaGFkb3cg
dHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgRW5zdXJl
IHRoZSBzaGFkb3cgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUK
KyAgICAgICAgc2VsZWN0aW9uIEFQSXMgYXJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZWxlbWVudCBi
ZWZvcmUgaXQncyBpbnNlcnRlZAorICAgICAgICBpbnRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQsIHNpbmNlIGVkaXRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBzaG91bGQg
b25seSBiZSBuZWVkZWQgaWYgdGhlIGVsZW1lbnQncyBiZWVuIGluc2VydGVkCisgICAgICAgIGlu
dG8gdGhlIGRvY3VtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICBFbnN1cmUgdGhlIHNoYWRvdyB0
cmVlIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIEVuc3VyZSB0aGUgc2hhZG93IHRyZWUgaGFzIGJlZW4gY3JlYXRlZCBpbiBjYXNl
IHRoZSBldmVudCB3aWxsIGNoYW5nZQorICAgICAgICB0aGUgdmFsdWUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQgY29uc3QpOgorICAgICAg
ICBPbmx5IHJldHVybiB0aGUgZWxlbWVudCBpZiBpdCdzIGJlZW4gY3JlYXRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGVsZW1lbnQgaGFzIGJlZW4gY3JlYXRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQp
OgorICAgICAgICBPbmx5IHRyeSB0byByZS1sYXlvdXQgaWYgdGhlIHNoYWRvdyB0cmVlIGhhcyBi
ZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1wdHlWYWx1ZSBjb25zdCk6
CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3VidHJlZS4KKworICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICBNb3Zl
IHRoZSBlbGVtZW50IGFzc2VydGlvbiB1cCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZnVu
Y3Rpb25zLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4
dEVsZW1lbnQgY29uc3QpOgorICAgICAgICBEb24ndCBhc3NlcnQsIHNpbmNlIHRoaXMgbm93IGNh
biBsZWdpdGltYXRlbHkgcmV0dXJuIG51bGwuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVk
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cmVh
ZE9ubHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQpOgorICAgICAgICBEb24ndCB1cGRh
dGUgdGhlIHNoYWRvdyB0cmVlIGNvbnRlbnRzIGlmIGl0IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0
LgorICAgICAgICBjcmVhdGVTaGFkb3dUcmVlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBp
dCBjcmVhdGVzIHRoZSBzaGFkb3cKKyAgICAgICAgdHJlZSBjb250ZW50cyByZWZsZWN0aW5nIHRo
ZSBjdXJyZW50IHN0YXRlLgorCiAyMDIyLTAyLTI2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHRvIHJlcXVlc3QgYSBVQSBz
aGFkb3cgdHJlZSB1cGRhdGUgYmVmb3JlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCAzNTM0MWNiZTdmOTAyMTliMDA3NTNkNmI4MTE2N2M4Y2I0MDI3ZGRjLi4xNDE5OTgyMWZmY2M4
YWU4M2UzZmNmMjdlN2M0OGM4ZDRjMGUzMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTkxMDMsNiArOTEwMywxMSBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVFbGVtZW50V2l0aFBlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbgogICAgIC8vIEZJWE1F
OiBBc3NlcnQgdGhhdCBlbGVtZW50IHdhcyBpbiBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdl
bnRTaGFkb3dUcmVlVXBkYXRlcyBvbmNlIHJlLWVudHJhbmN5IHRvIHVwZGF0ZSBzdHlsZSBhbmQg
bGF5b3V0IGhhdmUgYmVlbiByZW1vdmVkLgogfQogCitib29sIERvY3VtZW50OjpoYXNFbGVtZW50
V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGVzLmNvbnRhaW5zKGVsZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICN1bmRlZiBET0NVTUVOVF9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAw
NTczNWY1YzJiMzE4ZmY2Y2U1Njg1NTE5MmRiYzAxZDdiOTRkMTM4Li42Zjg5NDRmNTE1NGNlMjNl
MjQ3NTlhYTIzYjYyZGJjMjhmMGI0MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY3Myw4
ICsxNjczLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVOZXdJZGVudGlmaWVyKCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0VsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpIGNvbnN0OwogICAgIHZvaWQgYWRkRWxlbWVudFdpdGhQ
ZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShFbGVtZW50Jik7Ci0gICAgdm9pZCByZW1v
dmVFbGVtZW50V2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKEVsZW1lbnQmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2Vu
dFNoYWRvd1RyZWVVcGRhdGUoRWxlbWVudCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25z
dHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9
IDEgPDwgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCmluZGV4IGNiZjYxMjAwZWU2OTE2MWNhZmE1NjkxOWU3ZWY5YzFhZmRhMzVjNDYu
LmNmN2NjMzFmMzQyZjdiNWE3NDc0NzVlNGNjYTE4OWJkMTNhNzQxM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTMwNiw3ICsz
MDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCYpCiAgICAgfQogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b29sKQordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogewogICAgIEFTU0VSVChuZWVkc1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1l
bnQoKSk7CkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1
cGRhdGVJbm5lclRleHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKKyAgICBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKwogICAgIGlmICghbV9kYXRlVGltZUVkaXRF
bGVtZW50KSB7CiAgICAgICAgIGF1dG8gbm9kZSA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5k
ZXggM2ViNmQ1NWYxY2EzOWYxMTliYzA1Mjc1ZWNhYzFlMGU1ZTFiMjY5MC4uYjY4NWY4ZTE5ZmZi
NDg4NTVmNGUyZmU4MmUzYjEyMWJlNDkzYTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShib29sKSBmaW5h
bDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNjY1M2ZkM2NkNTY3NTkxNzFm
NWQwNmE2YjUzYmRiZmNiMTE3ZDUxLi5mMTE5ZTgyYjM3N2RkYjQxZmNkOWU4YjkzYWE3ZmNlZmEw
ZjVkYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAogICAg
IHJldHVybiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKS52YWx1ZSgp
OwogfQogCi12b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRl
SW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIENvbG9ySW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkp
OwogICAgIEFTU0VSVChlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CmluZGV4IDliNTcwZDA4ODAyMmQ1NGQ3OWZlZjQ1YjgwMGQ2MDUyNGY5NDkzMTIuLjExNmRhYjEx
N2I5NzU5YjIzNjE3MzcwZWQ0ODM3OWE4Yzc3YTMzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRz
UmVxdWlyZWQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0
IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1l
bnRFZGl0YWJpbGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFu
Z2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0
aXZhdGVFdmVudChFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKaW5kZXggZTgzOGU1Yzg3NGJmYWQ4MjZlMjcxOGE3MWRlODExYTQ2MWNlZmEwZi4uZWE3ZGZh
Y2Y2MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUyNTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCkBAIC0yNjIsMTggKzI2MiwyMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAg
ICAgZWxlbWVudCgpLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgRmls
ZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eShib29sKQordm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VSVChlbGVt
ZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7Ci0gICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2Fk
QnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTog
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworCisg
ICAgYXV0byBidXR0b24gPSBlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVt
ZW50OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpIDogVXBsb2FkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgYnV0dG9uKTsKKyAgICBkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dSb290
KCkpOwogCiAgICAgYXV0byByb290ID0gZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7
CiAgICAgaWYgKCFyb290KQpAQCAtMjg3LDcgKzI4OSw2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChu
YW1lID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMt
PmVsZW1lbnQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7
CiAgICAgICAgICAgICBpZiAoYXV0byByb290ID0gZWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9v
dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBidXR0b24gPSBjaGlsZHJlbk9mVHlw
ZTxVcGxvYWRCdXR0b25FbGVtZW50Pigqcm9vdCkuZmlyc3QoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50LT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29z
ZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggN2IyYzA5NjYxZDU1YTM1NDI5NDQ1NmIx
Y2JlNjRkODQwZGI1NzFmZi4uOTE1N2IxNzkwMjkyMDBmM2M0MzA4OGNiNmE0YzZiZTU1ZTAwMDIz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgSWNvbiogaWNvbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eShi
b29sKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBmaW5hbDsKICAgICB2
b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xU
aXAoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGYxMGM0ODNhNTQ2YzgwOTViMWMyMzkxYWZlOGQ0YjM3NzA3M2RjYzUuLmJjZDZjOGEw
ZWI3MDk5MjI2OTU0YWJkN2Q5ZTBkNTRiZWI1N2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM1LDkgKzEzNSwxMCBAQCBIVE1MSW5wdXRFbGVtZW50
OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bQogICAgICwgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcihmYWxzZSkKICNlbmRpZgogICAg
ICwgbV9pc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNlbWVudChmYWxzZSkKKyAg
ICAsIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUoZmFsc2UpCiB7Ci0gICAg
Ly8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUg
cGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5
cGUgYW5kCi0gICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3
aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRo
aW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0
ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1
bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUsCisgICAgLy8ganVzdCB0byBkZXN0cm95IHRo
ZW0gd2hlbiB0aGUgfHR5cGV8IGF0dHJpYnV0ZSBnZXRzIHNldCBieSB0aGUgcGFyc2VyIHRvIHNv
bWV0aGluZyBlbHNlIHRoYW4gJ3RleHQnLgogICAgIGlmICghY3JlYXRlZEJ5UGFyc2VyKQogICAg
ICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7CiAKQEAgLTE0
NywxNCArMTQ4LDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUmVmPEhUTUxJbnB1dEVs
ZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCiB7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVTaGFkb3dSb290TGF6aWx5ID0g
Y3JlYXRlZEJ5UGFyc2VyOwotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQg
PSBhZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0s
IGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemls
eSkgewotICAgICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5tX2lucHV0VHlwZS0+bmVlZHNTaGFk
b3dTdWJ0cmVlKCkpOwotICAgICAgICBpbnB1dEVsZW1lbnQtPmNyZWF0ZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1
dEVsZW1lbnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbWFnZUxv
YWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpAQCAtMTY0LDEyICsx
NTgsNiBAQCBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9h
ZGVyKCkKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJp
bGl0eSgpCi17Ci0gICAgUmVmPElucHV0VHlwZT4gcHJvdGVjdGVkSW5wdXRUeXBlKCptX2lucHV0
VHlwZSk7Ci0gICAgcHJvdGVjdGVkSW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxl
KCkpOwotfQotCiBIVE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiB7CiAgICAg
aWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCkBAIC0yMTIsNiArMjAwLDExIEBAIFJlZlB0
cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVu
dCgpOwogfQogCitSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBIVE1MSW5wdXRF
bGVtZW50Ojppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKQor
eworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50Ojpp
bm5lckJsb2NrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pbm5l
ckJsb2NrRWxlbWVudCgpOwpAQCAtNTgwLDEwICs1NzMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlLT5kZXRhY2hGcm9tRWxlbWVudCgpOwog
CiAgICAgbV9pbnB1dFR5cGUgPSBXVEZNb3ZlKG5ld1R5cGUpOwotICAgIGlmIChtX2lucHV0VHlw
ZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpIHsKLSAgICAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOwotICAgICAgICBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxl
bWVudEVkaXRhYmlsaXR5KCk7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dT
dWJ0cmVlSWZOZWVkZWQoKTsKIAogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7
CiAKQEAgLTczNiwxOSArNzI2LDEyIEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Omlu
aXRpYWxpemVJbnB1dFR5cGUoKQogICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKICAgICBpZiAodHlwZS5pc051bGwo
KSkgewogICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcyk7
Ci0gICAgICAgIEFTU0VSVChtX2lucHV0VHlwZS0+bmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwotICAg
ICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0ZVNoYWRvd1N1
YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKICAgICAgICAgdXBk
YXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIG1faGFzVHlwZSA9IHRydWU7CiAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0
ZSgqdGhpcywgdHlwZSk7Ci0gICAgaWYgKG1faW5wdXRUeXBlLT5uZWVkc1NoYWRvd1N1YnRyZWUo
KSkgewotICAgICAgICBjcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgICAgIGNyZWF0
ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsKLSAg
ICB9CiAgICAgdXBkYXRlV2lsbFZhbGlkYXRlQW5kVmFsaWRpdHkoKTsKICAgICByZWdpc3RlckZv
clN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgcnVuUG9zdFR5cGVVcGRhdGVUYXNr
cygpOwpAQCAtMTU5MSwxOCArMTU3NCwyNiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdCBIVE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpbwogI2Vu
ZGlmCiAgICAgaWYgKGlzUmFkaW9CdXR0b24oKSkKICAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsK
KyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50ICYmICFtX2hhc1BlbmRp
bmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKSB7CisgICAgICAgIGRvY3VtZW50KCkuYWRkRWxl
bWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CisgICAgICAg
IG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGUgPSB0cnVlOworICAgIH0KICAg
ICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNh
bGxiYWNrOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVVzZXJBZ2VudFNoYWRv
d1RyZWUoKQoreworICAgIEFTU0VSVChtX2hhc1BlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBk
YXRlKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUVsZW1lbnRXaXRoUGVuZGluZ1VzZXJBZ2VudFNo
YWRvd1RyZWVVcGRhdGUoKnRoaXMpOworICAgIG1faGFzUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1Ry
ZWVVcGRhdGUgPSBmYWxzZTsKKyAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZUlm
TmVlZGVkKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5n
Tm9kZSgpCiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZEZpbmlzaEluc2Vy
dGluZ05vZGUoKTsKICAgICBpZiAoaXNJblRyZWVTY29wZSgpICYmICFmb3JtKCkpCiAgICAgICAg
IGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQot
ICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIG1faGFzTm9uRW1wdHlMaXN0KQotICAgICAgICBkYXRh
TGlzdE1heUhhdmVDaGFuZ2VkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCA5MzA3MjljOTU2YjRjZmQ0NDQwZmIwODkyODE4OTVjNTBjNmJkMzBlLi5j
YzUwZmVlMzNjOThkMWY4OTJhNDdlNGMwNTE0MTI5M2ZmMTMxYWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBI
VE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFJlZlB0cjxU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVt
ZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHls
ZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAg
SFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0zNTYsNiArMzU3LDEw
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZXN1bHRGb3JEaWFsb2dTdWJtaXQoKSBjb25zdCBm
aW5hbDsKIAorICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9CisKKyAg
ICB2b2lkIHVwZGF0ZVVzZXJBZ2VudFNoYWRvd1RyZWUoKSBmaW5hbDsKKwogcHJvdGVjdGVkOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC0zNzEsOCArMzc2LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIHZv
aWQgY3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eSgpOwotCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZv
Y3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CkBAIC0zODQsOCArMzg3LDYgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBmaW5hbDsK
IAotICAgIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYmIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpOyB9Ci0KICAgICBib29s
IGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc1Rl
eHRGaWVsZCgpOyB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdCBmaW5hbDsKQEAgLTQ5NSw2ICs0OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNU
b3VjaEV2ZW50SGFuZGxlciA6IDE7CiAjZW5kaWYKICAgICBib29sIG1faXNTcGVsbGNoZWNrRGlz
YWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQgOiAxOworICAgIGJvb2wgbV9oYXNQZW5kaW5nVXNl
ckFnZW50U2hhZG93VHJlZVVwZGF0ZSA6IDE7CiAgICAgUmVmUHRyPElucHV0VHlwZT4gbV9pbnB1
dFR5cGU7CiAgICAgLy8gVGhlIEltYWdlTG9hZGVyIG11c3QgYmUgb3duZWQgYnkgdGhpcyBlbGVt
ZW50IGJlY2F1c2UgdGhlIGxvYWRlciBjb2RlIGFzc3VtZXMKICAgICAvLyB0aGF0IGl0IGxpdmVz
IGFzIGxvbmcgYXMgaXRzIG93bmluZyBlbGVtZW50IGxpdmVzLiBJZiB3ZSBtb3ZlIHRoZSBsb2Fk
ZXIgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5k
ZXggNjY4ZGQ3ZjlkZmQ2YTU4N2I5ODJhYjk1NDRiZjk2MWU1MDYzMmUyNS4uYWE1MmYwMGRiNWRj
MDZkZDMwNDgxNmUxMzMxNTVhNzM5YTRhMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNDUsNiArMzQ1LDExIEBAIFJlZlB0cjxUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1l
bnQoKSBjb25zCiAgICAgcmV0dXJuIGNoaWxkcmVuT2ZUeXBlPFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7CiB9CiAKK1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1No
YWRvd1N1YnRyZWVJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuIGlubmVyVGV4dEVsZW1lbnQoKTsK
K30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgp
CiB7CiAgICAgdXBkYXRlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmgKaW5kZXggM2JlNWFlOTZjMjM5YzU2ZGEyOTIyZDhiNWJhZDg5ZjVlNjBlYjJmMy4u
MDA3N2YwMjUzMjZkNzhmMDIxZGFjMGNiMjcxZDljOTY4ZmNjYmFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0
cmVlSWZOZWVkZWQoKSBmaW5hbDsKICAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVBy
b3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0
Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uNzkwZGQwY2Y0Yzg2ZWQ5ZGZi
MTg2YjAyOTdhZmU4ZDRhOTkwNTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBp
bm5lclRleHRFbGVtZW50KCktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYg
KGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgICAgICBpbm5lclRleHQt
PmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vdExpbmVC
cmVhayhVQ2hhciBjaCkgeyByZXR1cm4gY2ggIT0gbmV3bGluZUNoYXJhY3RlciAmJiBjaCAhPSBj
YXJyaWFnZVJldHVybjsgfQpAQCAtMzA5LDcgKzMxMSw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZp
ZWxkCiAgICAgZW5kID0gc3RkOjptYXgoZW5kLCAwKTsKICAgICBzdGFydCA9IHN0ZDo6bWluKHN0
ZDo6bWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOworICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5n
U2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBoYXNGb2N1cyA9IGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzOwogICAgIGlmICghaGFzRm9jdXMgJiYgaW5uZXJUZXh0
KSB7CiAgICAgICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewpAQCAtMzY5LDYgKzM3MSw3IEBAIGlu
dCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAKIFZpc2libGVQb3NpdGlvbiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdAogewor
ICAgIEFTU0VSVChpbm5lclRleHRFbGVtZW50KCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHBvc2l0aW9uRm9ySW5kZXgoaW5uZXJUZXh0RWxlbWVudCgpLmdldCgpLCBpbmRleCk7
CiAgICAgQVNTRVJUKGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKSA9PSBpbmRleCk7
CiAgICAgcmV0dXJuIHBvc2l0aW9uOwpAQCAtNTg3LDcgKzU5MCw3IEBAIHN0YXRpYyBTdHJpbmcg
aW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCYgaW5uZXJUZXh0
KQogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUgbGF5b3V0RGlz
YWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6UmVhc29uOjpQZXJmb3JtYW5jZU9w
dGltaXphdGlvbik7Ci0gICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Cisg
ICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVl
SWZOZWVkZWQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXgg
OTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVjYi4uYTAzMWUxNDY4ZWMxYzgy
NGVhMDVjZjE1ZmNkMTMyOTMzMzZkYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZlB0
cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBpbm5l
clRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKSA9IDA7CiAgICAgdmly
dHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYp
ID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RF
dmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggN2EwNTA1MDJiM2VhYmVkNWNk
MTcxZmVmOGYzZjZiNTE5NmVhMzMyYi4uNzRlMGRkZWIxOGMwYjYwMjBlODVjOTE0MjFhMTRiNjJm
YjdkZDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBA
IHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKICAgICBlbGVtZW50KCktPmRlZmF1bHRCbHVyKCk7CiB9
CiAKLXZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpCit2b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiB9CiAKQEAgLTExMTksMTAgKzExMTksMjYgQEAgUmVmUHRyPFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dD4gSW5wdXRUeXBlOjppbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVk
ZWQoKQoreworICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWVJZk5lZWRlZCgpOworICAgIHJldHVybiBp
bm5lclRleHRFbGVtZW50KCk7Cit9CisKIFN0cmluZyBJbnB1dFR5cGU6OnJlc3VsdEZvckRpYWxv
Z1N1Ym1pdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIGVs
ZW1lbnQoKS0+dmFsdWUoKTsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgfHwgIW5l
ZWRzU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisgICAgUmVmIHByb3RlY3RlZFRo
aXMgeyAqdGhpcyB9OworICAgIGVsZW1lbnQoKS0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OworICAgIG1faGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUgPSB0cnVlOworICAgIGNyZWF0ZVNoYWRv
d1N1YnRyZWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKaW5kZXggMDQ1ZmY0NTdmYjMyZWU2YWI5MTA1YjUzYWEyMGQ2NzhjODkzMWNlZS4uODEy
ZDU4OGI2ZWQ4ZDAzODkyYzRiYjNkM2RjZjBlZjEwZjZlNjhkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCkBAIC0yMDYsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydExhYmVs
cygpIGNvbnN0OwogICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdDsKICAgICBib29sIG5l
ZWRzU2hhZG93U3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuICFub25TaGFkb3dSb290VHlwZXMuY29u
dGFpbnMobV90eXBlKTsgfQorICAgIGJvb2wgaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSBjb25z
dCB7IHJldHVybiBtX2hhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlOyB9CiAKICAgICAvLyBGb3JtIHZh
bHVlIGZ1bmN0aW9ucy4KIApAQCAtMzA2LDcgKzMwNyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFNo
YWRvdyB0cmVlIGhhbmRsaW5nLgogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRy
ZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCk7CisgICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpOwog
CiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTMyMyw2ICszMjUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogZGF0YUxpc3RCdXR0b25F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93
U3VidHJlZUlmTmVlZGVkKCk7CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucy4KIApA
QCAtNDEzLDYgKzQxNiw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwbHlT
dGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKTsK
IAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9oYXNDcmVhdGVkU2hhZG93U3Vi
dHJlZSB7IGZhbHNlIH07CiAgICAgLy8gbV9lbGVtZW50IGlzIG51bGwgaWYgdGhpcyBJbnB1dFR5
cGUgaXMgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IChlaXRoZXIgdGhlIGVs
ZW1lbnQgZGllZCBvciBjaGFuZ2VkIGlucHV0IHR5cGUpLgogICAgIFdlYWtQdHI8SFRNTElucHV0
RWxlbWVudD4gbV9lbGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKaW5kZXggODA5ZDU4OWNmM2Q4NzEyZWJjNzFjMzEzMGM0NDMyZGRlODE1ZTk5YS4uZjA2YmQ1
NTliMDI3NGIwNjc1ZWE0YWY3NzY3ZjgyNTVkNzZiYjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgU3RlcFJhbmdlIFJhbmdlSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZl
bnQmIGV2ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVh
dGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoZWxlbWVudCgp
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTEsMTAg
KzE1NSwxNSBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3Vz
ZUV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBSYW5nZUlucHV0
VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKKworICAgIGlmICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0eXBlZFNsaWRlclRo
dW1iRWxlbWVudCgpLmhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpOwogI2VsaWYgRU5BQkxFKFRPVUNI
X1NMSURFUikKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsKKwogICAgIGlmIChlbGVtZW50KCktPmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4MywxMiArMTky
LDE1IEBAIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkgY29uc3QK
IAogdm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQogeworICAgIGlm
ICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHR5cGVk
U2xpZGVyVGh1bWJFbGVtZW50KCkuaG9zdERpc2FibGVkU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIGF1
dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50JiBldmVu
dCkgLT4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIKIHsKICAgICBBU1NFUlQoZWxlbWVudCgp
KTsKKwogICAgIGlmIChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAg
ICByZXR1cm4gU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXI6OlllczsKIApAQCAtMjQxLDcgKzI1
Myw3IEBAIGF1dG8gUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkgLT4gU2hvdWxkQ2FsbEJhc2VFCiAgICAgcmV0dXJuIFNob3VsZENhbGxCYXNl
RXZlbnRIYW5kbGVyOjpZZXM7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkKK3ZvaWQg
UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChuZWVk
c1NoYWRvd1N1YnRyZWUoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CkBAIC0yNTksNiArMjcx
LDEwIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJ
bm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vCiBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5
cGU6OnNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CisKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpKTsK
ICAgICBBU1NFUlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQo
KSk7IC8vIGNvbnRhaW5lcgogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpLT5pc0hUTUxFbGVtZW50KCkpOwpAQCAtMjc3LDYgKzI5Myw3IEBA
IEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVHJhY2tFbGVtZW50KCkgY29uc3QK
IAogU2xpZGVyVGh1bWJFbGVtZW50JiBSYW5nZUlucHV0VHlwZTo6dHlwZWRTbGlkZXJUaHVtYkVs
ZW1lbnQoKSBjb25zdAogeworICAgIEFTU0VSVChoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKTsK
ICAgICBBU1NFUlQoc2xpZGVyVHJhY2tFbGVtZW50KCktPmZpcnN0Q2hpbGQoKSk7IC8vIHRodW1i
CiAgICAgQVNTRVJUKHNsaWRlclRyYWNrRWxlbWVudCgpLT5maXJzdENoaWxkKCktPmlzSFRNTEVs
ZW1lbnQoKSk7CiAKQEAgLTMyMiw3ICszMzksOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzRGlydHlWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldFZh
bHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHR5cGVkU2xpZGVyVGh1
bWJFbGVtZW50KCkuc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAgICAgaWYgKGhhc0NyZWF0
ZWRTaGFkb3dTdWJ0cmVlKCkpCisgICAgICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgp
LnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiAgICAgfQogICAgIElucHV0VHlwZTo6YXR0cmlidXRl
Q2hhbmdlZChuYW1lKTsKIH0KQEAgLTMzOSw3ICszNTcsOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBl
OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZp
ZWxkRQogICAgICAgICBlbGVtZW50KCktPnNldFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdl
RXZlbnQodmFsdWUpOwogICAgIH0KIAotICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0
UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICBpZiAoaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkK
KyAgICAgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21WYWx1ZSgp
OwogfQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdApAQCAt
MzY4LDcgKzM4Nyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5n
ZWQoKQogewogICAgIG1fdGlja01hcmtWYWx1ZXNEaXJ0eSA9IHRydWU7CiAgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBzbGlkZXJUcmFja0VsZW1lbnQgPSB0aGlzLT5zbGlkZXJUcmFja0VsZW1lbnQo
KTsKLSAgICBpZiAoc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGlmIChzbGlk
ZXJUcmFja0VsZW1lbnQgJiYgc2xpZGVyVHJhY2tFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAg
ICBzbGlkZXJUcmFja0VsZW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCAyOTY0YzY0ZTlkM2RmNDBmZTk1
YmI1NzJiOTE3NjNkNDNmZWM3Y2JiLi4xMGZkM2E3MmU3ZDZkMGIwMTdlZjZiYjJiNGI5NTUwNDhj
MDE1OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50Jikg
ZmluYWw7CiAgICAgU2hvdWxkQ2FsbEJhc2VFdmVudEhhbmRsZXIgaGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQmKSBmaW5hbDsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7CiAgICAgRGVjaW1hbCBw
YXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBmaW5hbDsK
ICAgICBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKaW5kZXggZjcwYjEyZTI0MzdmZmMxYTg2NDVl
YTAzOThhZDk0MGQ1MjUwMjY1NS4uNmU1YjFlN2ZiZTcyYmJkMzFiYjk4NDU3ZTAyZWNkNGM2YTQ3
ZGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAtMTAyLDEz
ICsxMDIsMTMgQEAgYm9vbCBTZWFyY2hJbnB1dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCBpc0lubmVy
VGV4dEVsZW1lbnRFZGl0YWJsZSkKK3ZvaWQgU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKICAgICBBU1NFUlQobmVlZHNTaGFkb3dTdWJ0cmVlKCkpOwogICAgIEFTU0VS
VCghbV9yZXN1bHRzQnV0dG9uKTsKICAgICBBU1NFUlQoIW1fY2FuY2VsQnV0dG9uKTsKIAotICAg
IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eShpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSk7CisgICAgVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBjb250YWluZXIgPSBjb250YWluZXJFbGVtZW50KCk7CiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiB0ZXh0V3JhcHBlciA9IGlubmVyQmxvY2tFbGVtZW50KCk7CiAgICAgQVNTRVJUKGNv
bnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAppbmRleCAyMmY2OGM5
MjVkODY3OTY0MTMwZThlZjMxNzk3YmM5MGVkYjhlZjYxLi4yM2E2Mjk3NGUyMmRhNzU3ZGUyMmQ5
N2EyODM4NzA3NzQ4ODFlZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBmaW5hbDsKICAgICBjb25zdCBBdG9t
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIG5lZWRzQ29u
dGFpbmVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBm
aW5hbDsKICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDVlODc3
OGJiZDkwMDlhNWRhYjc4MWUyZGZlMzc4OGU5MDk3ZmFjOGMuLjM3MDU2ZTQ1ZWIxYTc1YzE0ZmQ0
M2U2NTZmMTMxNDlmYTUxZjAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKQEAgLTEwOCw3ICsxMDgsMTEgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6
OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmlzRW1w
dHlWYWx1ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50
KCk7Ci0gICAgQVNTRVJUKGlubmVyVGV4dCk7CisgICAgaWYgKCFpbm5lclRleHQpIHsKKyAgICAg
ICAgLy8gU2luY2Ugd2UgYWx3YXlzIGNyZWF0ZSB0aGUgc2hhZG93IHN1YnRyZWUgaWYgYSB2YWx1
ZSBpcyBzZXQsIHdlIGtub3cKKyAgICAgICAgLy8gdGhhdCB0aGUgdmFsdWUgaXMgZW1wdHkuCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogICAgIGZvciAoVGV4dCogdGV4dCA9IFRleHRO
b2RlVHJhdmVyc2FsOjpmaXJzdFdpdGhpbigqaW5uZXJUZXh0KTsgdGV4dDsgdGV4dCA9IFRleHRO
b2RlVHJhdmVyc2FsOjpuZXh0KCp0ZXh0LCBpbm5lclRleHQuZ2V0KCkpKSB7CiAgICAgICAgIGlm
ICh0ZXh0LT5sZW5ndGgoKSkKQEAgLTIyMSw2ICsyMjUsOCBAQCB2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihLZXlib2FyZEV2ZW50JiBldmVu
dCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQp
CiB7CisgICAgQVNTRVJUKGVsZW1lbnQoKSk7CisKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24p
IHsKICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmZvcndhcmRFdmVudChldmVudCk7CiAgICAg
ICAgIGlmIChldmVudC5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMjMxLDEwICsyMzcsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKICAgICBib29s
IGlzQmx1ckV2ZW50ID0gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQ7CiAg
ICAgaWYgKGlzRm9jdXNFdmVudCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAgY2Fwc0xvY2tTdGF0
ZU1heUhhdmVDaGFuZ2VkKCk7Ci0gICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9j
dXNFdmVudCB8fCBpc0JsdXJFdmVudCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudCgpKTsKKyAg
ICBpZiAoZXZlbnQuaXNNb3VzZUV2ZW50KCkgfHwgaXNGb2N1c0V2ZW50IHx8IGlzQmx1ckV2ZW50
KQogICAgICAgICBlbGVtZW50KCktPmZvcndhcmRFdmVudChldmVudCk7Ci0gICAgfQogfQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudERpZEJsdXIoKQpAQCAtMzE2LDExICszMjAs
MTIgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRv
cigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zaG91bGRIYXZl
Q2Fwc0xvY2tJbmRpY2F0b3IoKmVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmls
aXR5KGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUpCit2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiAgICAgQVNTRVJUKG5lZWRzU2hhZG93U3Vi
dHJlZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5z
aGFkb3dSb290KCkpOworICAgIEFTU0VSVCghZWxlbWVudCgpLT5zaGFkb3dSb290KCktPmhhc0No
aWxkTm9kZXMoKSk7CiAKICAgICBBU1NFUlQoIW1faW5uZXJUZXh0KTsKICAgICBBU1NFUlQoIW1f
aW5uZXJCbG9jayk7CkBAIC0zMzEsOSArMzM2LDE3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5
CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGJv
b2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3BpbkJ1dHRvbigpOwog
ICAgIGJvb2wgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yID0gdGhpcy0+c2hvdWxkSGF2ZUNh
cHNMb2NrSW5kaWNhdG9yKCk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2
ZVNwaW5CdXR0b24gfHwgc2hvdWxkSGF2ZUNhcHNMb2NrSW5kaWNhdG9yIHx8IG5lZWRzQ29udGFp
bmVyKCk7CisgICAgYm9vbCBzaG91bGREcmF3QXV0b0ZpbGxCdXR0b24gPSB0aGlzLT5zaG91bGRE
cmF3QXV0b0ZpbGxCdXR0b24oKTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBi
b29sIGhhc0RhdGFMaXN0ID0gZWxlbWVudCgpLT5saXN0KCk7CisjZW5kaWYKKyAgICBib29sIGNy
ZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBzaG91bGRIYXZlQ2Fwc0xv
Y2tJbmRpY2F0b3IgfHwgc2hvdWxkRHJhd0F1dG9GaWxsQnV0dG9uCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCisgICAgICAgIHx8IGhhc0RhdGFMaXN0CisjZW5kaWYKKyAgICAgICAgfHwg
bmVlZHNDb250YWluZXIoKTsKIAotICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKTsK
KyAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBlbGVtZW50KCktPmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogCiAgICAg
aWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7CiAgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIsICptX2lubmVyVGV4dCk7CkBAIC0zNTgsNyArMzcxLDEyIEBAIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5CiAKICAgICAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgKm1fY2Fwc0xvY2tJbmRpY2F0b3Ip
OwogICAgIH0KKwogICAgIHVwZGF0ZUF1dG9GaWxsQnV0dG9uKCk7CisKKyNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKKyAgICBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCk7CisjZW5kaWYKIH0K
IAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCgpIGNv
bnN0CkBAIC0zNzMsNyArMzkxLDYgQEAgSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6
aW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdAogCiBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogewot
ICAgIEFTU0VSVChtX2lubmVyVGV4dCk7CiAgICAgcmV0dXJuIG1faW5uZXJUZXh0OwogfQogCkBA
IC00MjUsNiArNDQyLDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dTdWJ0
cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKICAg
ICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xvY2tT
dGF0ZU1heUhhdmVDaGFuZ2VkKCk7CkBAIC00MzMsNiArNDUzLDkgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5
cGU6OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWhhc0NyZWF0ZWRTaGFkb3dT
dWJ0cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikK
ICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7CiAgICAgY2Fwc0xv
Y2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CkBAIC02MTYsOSArNjM5LDE0IEBAIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpCiAKIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogeworICAgIEFTU0VSVChlbGVt
ZW50KCkpOworCisgICAgaWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIXN1cHBvcnRzUGxhY2Vob2xkZXIoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIEFTU0VSVChlbGVtZW50KCkpOworCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9
IGVsZW1lbnQoKS0+cGxhY2Vob2xkZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1w
dHkoKSkgewogICAgICAgICBpZiAobV9wbGFjZWhvbGRlcikgewpAQCAtODE2LDEzICs4NDQsMTcg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUF1dG9GaWxsQnV0dG9uKEF1dG9GaWxs
QnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblQKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCgpKTsKKworICAgIGlm
ICghaGFzQ3JlYXRlZFNoYWRvd1N1YnRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fw
c0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0F1dG9GaWxs
QnV0dG9uKCkpIHsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5lcikKICAgICAgICAgICAgIGNyZWF0
ZUNvbnRhaW5lcigpOwogCi0gICAgICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgICAgICBBdXRv
RmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlID0gZWxlbWVudCgpLT5hdXRvRmlsbEJ1
dHRvblR5cGUoKTsKICAgICAgICAgaWYgKCFtX2F1dG9GaWxsQnV0dG9uKQogICAgICAgICAgICAg
Y3JlYXRlQXV0b0ZpbGxCdXR0b24oYXV0b0ZpbGxCdXR0b25UeXBlKTsKQEAgLTg0Niw2ICs4Nzgs
OSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpCiB7CisgICAg
aWYgKCFoYXNDcmVhdGVkU2hhZG93U3VidHJlZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBt
X2NhY2hlZFN1Z2dlc3Rpb25zID0geyB9OwogCiAgICAgaWYgKCFtX2RhdGFMaXN0RHJvcGRvd25J
bmRpY2F0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCA1
YTI0MzI3NjVmMWNkNjhhNDYxYTg4NTM1MzI1ODI4NWZlNDk5ZjQ5Li40ZTFiYjE1NGM1YTdiNTYx
Y2I1NDRmZTJkNmZmYjg3ZjAyYWM5ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZVNoYWRv
d1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoYm9vbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlZFN0YXRl
Q2hhbmdlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk0
NmVmZjk3NDRlNGM3YzhmNjVlOTkzZGMzYTU5ZjliMjdkZTkxM2QuLjFkMmFmNTUwNzE0NTMwZDEy
ZTViY2MwYzUyMjU3MmY2NmI4OTVhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTEyNTQsNiArMTI1NCwxMCBAQCBOb2RlKiBJbnRlcm5hbHM6OmVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCkKIAogTm9kZSogSW50ZXJuYWxzOjpzaGFkb3dSb290
KEVsZW1lbnQmIGhvc3QpCiB7CisgICAgaWYgKGhvc3QuZG9jdW1lbnQoKS5oYXNFbGVtZW50V2l0
aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlKGhvc3QpKSB7CisgICAgICAgIGhvc3Qu
dXBkYXRlVXNlckFnZW50U2hhZG93VHJlZSgpOworICAgICAgICBob3N0LmRvY3VtZW50KCkucmVt
b3ZlRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZShob3N0KTsKKyAg
ICB9CiAgICAgcmV0dXJuIGhvc3Quc2hhZG93Um9vdCgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2RlMDU2NWI4
YTkxZjIwZTVmMDZkYmY2OTA5NmRkNzkzZjQxODZiYy4uYzQ4MmMwMTQwMWE5ODdjYmE0MDdlM2Ey
YjQ5OWYyMjhiZmIxNWRlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAyLTI2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpbnB1dCBl
bGVtZW50IFVBIHNoYWRvdyB0cmVlIGNyZWF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjc0NworCisgICAgICAgIFJldmlld2VkIGJ5
IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVl
LWNyZWF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbGF6
eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKG1ha2VBbmRBcHBlbmRJbnB1dCk6CisgICAgICAgICogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWw6CisgICAg
ICAgICogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNy
YXNoLWV4cGVjdGVkLmh0bWw6CisgICAgICAgIENyYXNodGVzdC4KKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVw
ZGF0ZSB0byBhY2NvdW50IGZvciB0aGUgbGF6eSBzaGFkb3cgdHJlZSBiZWluZyBjcmVhdGVkIGxh
dGVyLgorCiAyMDIyLTAyLTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBDU1AgaGFuZGxpbmcgb2YgamF2YXNjcmlwdCBVUkxzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24tY3Jhc2gtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi1jcmFzaC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNTQxZjRm
M2RkNzJkNDI3NWU5NjE2N2ExMDk2Mjg5Nzk0ZTczMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2gtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxIEBACitQQVNTIGlmIG5vIGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24tY3Jhc2gu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lOWNiN2IyYzVmM2JjNWU4ZDlkNTY2YzczNTdmMmRlZDRlZGU1YjRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10
cmVlLWNyZWF0aW9uLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorUEFTUyBpZiBubyBjcmFz
aC4KKzxkaXYgaWQ9eD48L2Rpdj4KKzxzY3JpcHQ+CitsZXQgYXVkaW8wID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYXVkaW8nKTsKK3guYXBwZW5kKGF1ZGlvMCk7CithdWRpbzAuY29udHJvbHMg
PSB0cnVlOworeC5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7Cit4Lm91
dGVySFRNTCArPSAnJzsKK3gucmVtb3ZlKCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MmNjNDQwYWU0ZDEwNjNiYzQ3ODAyMjQ4OGE2NGMyOTMx
ZGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFk
b3ctdHJlZS1jcmVhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IHRydWUgfSk7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJlZS1j
cmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9sYXp5LXNoYWRvdy10cmVlLWNy
ZWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyOGEwZDliOWU0Zjc5ZjQ0NGFkOTA0NWVkM2M5MjU5
ZWIwYWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1z
aGFkb3ctdHJlZS1jcmVhdGlvbi5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJsYXp5LXNoYWRvdy10cmVlLWNyZWF0aW9uLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitydW4oeyB1c2VQYXJzZXI6IGZhbHNlIH0pOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRp
b24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhenktc2hhZG93LXRyZWUtY3JlYXRpb24u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWI4ZmI5ZjlmYzljZjVhNTMzYzA1YmYxZDc2YjA5MzE1Mzc3ZDk0NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGF6eS1zaGFkb3ctdHJl
ZS1jcmVhdGlvbi5qcwpAQCAtMCwwICsxLDU3IEBACitjb25zdCB0eXBlcyA9IHsKKyAgICAiY29s
b3IiOiB7IHZhbHVlOiAiIzAwODAwMCIgfSwKKyAgICAiZGF0ZSI6IHsgdmFsdWU6ICIyMDIyLTAx
LTAxIiB9LAorICAgICJkYXRldGltZS1sb2NhbCI6IHsgdmFsdWU6ICIyMDIyLTAxLTAxIiB9LAor
ICAgICJlbWFpbCI6IHsgdmFsdWU6ICJoZWxsb0BleGFtcGxlLmNvbSIgfSwKKyAgICAiZmlsZSI6
IHsgfSwKKyAgICAibW9udGgiOiB7IHZhbHVlOiAiMjAyMi0wMSIgfSwKKyAgICAibnVtYmVyIjog
eyB2YWx1ZTogIjEyMyIgfSwKKyAgICAicGFzc3dvcmQiOiB7IH0sCisgICAgInJhbmdlIjogeyB2
YWx1ZTogIjc1IiB9LAorICAgICJzZWFyY2giOiB7IHZhbHVlOiAiYWJjIiB9LAorICAgICJ0ZWxl
cGhvbmUiOiB7IHZhbHVlOiAiKzYxMzAwMDAwMDAwIiB9LAorICAgICJ0ZXh0IjogeyB2YWx1ZTog
ImFiYyIgfSwKKyAgICAidGltZSI6IHsgdmFsdWU6ICIxMDowMCIgfSwKKyAgICAidXJsIjogeyB2
YWx1ZTogImh0dHBzOi8vZXhhbXBsZS5jb20vIiB9LAorICAgICJ3ZWVrIjogeyB2YWx1ZTogIjIw
MjItVzEiIH0sCit9OworCitmdW5jdGlvbiBzdXBwb3J0c1R5cGUodHlwZU5hbWUpIHsKKyAgICBs
ZXQgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgZS50eXBlID0gdHlw
ZU5hbWU7CisgICAgcmV0dXJuIGUudHlwZSA9PSB0eXBlTmFtZTsKK30KKworZnVuY3Rpb24gbWFr
ZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVOYW1lLCBhdHRyaWJ1dGVzID0geyB9KSB7Cisg
ICAgbGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmQoc3Bhbik7CisKKyAgICBpZiAob3B0aW9ucy51c2VQYXJzZXIpIHsKKyAg
ICAgICAgbGV0IHRhZyA9IGA8aW5wdXQgdHlwZT0iJHt0eXBlTmFtZX0iYDsKKyAgICAgICAgZm9y
IChsZXQgbmFtZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgdGFnICs9IGAgJHtuYW1lfT0i
JHthdHRyaWJ1dGVzW25hbWVdfSJgOworICAgICAgICB0YWcgKz0gIj4iOworICAgICAgICBzcGFu
LmlubmVySFRNTCA9IHRhZzsKKyAgICB9IGVsc2UgeworICAgICAgICBsZXQgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBpbnB1dC50eXBlID0gdHlwZU5h
bWU7CisgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgICAgIGlu
cHV0LnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGVzW25hbWVdKTsKKyAgICAgICAgc3Bhbi5h
cHBlbmQoaW5wdXQpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuKG9wdGlvbnMpIHsKKyAgICBm
b3IgKGxldCB0eXBlTmFtZSBpbiB0eXBlcykgeworICAgICAgICBpZiAoIXN1cHBvcnRzVHlwZSh0
eXBlTmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsZXQgdHlwZSA9IHR5
cGVzW3R5cGVOYW1lXTsKKyAgICAgICAgbWFrZUFuZEFwcGVuZElucHV0KG9wdGlvbnMsIHR5cGVO
YW1lKTsKKworICAgICAgICBpZiAodHlwZS52YWx1ZSkKKyAgICAgICAgICAgIG1ha2VBbmRBcHBl
bmRJbnB1dChvcHRpb25zLCB0eXBlTmFtZSwgeyB2YWx1ZTogdHlwZS52YWx1ZSB9KTsKKworICAg
ICAgICBtYWtlQW5kQXBwZW5kSW5wdXQob3B0aW9ucywgdHlwZU5hbWUsIHsgdmFsdWU6IHR5cGUu
dmFsdWUsIGRpc2FibGVkOiAiZGlzYWJsZWQiIH0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5n
LWV4cGVjdGVkLnR4dAppbmRleCA2OTRkMDQ2MzlkMTdhYWY2OTY1NGFjZTM2Zjg5YzAzM2FlN2Fm
OWM0Li5iN2E1YTAzZGE5ODk0MTRhYTQ0ZDI0MDcwMDMyNzkyOWQ4ZDVhYzk3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVy
LXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogVmVyaWZ5IHRoYXQgc2hhZG93
IHJvb3RzIHdpdGggaWRlbnRpY2FsIHN0eWxlcyBzaGFyZSBzdHlsZSByZXNvbHZlcnMgKGhhdmUg
ZXF1YWwgaWRlbnRpZmllciBiZWxvdykuCiAoZG9jdW1lbnQgcmVzb2x2ZXIgKGlkZW50aWZpZXI9
MCkgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFn
ZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCi0oc2hhZG93IHJvb3Qg
cmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0w
KSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9y
IHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZp
ZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKQEAgLTExLDExICsxMCwx
MSBAQCBWZXJpZnkgdGhhdCBzaGFkb3cgcm9vdHMgd2l0aCBpZGVudGljYWwgc3R5bGVzIHNoYXJl
IHN0eWxlIHJlc29sdmVycyAoaGF2ZSBlcXVhbAogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKIChzaGFkb3cgcm9vdCBy
ZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0zKSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCiAo
c2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxl
IGNvdW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmll
cj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAKIEFmdGVyIHN0eWxlIG11dGF0aW9uCiAoZG9j
dW1lbnQgcmVzb2x2ZXIgKGlkZW50aWZpZXI9MCkgKGF1dGhvciBydWxlIGNvdW50PTApKQogKHNo
YWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCi0oc2hhZG93IHJvb3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlm
aWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKIChzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0
aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiAoc2hhZG93IHJvb3Qg
cmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQog
KHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVs
ZSBjb3VudD0xKSkKQEAgLTI1LDQgKzI0LDUgQEAgQWZ0ZXIgc3R5bGUgbXV0YXRpb24KIChzaGFk
b3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291
bnQ9MCkpCiAoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1
dGhvciBydWxlIGNvdW50PTApKQogKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVu
dGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAo
dXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>