<?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>78404</bug_id>
          
          <creation_ts>2012-02-10 18:40:30 -0800</creation_ts>
          <short_desc>[chromium] Replace RefPtr with OwnPtr for CCLayerImpl tree structure</short_desc>
          <delta_ts>2012-02-25 10:25:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tien-Ren Chen">trchen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>trchen</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554539</commentid>
    <comment_count>0</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-10 18:40:30 -0800</bug_when>
    <thetext>[chromium] Replace RefPtr with OwnPtr for CCLayerImpl tree structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554541</commentid>
    <comment_count>1</comment_count>
      <attachid>126614</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-10 18:46:20 -0800</bug_when>
    <thetext>Created attachment 126614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554567</commentid>
    <comment_count>2</comment_count>
      <attachid>126614</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-10 20:54:03 -0800</bug_when>
    <thetext>Comment on attachment 126614
Patch

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

I like everything except the TreeSynchronizer change.  TreeSynchronizer shouldn&apos;t be instantiable, it should just be pure functions.

&gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.h:51
&gt; +    TreeSynchronizer() { }

why did you change this? i much prefer having tree syncing be a pure function, this is weird</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555611</commentid>
    <comment_count>3</comment_count>
      <attachid>126837</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-13 14:35:05 -0800</bug_when>
    <thetext>Created attachment 126837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555633</commentid>
    <comment_count>4</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-13 14:46:04 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 126614 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126614&amp;action=review
&gt; 
&gt; I like everything except the TreeSynchronizer change.  TreeSynchronizer shouldn&apos;t be instantiable, it should just be pure functions.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.h:51
&gt; &gt; +    TreeSynchronizer() { }
&gt; 
&gt; why did you change this? i much prefer having tree syncing be a pure function, this is weird

I was thinking that I need some way to allow a layer to have pointers referring to other layers (for example, m_horizontalScrollbarLayer). I could do that by passing the CCLayerImplMap to LayerChromium::pushPropertiesTo. Instead of passing the map directly, it is better to encapsulate it with TreeSynchronizer so pushPropertiesTo can access the synchronizer state through its public methods. (That&apos;s why reuseOrCreateCCLayerImpl was declared public.)

Another reason is having to pass the state in every recursive call is a pain... I find it much better to write recursive calls in functor style. More clean and less error-prone to me. Well that&apos;s more of personal preference so I won&apos;t insist it.

I uploaded an alternative implementation in pure function style. Either way is fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555662</commentid>
    <comment_count>5</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-13 15:17:31 -0800</bug_when>
    <thetext>Now I think of it, we still need some way to do inter-layer referencing. The scrolling layer need to know its two scrollbar layers, and the scrollbar layer also needs to know its scrolling layer.

I have two proposed implementation:

A. Keep a ID--&gt;Layer HashMap in CCLayerTreeHostImpl, so the CCLayerImpl only remembers the layer ID, look up the layer pointer on demand.

B. Add another pass in TreeSynchronizer to resolve the pointers after the layer tree has been constructed.

Personally I prefer the second implementation, any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555910</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-13 20:35:58 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Now I think of it, we still need some way to do inter-layer referencing. The scrolling layer need to know its two scrollbar layers, and the scrollbar layer also needs to know its scrolling layer.

We will.  We should address is _separately_ from changing the CCLayerImpl tree ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556059</commentid>
    <comment_count>7</comment_count>
      <attachid>126837</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-14 00:41:01 -0800</bug_when>
    <thetext>Comment on attachment 126837
Patch

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

Unfortunately we can&apos;t change the main thread LayerList type away from RefPtr&lt;&gt; at this time.  This may be a show-stopper, at the least I can&apos;t think of a simple way to resolve this with the way we share templated code.  Perhaps there is a way with more template indirection but at that point the whole thing becomes less appealing.

&gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.h:49
&gt; +    typedef HashMap&lt;int, OwnPtr&lt;CCLayerImpl&gt; &gt; CCLayerImplMap;
&gt;  
&gt; -    typedef HashMap&lt;int, RefPtr&lt;CCLayerImpl&gt; &gt; CCLayerImplMap;
&gt; +    TreeSynchronizer(); // Not instantiable.

no reason to switch the order of these two lines

&gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.h:-50
&gt; -    // Declared as static member functions so they can access functions on LayerChromium as a friend class.

I found this comment helpful - did you not?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:206
&gt; +    typedef Vector&lt;LayerChromium*&gt; LayerList;

Woah - I don&apos;t think we can do this at all.  We need the LayerLists on the main thread side (such as CCLayerTreeHost::m_updateList) to retain references to their layers because calling into WebKit to paint will sometimes cause the layer tree to get mutated and we can&apos;t risk a dangling pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557606</commentid>
    <comment_count>8</comment_count>
      <attachid>127246</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-15 15:04:39 -0800</bug_when>
    <thetext>Created attachment 127246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557609</commentid>
    <comment_count>9</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-15 15:09:12 -0800</bug_when>
    <thetext>The new patch addresses the problem with LayerChromium reference holding.

It is done by more template indirection. I agree it is a bit nasty. The biggest problem with different LayerList type in main and CC thread is the difference in accessing the raw pointer. I have to write something like:

inline static LayerChromium* getRawPtr(const RefPtr&lt;LayerChromium&gt;&amp; ptr) { return ptr.get(); }
inline static CCLayerImpl* getRawPtr(CCLayerImpl* ptr) { return ptr; }

I wish WTF::Vector has something similar to WTF::HashMap::peek...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557719</commentid>
    <comment_count>10</comment_count>
      <attachid>127271</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-15 16:31:10 -0800</bug_when>
    <thetext>Created attachment 127271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561616</commentid>
    <comment_count>11</comment_count>
      <attachid>127271</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 22:21:10 -0800</bug_when>
    <thetext>Comment on attachment 127271
Patch

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

I think this is looking quite good.  I would like to see the mask/replica issue resolved and I have a style quibble with the way many of the tests have been transformed, but otherwise this looks great and I&apos;d like to make this change ASAP.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:-327
&gt; -    if (m_maskLayer == maskLayer)
&gt; -        return;
&gt; -

does this mean that we&apos;ll always call noteLayerPropertyChangedForSubtree() even if we&apos;re setting the mask layer to the same thing it used to be? that&apos;ll pretty much completely disable scissoring and any other damage tracking based optimizations for pages that have masks or replicas :/

is there any way to preserve this?  maybe use IDs instead of pointers if we need to?

&gt; Source/WebKit/chromium/tests/CCLayerImplTest.cpp:69
&gt; +    OwnPtr&lt;CCLayerImpl&gt; opChild = CCLayerImpl::create(2);

it&apos;s fairly unusual to have an &quot;op&quot; prefix.  we use the &quot;pop&quot; prefix for PassOwnPtr&lt;&gt; when we put the result immediately into a local and never use the prefixed variable again. another issue with this construction is that the .release() call nulls out opChild, but it&apos;s still sitting in the scope tempting someone to write code that incorrectly tries to use it

here&apos;s another way to write this that would be more consistent with other WebKit code and a bit less error-prone:

OwnPtr&lt;CCLayerImpl&gt; root = CCLayerImpl::create(1);
root-&gt;addChild(CCLayerImpl::create(2));
child-&gt;addChild(CCLayerImpl::create(3));
CCLayerImpl* child = root-&gt;children()[0];
CCLayerImpl* grandChild = child-&gt;children()[0];

etc.

same goes for rest of the tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562049</commentid>
    <comment_count>12</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-22 09:37:13 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 127271 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127271&amp;action=review
&gt; 
&gt; I think this is looking quite good.  I would like to see the mask/replica issue resolved and I have a style quibble with the way many of the tests have been transformed, but otherwise this looks great and I&apos;d like to make this change ASAP.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:-327
&gt; &gt; -    if (m_maskLayer == maskLayer)
&gt; &gt; -        return;
&gt; &gt; -
&gt; 
&gt; does this mean that we&apos;ll always call noteLayerPropertyChangedForSubtree() even if we&apos;re setting the mask layer to the same thing it used to be? that&apos;ll pretty much completely disable scissoring and any other damage tracking based optimizations for pages that have masks or replicas :/
&gt; 
&gt; is there any way to preserve this?  maybe use IDs instead of pointers if we need to?

By using PassOwnPtr/OwnPtr we automatically prevent this from happening. Comparing two own pointers should always return false because an object can&apos;t be owned by two at the same time. (wtf emits compile error if you try to compare)
 
&gt; &gt; Source/WebKit/chromium/tests/CCLayerImplTest.cpp:69
&gt; &gt; +    OwnPtr&lt;CCLayerImpl&gt; opChild = CCLayerImpl::create(2);
&gt; 
&gt; it&apos;s fairly unusual to have an &quot;op&quot; prefix.  we use the &quot;pop&quot; prefix for PassOwnPtr&lt;&gt; when we put the result immediately into a local and never use the prefixed variable again. another issue with this construction is that the .release() call nulls out opChild, but it&apos;s still sitting in the scope tempting someone to write code that incorrectly tries to use it
&gt; 
&gt; here&apos;s another way to write this that would be more consistent with other WebKit code and a bit less error-prone:
&gt; 
&gt; OwnPtr&lt;CCLayerImpl&gt; root = CCLayerImpl::create(1);
&gt; root-&gt;addChild(CCLayerImpl::create(2));
&gt; child-&gt;addChild(CCLayerImpl::create(3));
&gt; CCLayerImpl* child = root-&gt;children()[0];
&gt; CCLayerImpl* grandChild = child-&gt;children()[0];
&gt; 
&gt; etc.
&gt; 
&gt; same goes for rest of the tests

Got it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562092</commentid>
    <comment_count>13</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-02-22 10:14:51 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:-327
&gt; &gt; &gt; -    if (m_maskLayer == maskLayer)
&gt; &gt; &gt; -        return;
&gt; &gt; &gt; -
&gt; &gt; 
&gt; &gt; does this mean that we&apos;ll always call noteLayerPropertyChangedForSubtree() even if we&apos;re setting the mask layer to the same thing it used to be? that&apos;ll pretty much completely disable scissoring and any other damage tracking based optimizations for pages that have masks or replicas :/
&gt; &gt; 
&gt; &gt; is there any way to preserve this?  maybe use IDs instead of pointers if we need to?
&gt; 
&gt; By using PassOwnPtr/OwnPtr we automatically prevent this from happening. Comparing two own pointers should always return false because an object can&apos;t be owned by two at the same time. (wtf emits compile error if you try to compare)
&gt; 


I was just &quot;driving by&quot;, and this detail is still unclear to me.  Tien-Ren@ can you please clarify?  Do you mean that somehow we still retain the benefit of the early-exit?  If so, how does it work - am I missing something obvious?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562172</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 11:15:36 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 127271 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127271&amp;action=review
&gt; &gt; 
&gt; &gt; I think this is looking quite good.  I would like to see the mask/replica issue resolved and I have a style quibble with the way many of the tests have been transformed, but otherwise this looks great and I&apos;d like to make this change ASAP.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:-327
&gt; &gt; &gt; -    if (m_maskLayer == maskLayer)
&gt; &gt; &gt; -        return;
&gt; &gt; &gt; -
&gt; &gt; 
&gt; &gt; does this mean that we&apos;ll always call noteLayerPropertyChangedForSubtree() even if we&apos;re setting the mask layer to the same thing it used to be? that&apos;ll pretty much completely disable scissoring and any other damage tracking based optimizations for pages that have masks or replicas :/
&gt; &gt; 
&gt; &gt; is there any way to preserve this?  maybe use IDs instead of pointers if we need to?
&gt; 
&gt; By using PassOwnPtr/OwnPtr we automatically prevent this from happening. Comparing two own pointers should always return false because an object can&apos;t be owned by two at the same time. (wtf emits compile error if you try to compare)
&gt; 

I know the pointer value will not match.  That&apos;s not the point. Logically, the mask and replica layers will very frequently be the same from one tree sync to the next.  It&apos;s important for performance that we know if the mask/replicas are they same as they were on the previous frame or not.  If we don&apos;t track this, then we have to assume that it&apos;s changed and redraw the layer completely after every sync which would suck.

One potential solution since we can&apos;t rely on pointer identity with this patch would be to compare layer IDs to that on the previous frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562179</commentid>
    <comment_count>15</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-22 11:28:27 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (From update of attachment 127271 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127271&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; I think this is looking quite good.  I would like to see the mask/replica issue resolved and I have a style quibble with the way many of the tests have been transformed, but otherwise this looks great and I&apos;d like to make this change ASAP.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:-327
&gt; &gt; &gt; &gt; -    if (m_maskLayer == maskLayer)
&gt; &gt; &gt; &gt; -        return;
&gt; &gt; &gt; &gt; -
&gt; &gt; &gt; 
&gt; &gt; &gt; does this mean that we&apos;ll always call noteLayerPropertyChangedForSubtree() even if we&apos;re setting the mask layer to the same thing it used to be? that&apos;ll pretty much completely disable scissoring and any other damage tracking based optimizations for pages that have masks or replicas :/
&gt; &gt; &gt; 
&gt; &gt; &gt; is there any way to preserve this?  maybe use IDs instead of pointers if we need to?
&gt; &gt; 
&gt; &gt; By using PassOwnPtr/OwnPtr we automatically prevent this from happening. Comparing two own pointers should always return false because an object can&apos;t be owned by two at the same time. (wtf emits compile error if you try to compare)
&gt; &gt; 
&gt; 
&gt; I know the pointer value will not match.  That&apos;s not the point. Logically, the mask and replica layers will very frequently be the same from one tree sync to the next.  It&apos;s important for performance that we know if the mask/replicas are they same as they were on the previous frame or not.  If we don&apos;t track this, then we have to assume that it&apos;s changed and redraw the layer completely after every sync which would suck.
&gt; 
&gt; One potential solution since we can&apos;t rely on pointer identity with this patch would be to compare layer IDs to that on the previous frame.

Ah, I see what you mean. That&apos;s indeed a tricky problem. I think layer ID is the way to go. Will solve this in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564791</commentid>
    <comment_count>16</comment_count>
      <attachid>128835</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-24 18:01:20 -0800</bug_when>
    <thetext>Created attachment 128835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564795</commentid>
    <comment_count>17</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-24 18:09:16 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebKit/chromium/tests/CCLayerImplTest.cpp:69
&gt; &gt; +    OwnPtr&lt;CCLayerImpl&gt; opChild = CCLayerImpl::create(2);
&gt; 
&gt; it&apos;s fairly unusual to have an &quot;op&quot; prefix.  we use the &quot;pop&quot; prefix for PassOwnPtr&lt;&gt; when we put the result immediately into a local and never use the prefixed variable again. another issue with this construction is that the .release() call nulls out opChild, but it&apos;s still sitting in the scope tempting someone to write code that incorrectly tries to use it
&gt; 
&gt; here&apos;s another way to write this that would be more consistent with other WebKit code and a bit less error-prone:
&gt; 
&gt; OwnPtr&lt;CCLayerImpl&gt; root = CCLayerImpl::create(1);
&gt; root-&gt;addChild(CCLayerImpl::create(2));
&gt; child-&gt;addChild(CCLayerImpl::create(3));
&gt; CCLayerImpl* child = root-&gt;children()[0];
&gt; CCLayerImpl* grandChild = child-&gt;children()[0];
&gt; 
&gt; etc.
&gt; 
&gt; same goes for rest of the tests

I find this results in behavior change in some case, for example when the layer properties need to be configured before added to the tree. In those case I&apos;ll use leakPtr() then adoptPtr() again. I think this approach is not too error-prone as the dirty part is limited in between leakPtr/adoptPtr pair only (which is usually short).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564798</commentid>
    <comment_count>18</comment_count>
      <attachid>128835</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 18:17:18 -0800</bug_when>
    <thetext>Comment on attachment 128835
Patch

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

I like this patch and think it&apos;s really close but we definitely do not want to add a bunch of leakPtr() calls to the test. leakPtr() pretty much always indicates a bug or a boundary with an API that isn&apos;t 100% compatible with the WTF smart pointer types.  For instance, today we use leakPtr() in one place to pass a value between threads and in another place to interface with the WebKit API which has a different set of smart pointers.  Otherwise we should never use it.  I commented on two specific instances with what I think would be a better approach, I believe that one or the other can be extended to the rest of the tests.

&gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.cpp:46
&gt; +    CCLayerImpl* ccLayerImpl = popCCLayerImpl.get();

the normal idiom for functions that take a PassOwnPtr&lt;&gt; parameter is to immediately put the parameter in a local OwnPtr&lt;&gt; and then never use the POP&lt;&gt; parameter again.  I do not think the code you&apos;ve written here is incorrect, but I think the idiomatic way would be equally correct and less error-prone.

IOW, have ccLayerImpl be an OwnPtr&lt;CCLayerImpl&gt;, leave the null-check-and-return alone, and move the map.set() call to the end of the function and have it take ccLayerImpl.release()

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:46
&gt; +    , m_maskLayerID(-1)
&gt; +    , m_replicaLayerID(-1)

nit we use &quot;xxxId&quot; in other places (like m_layerId below). I don&apos;t have strong feelings on which is better but we should be consistent, and &quot;xxxId&quot; seems to be winning.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerIteratorPosition.h:1
&gt; +/*

i think you have a bad merge here - this file was deleted upstream in http://trac.webkit.org/changeset/108678

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:347
&gt; +

nit: don&apos;t need the newline here

&gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:323
&gt; +    CCLayerImpl* child2 = CCLayerImpl::create(3).leakPtr();

This is unnecessarily confusing - leakPtr() pretty much always means that there&apos;s a leak and requires special care, in this case the code looks buggy unless you look down to the adoptPtr() call 9 lines below.  I think what you really want here is to have child2 be an OwnPtr&lt;&gt; and .release() it in the addChild() call.

&gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:359
&gt; +    CCLayerImpl* child2 = CCLayerImpl::create(3).leakPtr();

again the leakPtr() is unnecessarily scary. In this instance, it&apos;s probably simpler to add child2 to root&apos;s children here and then grab a raw pointer to it via .get() since you need to dereference it later on in the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564804</commentid>
    <comment_count>19</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-02-24 18:22:51 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I find this results in behavior change in some case, for example when the layer properties need to be configured before added to the tree. In those case I&apos;ll use leakPtr() then adoptPtr() again. I think this approach is not too error-prone as the dirty part is limited in between leakPtr/adoptPtr pair only (which is usually short).

Would PassOwnPtr somehow be useful in this situation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564809</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 18:41:00 -0800</bug_when>
    <thetext>http://www.webkit.org/coding/RefPtr.html is a useful (albeit somewhat data) guide for when to use XXXPtr&lt;&gt; and PassXXXPtr&lt;&gt;.  It&apos;s written for RefPtr/PassRefPtr, but most of it applies to OwnPtr/PassOwnPtr.  In particular, PassRefPtr/PassOwnPtr should never be locals and there are some nice general guidelines about how they interact with RefPtr/OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564812</commentid>
    <comment_count>21</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-24 18:42:07 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 128835 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128835&amp;action=review
&gt; 
&gt; I like this patch and think it&apos;s really close but we definitely do not want to add a bunch of leakPtr() calls to the test. leakPtr() pretty much always indicates a bug or a boundary with an API that isn&apos;t 100% compatible with the WTF smart pointer types.  For instance, today we use leakPtr() in one place to pass a value between threads and in another place to interface with the WebKit API which has a different set of smart pointers.  Otherwise we should never use it.  I commented on two specific instances with what I think would be a better approach, I believe that one or the other can be extended to the rest of the tests.

Ok I&apos;ll eliminate the leakPtr().

&gt; &gt; Source/WebCore/platform/graphics/chromium/TreeSynchronizer.cpp:46
&gt; &gt; +    CCLayerImpl* ccLayerImpl = popCCLayerImpl.get();
&gt; 
&gt; the normal idiom for functions that take a PassOwnPtr&lt;&gt; parameter is to immediately put the parameter in a local OwnPtr&lt;&gt; and then never use the POP&lt;&gt; parameter again.  I do not think the code you&apos;ve written here is incorrect, but I think the idiomatic way would be equally correct and less error-prone.
&gt; 
&gt; IOW, have ccLayerImpl be an OwnPtr&lt;CCLayerImpl&gt;, leave the null-check-and-return alone, and move the map.set() call to the end of the function and have it take ccLayerImpl.release()

Wow this is brilliant! I love this solution. done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:46
&gt; &gt; +    , m_maskLayerID(-1)
&gt; &gt; +    , m_replicaLayerID(-1)
&gt; 
&gt; nit we use &quot;xxxId&quot; in other places (like m_layerId below). I don&apos;t have strong feelings on which is better but we should be consistent, and &quot;xxxId&quot; seems to be winning.
done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerIteratorPosition.h:1
&gt; &gt; +/*
&gt; 
&gt; i think you have a bad merge here - this file was deleted upstream in http://trac.webkit.org/changeset/108678
done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:347
&gt; &gt; +
&gt; 
&gt; nit: don&apos;t need the newline here
done

&gt; &gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:323
&gt; &gt; +    CCLayerImpl* child2 = CCLayerImpl::create(3).leakPtr();
&gt; 
&gt; This is unnecessarily confusing - leakPtr() pretty much always means that there&apos;s a leak and requires special care, in this case the code looks buggy unless you look down to the adoptPtr() call 9 lines below.  I think what you really want here is to have child2 be an OwnPtr&lt;&gt; and .release() it in the addChild() call.

Then again we have the problem that child2 will be null after the release() call...
I&apos;ll limit the scope of child2 in cases like this, then declare another raw pointer child2 later on if used. Sounds better?

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:359
&gt; &gt; +    CCLayerImpl* child2 = CCLayerImpl::create(3).leakPtr();
&gt; 
&gt; again the leakPtr() is unnecessarily scary. In this instance, it&apos;s probably simpler to add child2 to root&apos;s children here and then grab a raw pointer to it via .get() since you need to dereference it later on in the test

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564813</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 18:44:43 -0800</bug_when>
    <thetext>(In reply to comment #21) 
&gt; &gt; &gt; Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp:323
&gt; &gt; &gt; +    CCLayerImpl* child2 = CCLayerImpl::create(3).leakPtr();
&gt; &gt; 
&gt; &gt; This is unnecessarily confusing - leakPtr() pretty much always means that there&apos;s a leak and requires special care, in this case the code looks buggy unless you look down to the adoptPtr() call 9 lines below.  I think what you really want here is to have child2 be an OwnPtr&lt;&gt; and .release() it in the addChild() call.
&gt; 
&gt; Then again we have the problem that child2 will be null after the release() call...
&gt; I&apos;ll limit the scope of child2 in cases like this, then declare another raw pointer child2 later on if used. Sounds better?
&gt; 

I think that sounds like the right approach.  It still may be awkward in some cases, but IMO awkward-looking code without leakPtr() is generally either obvious to correct or very reliably fails.  It&apos;s difficult to write a subtle memory leak or race without leakPtr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564824</commentid>
    <comment_count>23</comment_count>
      <attachid>128839</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-24 19:11:06 -0800</bug_when>
    <thetext>Created attachment 128839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564829</commentid>
    <comment_count>24</comment_count>
      <attachid>128839</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 19:26:21 -0800</bug_when>
    <thetext>Comment on attachment 128839
Patch

R=me awesome! Thanks for persisting with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564836</commentid>
    <comment_count>25</comment_count>
      <attachid>128839</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 19:59:00 -0800</bug_when>
    <thetext>Comment on attachment 128839
Patch

Clearing c-q for now, ASAN seems to have an issue with one of the unit tests..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564837</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 20:05:57 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 128839 [details])
&gt; Clearing c-q for now, ASAN seems to have an issue with one of the unit tests..

Ah, ASAN caught an interesting bug in removeFromParent():

82	void CCLayerImpl::removeFromParent()
83	{
84	    if (!m_parent)
85	        return;
86	    for (size_t i = 0; i &lt; m_parent-&gt;m_children.size(); ++i) {
87	        if (m_parent-&gt;m_children[i].get() == this) {
88	            m_parent-&gt;m_children.remove(i);
89	            break;
90	        }
91	    }
92	    m_parent = 0;
93      }

Line 88 was deleting &apos;this&apos; and line 92 was attempting to set a member variable.  Shuffling the order around fixes this and results in a clean ASAN run of webkit_unit_tests.  I&apos;ll run the layout tests under ASAN, then land with this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564839</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 20:10:10 -0800</bug_when>
    <thetext>Committed r108886: &lt;http://trac.webkit.org/changeset/108886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564867</commentid>
    <comment_count>28</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-02-24 21:50:29 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (From update of attachment 128839 [details] [details])
&gt; &gt; Clearing c-q for now, ASAN seems to have an issue with one of the unit tests..
&gt; 
&gt; Ah, ASAN caught an interesting bug in removeFromParent():
&gt; 
&gt; 82    void CCLayerImpl::removeFromParent()
&gt; 83    {
&gt; 84        if (!m_parent)
&gt; 85            return;
&gt; 86        for (size_t i = 0; i &lt; m_parent-&gt;m_children.size(); ++i) {
&gt; 87            if (m_parent-&gt;m_children[i].get() == this) {
&gt; 88                m_parent-&gt;m_children.remove(i);
&gt; 89                break;
&gt; 90            }
&gt; 91        }
&gt; 92        m_parent = 0;
&gt; 93      }
&gt; 
&gt; Line 88 was deleting &apos;this&apos; and line 92 was attempting to set a member variable.  Shuffling the order around fixes this and results in a clean ASAN run of webkit_unit_tests.  I&apos;ll run the layout tests under ASAN, then land with this fix.

Now I think of it, why bother who is my mommy when I&apos;m going to die anyway?
I think we can extend this function to return a PassOwnPtr to allow re-parenting a layer, so the PassOwnPtr can also extend the lifetime of &apos;this&apos; until it returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564980</commentid>
    <comment_count>29</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-25 10:25:49 -0800</bug_when>
    <thetext>Committed r108902: &lt;http://trac.webkit.org/changeset/108902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126614</attachid>
            <date>2012-02-10 18:46:20 -0800</date>
            <delta_ts>2012-02-13 14:35:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120210184619.patch</filename>
            <type>text/plain</type>
            <size>118526</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYyZmY2OTUwMTViNzM5
Y2UyM2MwMzMyN2IwZmY3MTY1YjMwZjAyYi4uOWE1MTdhZDk0MTRiZDcxZmZmZThhZTczMWI1ZTZj
MzQwNmViYTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0wMi0xMCAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0
TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcklt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpsYXllckxpc3QpOgorICAgICAgICAoUmVu
ZGVyU3VyZmFjZUNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmg6CisgICAgICAgIChT
b2xpZENvbG9yTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6Y29sbGVjdEV4
aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNo
cm9uaXplcjo6cmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oOgorICAgICAgICAoVHJl
ZVN5bmNocm9uaXplcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpUcmVl
U3luY2hyb25pemVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVt
OjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmg6CisgICAgICAgIChWaWRlb0xheWVyQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6dHJhY2tEYW1hZ2VGcm9t
QWN0aXZlTGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuaDoKKyAgICAgICAgKENDRGFtYWdlVHJhY2tlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnNvcnRM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldE1hc2tMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6Y2hpbGRyZW4pOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJh
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6OmJlZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvcjo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJdGVyYXRvcjo6Q0NMYXllckl0ZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpjdXJyZW50TGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246OnRhcmdldFJlbmRl
clN1cmZhY2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JQb3NpdGlv
bjo6dGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKToKKyAgICAgICAgKENDTGF5ZXJJdGVyYXRv
clBvc2l0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyU29ydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OmNyZWF0ZUdy
YXBoTm9kZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJTb3J0ZXIuaDoKKyAgICAgICAgKENDTGF5ZXJTb3J0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjp3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0Q29tbW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OnJlbGVhc2VSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdpbkxh
eWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6
bGF5ZXJMaXN0KToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjcmVhdGUpOgorCiAyMDEyLTAyLTA4ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdXNlIHRoZSB3aGVlbCBl
dmVudCBoYW5kbGVyIGNvdW50IHRvIHRyYWNrIGlmIGEgcGFnZSBoYXMgaG9yaXpvbnRhbCBzY3Jv
bGxiYXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQwMWM4NjE4NDM2YjRlNjM3NTU5
MGM0OTc4N2Q3ZjMyZWI5NDUyMWUuLmIyYzdiNTY5MGFkMDFjMzAwOTc4ZGRlNDA4NTczNjk4MDZi
MTFiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTIt
MDItMTAgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gUmVwbGFjZSBSZWZQdHIgd2l0aCBPd25QdHIgZm9yIENDTGF5ZXJJbXBsIHRyZWUg
c3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6
ZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eSk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6ZW11bGF0ZURyYXdpbmdPbmVGcmFtZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Y3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Y3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcyk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckl0ZXJhdG9y
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NMYXll
clRyZWVIb3N0SW1wbFRlc3Q6OnNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMpOgorICAgICAg
ICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXll
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVy
SW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAg
ICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0
Q29tbW9uOjpjcmVhdGVMYXllcik6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6
CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Z2V0UXVhZHMpOgorICAgICAgICAqIHRlc3Rz
L0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAg
ICAgKiB0ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0NMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhwZWN0VHJlZXNB
cmVJZGVudGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDItMDggIFNj
b3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21p
dW0gREVQUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAppbmRleCAxODFiYTRlNTgx
MmNlODg3OGExNzkyMDI1OGY4ZWRlOGRmYjQ2MjFlLi5kNTMzNjk5YWY5ZjFmN2FhMDg1MjhkNDFm
OGI2YmNjMjYwYjAzNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcApAQCAt
NDUsNyArNDUsNyBAQCBDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKCkK
IHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ0NhbnZhc0xheWVySW1w
bDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKaW5k
ZXggOWU4Y2U3ZDhjYzgyYWE4ODNjMzZhODU4NjMwOTQ0OGYzMzYyMDI3MS4uNzIyY2MxYTY2NzM4
OWIzNTcxMDU4MjUyOGI2ZDFjYzc2M2EzNTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21p
dW0uaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIGNsYXNz
IGZvciBXZWJHTCBhbmQgYWNjZWxlcmF0ZWQgMmQgY2FudmFzZXMuCiBjbGFzcyBDYW52YXNMYXll
ckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBDYW52YXNMYXllckNocm9taXVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDhkMGZlMDNiNjEzYjI0ODE3MGU4ZjM2MjAwZDE0MGJlMDkxZjQ0ODMuLjFkMDE4OTlmNmE2Y2M2
ZTRhYTI0ZTAwM2JiYzIwOGRjNWRjOGMzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00
MzYsNyArNDM2LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXJJbXBsKiBsYXllcikKICAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoKTsKIH0KIAotUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQor
UGFzc093blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwo
KQogewogICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CkBAIC01
MDUsNyArNTA1LDcgQEAgYm9vbCBMYXllckNocm9taXVtOjpkZXNjZW5kYW50RHJhd3NDb250ZW50
KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID46Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID46Oml0ZXJhdG9yLCB2b2lkKikKK3ZvaWQgc29ydExheWVycyhWZWN0b3I8TGF5ZXJDaHJvbWl1
bSo+OjppdGVyYXRvciwgVmVjdG9yPExheWVyQ2hyb21pdW0qPjo6aXRlcmF0b3IsIHZvaWQqKQog
ewogICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCB1c2Ugei1vcmRlciB0byBkZWNpZGUgd2hhdCB0
byBwYWludCwgc28gdGhlcmUncyBubyBuZWVkIHRvIGFjdHVhbGx5IHNvcnQgTGF5ZXJDaHJvbWl1
bXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYTA3NTgxMzFmYmZlMjM0NjkwYjI3MzNhZWM2
YmEyZjhhMTRkMGNhNy4uMzUxZjhkMDcwMzg4MzgyMjA4YzlmY2JjYjY4ODBmNjRjNDFhYTYxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjMyLDcgKzIzMyw3
IEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKICAgICBm
cmllbmQgY2xhc3MgQ0NMYXllckltcGw7CiAgICAgLy8gQ29uc3RydWN0cyBhIENDTGF5ZXJJbXBs
IG9mIHRoZSBjb3JyZWN0IHJ1bnRpbWUgdHlwZSBmb3IgdGhpcyBMYXllckNocm9taXVtIHR5cGUu
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgp
OworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwo
KTsKICAgICBpbnQgbV9sYXllcklkOwogCiBwcml2YXRlOgpAQCAtMjk4LDcgKzI5OSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3BhZ2VTY2FsZURpcnR5OwogfTsKIAotdm9pZCBzb3J0TGF5ZXJz
KFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKTsKK3ZvaWQgc29ydExheWVycyhWZWN0
b3I8TGF5ZXJDaHJvbWl1bSo+OjppdGVyYXRvciwgVmVjdG9yPExheWVyQ2hyb21pdW0qPjo6aXRl
cmF0b3IsIHZvaWQqKTsKIAogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDc5YWQyZWRlOTU0NzU1
ODJiODcwNzI5YTcxYTVkNjFiZDI4YWI0Yi4uNjI1ZjRiMjFkZmI4YTUxZDNjOWU3YWYwOTJlNGEw
MjliY2IzNjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckMKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0
UmVjdCgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVt
OjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXll
ckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDUGx1Z2luTGF5
ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
aAppbmRleCA4NDM2NTY5NWJiMWRkYzY1MjMxYWRkMDRmNmYwZDgzMDAwOTFlMGQwLi5jMzBmNzdh
YzVkMWI3YmE1YTc0ZGFkYjA4ZmRlNGExM2IzZWE0NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllcklt
cGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJ
bXBsKCk7CiAKICAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWly
IG93biB0ZXh0dXJlIElELgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJ
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCmluZGV4IDNjNmYxNjQ5YTVkMjdl
ODc4YzNlMDc3YzQyN2Y0OWI2Nzk5ZDM1OTYuLjE5OTk4OTgyMmVhZjZhOGEyODZkOWE3Y2EwY2Zl
OTM1ZGZjMDU0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykg
eyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogCiAgICAgdm9pZCBjbGVhckxheWVyTGlzdCgp
IHsgbV9sYXllckxpc3QuY2xlYXIoKTsgfQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiYgbGF5ZXJMaXN0KCkgeyByZXR1cm4gbV9sYXllckxpc3Q7IH0KKyAgICBWZWN0b3I8TGF5
ZXJDaHJvbWl1bSo+JiBsYXllckxpc3QoKSB7IHJldHVybiBtX2xheWVyTGlzdDsgfQogCiAgICAg
dm9pZCBzZXRNYXNrTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKSB7IG1fbWFza0xheWVy
ID0gbWFza0xheWVyOyB9CiAKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fb3JpZ2luVHJhbnNmb3JtOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9sYXllckxpc3Q7CisgICAgVmVjdG9yPExh
eWVyQ2hyb21pdW0qPiBtX2xheWVyTGlzdDsKIAogICAgIC8vIEZvciBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zCiAgICAgaW50IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29s
aWRDb2xvckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVkMTM1NDZiYWU4
N2Y0MDUxYjMwZTM0OTRjMGYyZmRlODUzZjFlMzMuLjBkYzc3YWRhODIyNjAyMzI1ZTY3OWUzMTU0
ODgzMzY4OTNiOTRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwo
KQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gU29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0
ZUNDTGF5ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVh
dGUoaWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uaAppbmRleCAx
ZDE0ODkwYmQwZTFmMGMyMGM2M2M2ZDIzMTcxNTk0OGQyMTg5NGZjLi45NGE1NGEwYWM1YWRlMTE5
Nzg2ZGQwNmJkMzQ5ZGJiMjE3YmJkNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNo
cm9taXVtLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogLy8g
c2V0QmFja2dyb3VuZENvbG9yKCkgb24gdGhlIGJhc2UgY2xhc3MuCiBjbGFzcyBTb2xpZENvbG9y
TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmly
dHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNvbGlkQ29sb3JMYXllckNocm9taXVtPiBjcmVhdGUoKTsKIAogICAg
IHZpcnR1YWwgflNvbGlkQ29sb3JMYXllckNocm9taXVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCBjOTFkZDVkZmI0MmU1MGYwNTkzY2JhMWMzMjc3N2VjNTkyOTE2ZDgx
Li41NTE2MTY3NTI4ZWQ4YmVlMDE4YjBiNGY3ZjU0NDg4YWJkNjU3ODVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgVGlsZWRMYXllckNocm9taXVt
Ojp+VGlsZWRMYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsKICAgICBy
ZXR1cm4gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKGlkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaAppbmRleCA0NjE5MmZlNWQyNTZlNmUyN2VmYTFmNmFmOTBhNzhkNmRmODIwOTg0
Li4zY2Q0YjE3N2M0YzkyOTIzZTZhNTQzOWJmZDMxMjgwOThiNzY3OGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
CiAKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKICAgICB2b2lkIHNldFRpbGluZ09w
dGlvbihUaWxpbmdPcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcAppbmRleCBkMGZk
MGNlNTIzZDYzODg0YmU5MzJlMWJkNDE2NTgyZjI1NzYyZTQwLi5jZDJhZmJiM2Q5MmVhOGEwNDQ0
YWYwNmI4M2FkMTAxZDI1YmY3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcApAQCAt
MzMsNjMgKzMzLDU4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBUcmVlU3luY2hy
b25pemVyOjphZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYgbWFw
LCBDQ0xheWVySW1wbCogY2NMYXllckltcGwpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21p
dW1Sb290LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QpCiB7Ci0g
ICAgbWFwLnNldChjY0xheWVySW1wbC0+aWQoKSwgY2NMYXllckltcGwpOworICAgIFRyZWVTeW5j
aHJvbml6ZXIgc3luY2hyb25pemVyOworICAgIHN5bmNocm9uaXplci5jb2xsZWN0RXhpc3RpbmdD
Q0xheWVySW1wbFJlY3Vyc2l2ZShvbGRDQ0xheWVySW1wbFJvb3QpOwogCi0gICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRyZW4gPSBjY0xheWVySW1wbC0+Y2hpbGRy
ZW4oKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQot
ICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIGNoaWxkcmVuW2ldLmdl
dCgpKTsKLQotICAgIGlmIChDQ0xheWVySW1wbCogbWFza0xheWVyID0gY2NMYXllckltcGwtPm1h
c2tMYXllcigpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIG1h
c2tMYXllcik7Ci0KLSAgICBpZiAoQ0NMYXllckltcGwqIHJlcGxpY2FMYXllciA9IGNjTGF5ZXJJ
bXBsLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNp
dmUobWFwLCByZXBsaWNhTGF5ZXIpOworICAgIHJldHVybiBzeW5jaHJvbml6ZXIuc3luY2hyb25p
emVUcmVlUmVjdXJzaXZlKGxheWVyQ2hyb21pdW1Sb290KTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xh
eWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVy
Q2hyb21pdW0qIGxheWVyLCBDQ0xheWVySW1wbE1hcCYgbWFwKQordm9pZCBUcmVlU3luY2hyb25p
emVyOjpjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBwb3BDQ0xheWVySW1wbCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5
ZXJJbXBsOwotICAgIENDTGF5ZXJJbXBsTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKGxheWVy
LT5pZCgpKTsKLSAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKSB7Ci0gICAgICAgIGNjTGF5ZXJJbXBs
ID0gaXQtPnNlY29uZDsgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVudHJ5IGZvciB0aGlzLCB3ZSBq
dXN0IG5lZWQgdG8gcmVwYXJlbnQgaXQuCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5jbGVhckNoaWxk
TGlzdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNjTGF5ZXJJbXBsID0gbGF5ZXItPmNyZWF0
ZUNDTGF5ZXJJbXBsKCk7Ci0gICAgICAgIG1hcC5zZXQobGF5ZXItPmlkKCksIGNjTGF5ZXJJbXBs
KTsgLy8gQWRkIGl0IHRvIHRoZSBtYXAgc28gb3RoZXIgbGF5ZXJzIHJlZmVyZW5jaW5nIHRoaXMg
b25lIGNhbiBwaWNrIGl0IHVwLgotICAgIH0KKyAgICBDQ0xheWVySW1wbCogY2NMYXllckltcGwg
PSBwb3BDQ0xheWVySW1wbC5nZXQoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNjTGF5
ZXJJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hcC5zZXQoY2NMYXllckltcGwtPmlk
KCksIHBvcENDTGF5ZXJJbXBsKTsKKworICAgIFZlY3RvcjxPd25QdHI8Q0NMYXllckltcGw+ID4m
IGNoaWxkcmVuID0gY2NMYXllckltcGwtPm1fY2hpbGRyZW47CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgY2NMYXllckltcGwtPmFkZENo
aWxkKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShjaGlsZHJlbltpXS5nZXQoKSwgbWFwKSk7Cisg
ICAgICAgIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKGNoaWxkcmVuW2ldLnJl
bGVhc2UoKSk7CisKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShjY0xh
eWVySW1wbC0+bV9tYXNrTGF5ZXIucmVsZWFzZSgpKTsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xh
eWVySW1wbFJlY3Vyc2l2ZShjY0xheWVySW1wbC0+bV9yZXBsaWNhTGF5ZXIucmVsZWFzZSgpKTsK
K30KIAotICAgIGlmIChMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSBsYXllci0+bWFza0xheWVy
KCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVlUmVj
dXJzaXZlKG1hc2tMYXllciwgbWFwKSk7Ci0gICAgZWxzZQotICAgICAgICBjY0xheWVySW1wbC0+
c2V0TWFza0xheWVyKDApOworUGFzc093blB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXpl
cjo6cmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKExheWVyQ2hyb21pdW0qIGxheWVyKQoreworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGwgPSBtX21hcC50YWtlKGxheWVyLT5pZCgp
KTsKIAotICAgIGlmIChMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSBsYXllci0+cmVwbGlj
YUxheWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRSZXBsaWNhTGF5ZXIoc3luY2hyb25p
emVUcmVlUmVjdXJzaXZlKHJlcGxpY2FMYXllciwgbWFwKSk7Ci0gICAgZWxzZQotICAgICAgICBj
Y0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKDApOworICAgIGlmICghY2NMYXllckltcGwpCisg
ICAgICAgIHJldHVybiBsYXllci0+Y3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdldCgpKTsKICAgICByZXR1cm4gY2NMYXllcklt
cGwucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25p
emVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW1Sb290LCBQ
YXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVySW1wbFJvb3QpCitQYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUo
TGF5ZXJDaHJvbWl1bSogbGF5ZXIpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xh
eWVySW1wbFJvb3QgPSBwcnBPbGRDQ0xheWVySW1wbFJvb3Q7Ci0gICAgLy8gQnVpbGQgYSBtYXAg
ZnJvbSBsYXllciBJRHMgdG8gQ0NMYXllckltcGxzIHNvIHdlIGNhbiByZXVzZSBsYXllcnMgZnJv
bSB0aGUgb2xkIHRyZWUuCi0gICAgQ0NMYXllckltcGxNYXAgbWFwOwotICAgIGlmIChvbGRDQ0xh
eWVySW1wbFJvb3QpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwg
b2xkQ0NMYXllckltcGxSb290LmdldCgpKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGwgPSByZXVz
ZU9yQ3JlYXRlQ0NMYXllckltcGwobGF5ZXIpOworCisgICAgY2NMYXllckltcGwtPmNsZWFyQ2hp
bGRMaXN0KCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBjaGls
ZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGNjTGF5ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJv
bml6ZVRyZWVSZWN1cnNpdmUoY2hpbGRyZW5baV0uZ2V0KCkpKTsKIAotICAgIC8vIFJlY3Vyc2l2
ZWx5IGJ1aWxkIHRoZSBuZXcgbGF5ZXIgdHJlZS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG5l
d0NDTGF5ZXJJbXBsUm9vdCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShsYXllckNocm9taXVt
Um9vdCwgbWFwKTsKKyAgICBjY0xheWVySW1wbC0+c2V0TWFza0xheWVyKHN5bmNocm9uaXplVHJl
ZVJlY3Vyc2l2ZShsYXllci0+bWFza0xheWVyKCkpKTsKKyAgICBjY0xheWVySW1wbC0+c2V0UmVw
bGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShsYXllci0+cmVwbGljYUxheWVyKCkp
KTsKIAotICAgIHJldHVybiBuZXdDQ0xheWVySW1wbFJvb3QucmVsZWFzZSgpOworICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdldCgpKTsKKyAgICByZXR1cm4gY2NMYXll
ckltcGwucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmgKaW5kZXggYTRlNDk0MjE3Mzk1ZThkMmUxMjk2YmQ2NTY2NjJlMzJiMTE5YWNm
Zi4uOTU5NTM3OTA0NTM3NmJhMWZmZjdjZjk4ODYyMmJkMzBkZTE4YWU5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXpl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVT
eW5jaHJvbml6ZXIuaApAQCAtMjgsNyArMjgsOCBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDE2ICs0MSwxOSBAQCBXVEZfTUFLRV9O
T05DT1BZQUJMRShUcmVlU3luY2hyb25pemVyKTsKIHB1YmxpYzoKICAgICAvLyBBY2NlcHRzIGEg
TGF5ZXJDaHJvbWl1bSB0cmVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGEgQ0NMYXllcklt
cGwgdHJlZSB0aGF0IGR1cGxpY2F0ZXMgdGhlIHN0cnVjdHVyZQogICAgIC8vIG9mIHRoZSBMYXll
ckNocm9taXVtIHRyZWUsIHJldXNpbmcgdGhlIENDTGF5ZXJJbXBscyBpbiB0aGUgdHJlZSBwcm92
aWRlZCBieSBvbGRDQ0xheWVySW1wbFJvb3QgaWYgcG9zc2libGUuCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJS
b290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21p
dW0qIGxheWVyUm9vdCwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290
KTsKKworICAgIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJldXNlT3JDcmVhdGVDQ0xheWVySW1w
bChMYXllckNocm9taXVtKik7CiAKIHByaXZhdGU6Ci0gICAgVHJlZVN5bmNocm9uaXplcigpOyAv
LyBOb3QgaW5zdGFudGlhYmxlLgorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIE93blB0cjxDQ0xh
eWVySW1wbD4gPiBDQ0xheWVySW1wbE1hcDsKKworICAgIFRyZWVTeW5jaHJvbml6ZXIoKSB7IH0K
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxDQ0xheWVySW1wbD4gPiBDQ0xheWVy
SW1wbE1hcDsKKyAgICB2b2lkIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKFBh
c3NPd25QdHI8Q0NMYXllckltcGw+KTsKKyAgICBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBzeW5j
aHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSopOwogCi0gICAgLy8gRGVjbGFyZWQg
YXMgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgc28gdGhleSBjYW4gYWNjZXNzIGZ1bmN0aW9ucyBv
biBMYXllckNocm9taXVtIGFzIGEgZnJpZW5kIGNsYXNzLgotICAgIHN0YXRpYyB2b2lkIGFkZEND
TGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiwgQ0NMYXllckltcGwqKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gc3luY2hyb25pemVUcmVlUmVjdXJz
aXZlKExheWVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbE1hcCYpOworICAgIENDTGF5ZXJJbXBsTWFw
IG1fbWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggYWUyYWU4YzgwZTIyYTE5MzhhZWI0OWE0Njc5M2UyMzBlMjhiODI4
YS4uZTY5MTE5ODFlZDA2MWRjNjdkZTUzNGUzZWI2NzAwNTM0Yjk5ZDQxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6flZpZGVvTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAg
cmV0dXJuIENDVmlkZW9MYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fcHJvdmlkZXIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA4Nzg4MDZlMjZkYjU0NzMwMjI0MTYy
MzBlYzEwNWZhYmY5YjhlNjRhLi4xZjJlOTIwMTI0ZmM0ZjAwNjJlMmQ2NTI2YjYwMmVjY2Q0YWM3
YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoVmlk
ZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgp
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1w
bCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllcklt
cGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBWaWRlb0xheWVyQ2hyb21pdW0oVmlkZW9G
cmFtZVByb3ZpZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCA5MTI2
YTdkNDQ1MDFlNjMyNWI1ZWZkNGI1N2NiYTllNDZiYzhhNzVhLi5jOTZhZjI0NmVkM2JhNzU4OTVi
YmVmNTUyZDRjOThkNGU4MGI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgK
QEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0NhbnZhc0xh
eWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ0NDYW52YXNMYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVh
bCB+Q0NDYW52YXNMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAK
aW5kZXggMmQ2ZjQzZjMxODVmYzQ0NWNhOTk1OWZlODA0ZjYyNGIzYjRlMTMzZi4uNmEwNjJjYWNh
N2NjNTg3NWYyYzkyNTk5ODU2YjZhNWVjOGU1M2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRy
YWNrZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIENDRGFtYWdlVHJhY2tlcjo6fkNDRGFtYWdlVHJh
Y2tlcigpCiB7CiB9CiAKLXZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2lu
Z1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCwgaW50
IHRhcmdldFN1cmZhY2VMYXllcklELCBDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXll
cikKK3ZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0
IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJ
RCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpCiB7CiAgICAgLy8KICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSAiZGFtYWdlIHJlY3QiIG9mIGEgdGFyZ2V0IHN1
cmZhY2UsIGFuZCB1cGRhdGVzIHRoZSBzdGF0ZQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ0NE
YW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q0NMYXllckltcGw+CiAKICAgICAvLyBJZiB0aGUgdGFyZ2V0IHN1cmZhY2UgYWxyZWFkeSBr
bm93cyBpdHMgZW50aXJlIHJlZ2lvbiBpcyBkYW1hZ2VkLCB3ZSBjYW4gcmV0dXJuIGVhcmx5Lgog
ICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBnbyBhd2F5LCBvciB3aWxsIGJlIGNsZWFuZXIsIGFm
dGVyIHJlZmFjdG9yaW5nIGludG8gUmVuZGVyUGFzcy9SZW5kZXJTY2hlZHVsZS4KLSAgICBDQ0xh
eWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGxh
eWVyID0gbGF5ZXJMaXN0WzBdOwogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSA9
IGxheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7CiAKICAgICBpZiAobV9mb3JjZUZ1bGxEYW1h
Z2VOZXh0VXBkYXRlIHx8IHRhcmdldFN1cmZhY2UtPnN1cmZhY2VQcm9wZXJ0eUNoYW5nZWRPbmx5
RnJvbURlc2NlbmRhbnQoKSkgewpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBDQ0RhbWFnZVRy
YWNrZXI6OnNhdmVSZWN0Rm9yTmV4dEZyYW1lKGludCBsYXllcklELCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFMKICAgICBtX25leHRSZWN0SGlzdG9yeS0+c2V0KGxheWVySUQsIHRhcmdldFNwYWNl
UmVjdCk7CiB9CiAKLUZsb2F0UmVjdCBDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFtYWdlRnJvbUFj
dGl2ZUxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3Qs
IGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCkKK0Zsb2F0UmVjdCBDQ0RhbWFnZVRyYWNrZXI6OnRy
YWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5
ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpCiB7CiAgICAgRmxvYXRSZWN0IGRhbWFn
ZVJlY3QgPSBGbG9hdFJlY3QoKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7
IGxheWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAg
Q0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAg
ICBDQ0xheWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF07CiAKICAgICAgICAg
aWYgKENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJn
ZXQ8Q0NMYXllckltcGw+KGxheWVyLCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCkpCiAgICAgICAgICAg
ICBleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKGxheWVyLCBkYW1hZ2VSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFt
YWdlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEYW1hZ2VUcmFja2VyLmgKaW5kZXggZDQyOGYyNmQxYTBjMjVjYTBjNDgxYzA5M2ViM2E4
ZmZiYTNiYjgwOS4uN2E2MjljNDc4MTI4MWJlNGRmYTFjNDlkZDEzYjExZTRmOTU1MGY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
YW1hZ2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAg
ICAgfkNDRGFtYWdlVHJhY2tlcigpOwogCiAgICAgdm9pZCBmb3JjZUZ1bGxEYW1hZ2VOZXh0VXBk
YXRlKCkgeyBtX2ZvcmNlRnVsbERhbWFnZU5leHRVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdm9pZCB1
cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklELCBDQ0xheWVySW1wbCogdGFy
Z2V0U3VyZmFjZU1hc2tMYXllcik7CisgICAgdm9pZCB1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRl
KGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNl
TGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpOwogICAgIGNvbnN0
IEZsb2F0UmVjdCYgY3VycmVudERhbWFnZVJlY3QoKSB7IHJldHVybiBtX2N1cnJlbnREYW1hZ2VS
ZWN0OyB9CiAKIHByaXZhdGU6CiAgICAgQ0NEYW1hZ2VUcmFja2VyKCk7CiAKLSAgICBGbG9hdFJl
Y3QgdHJhY2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsKKyAgICBGbG9h
dFJlY3QgdHJhY2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1w
bCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CiAgICAgRmxvYXRSZWN0
IHRyYWNrRGFtYWdlRnJvbVN1cmZhY2VNYXNrKENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFz
a0xheWVyKTsKICAgICBGbG9hdFJlY3QgdHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJSZWN0cygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggODFmOTcxMmUwZmFjMGY5ODEyODg4ZGEyZTcz
ZmYzM2VmZDYwNjVhNC4uNGM0YzFmZTVlOTA3MjlkNDQ2N2ZlYzE2NGUxM2E5ZDcyNGJiNjZiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNzAsNyArNzAsNyBAQCBDQ0xheWVySW1wbDo6
fkNDTGF5ZXJJbXBsKCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogfQog
Ci12b2lkIENDTGF5ZXJJbXBsOjphZGRDaGlsZChQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGls
ZCkKK3ZvaWQgQ0NMYXllckltcGw6OmFkZENoaWxkKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNo
aWxkKQogewogICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5hcHBl
bmQoY2hpbGQpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXll
clByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAgICAgdHMgPDwg
ImRyYXdzQ29udGVudDogIiA8PCAobV9kcmF3c0NvbnRlbnQgPyAieWVzIiA6ICJubyIpIDw8ICJc
biI7CiB9CiAKLXZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+Ojpp
dGVyYXRvciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZW5k
LCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKK3ZvaWQgc29ydExheWVycyhWZWN0b3I8Q0NM
YXllckltcGwqPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+OjppdGVyYXRv
ciBlbmQsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyKQogewogICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNvcnRMYXllcnMiLCAwLCAwKTsKICAgICBsYXllclNvcnRl
ci0+c29ydChmaXJzdCwgZW5kKTsKQEAgLTMyMCwyMCArMzIwLDE0IEBAIHZvaWQgQ0NMYXllcklt
cGw6OnNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgICAgIG1fbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIo
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gbWFza0xheWVyKQordm9pZCBDQ0xheWVySW1wbDo6c2V0
TWFza0xheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKIHsKLSAgICBpZiAo
bV9tYXNrTGF5ZXIgPT0gbWFza0xheWVyKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX21hc2tM
YXllciA9IG1hc2tMYXllcjsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVl
KCk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OnNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5
ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKQogewotICAgIGlmIChtX3Jl
cGxpY2FMYXllciA9PSByZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fcmVw
bGljYUxheWVyID0gcmVwbGljYUxheWVyOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZv
clN1YnRyZWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDdiYWUyMDE3NDRiNGVjMjA4
MTRmMzA1MjhhYjZiY2YyZDJkODc5MmQuLmY1YmUzYjE4MWI0OGM4MjE0Y2NjODMyNmI4MGJjMjUw
ZGU5YWY3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDQsMjUgKzQ0LDI1IEBAIGNsYXNz
IENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOwogCi1jbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5
ZXJJbXBsPiB7CitjbGFzcyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENDTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NM
YXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NMYXllckltcGwoKTsKIAogICAg
IC8vIFRyZWUgc3RydWN0dXJlLgogICAgIENDTGF5ZXJJbXBsKiBwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudDsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4m
IGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotICAgIHZvaWQgYWRkQ2hp
bGQoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q0NM
YXllckltcGw+ID4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAg
IHZvaWQgYWRkQ2hpbGQoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIHZvaWQgcmVtb3Zl
RnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIHZvaWQg
c2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKKyAgICB2b2lkIHNldE1hc2tM
YXllcihQYXNzT3duUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgQ0NMYXllckltcGwqIG1hc2tMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFJl
cGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CisgICAgdm9pZCBzZXRSZXBsaWNh
TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNh
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgaW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9CkBAIC0yMjYsOSArMjI2LDkgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFByb3BlcnRpZXMgaW50ZXJuYWwgdG8gQ0NMYXllckltcGwKICAgICBD
Q0xheWVySW1wbCogbV9wYXJlbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBt
X2NoaWxkcmVuOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbV9tYXNrTGF5ZXI7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBtX3JlcGxpY2FMYXllcjsKKyAgICBWZWN0b3I8T3duUHRyPENDTGF5
ZXJJbXBsPiA+IG1fY2hpbGRyZW47CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX21hc2tMYXll
cjsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcmVwbGljYUxheWVyOwogICAgIGludCBtX2xh
eWVySWQ7CiAKICAgICAvLyBQcm9wZXJ0aWVzIHN5bmNocm9uaXplZCBmcm9tIHRoZSBhc3NvY2lh
dGVkIExheWVyQ2hyb21pdW0uCkBAIC0zMDgsNyArMzA4LDcgQEAgcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV91cGRhdGVSZWN0OwogfTsKIAotdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8
Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+OjppdGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKK3ZvaWQgc29ydExheWVycyhWZWN0
b3I8Q0NMYXllckltcGwqPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+Ojpp
dGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVy
YXRvci5oCmluZGV4IDhmNDEyYzQ0ZDNkMTQwNDcwZmQxMmE3MjdiOTE0ZTRkNDZmYmViMTQuLjVh
ZTk2NDFmZDE5MGUxYTgxM2I0NjI1YzExMjlhYjQ3NGE5MGFmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJdGVyYXRvci5oCkBAIC05MCw4ICs5MCw4IEBAIGNsYXNzIENDTGF5ZXJJdGVyYXRvciB7CiBw
dWJsaWM6CiAgICAgQ0NMYXllckl0ZXJhdG9yKCkgeyB9CiAKLSAgICBzdGF0aWMgQ0NMYXllckl0
ZXJhdG9yVHlwZSBiZWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCB0cnVlKTsgfQotICAgIHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGVu
ZChjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBm
YWxzZSk7IH0KKyAgICBzdGF0aWMgQ0NMYXllckl0ZXJhdG9yVHlwZSBiZWdpbihjb25zdCBWZWN0
b3I8TGF5ZXJUeXBlKj4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJ
dGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgdHJ1ZSk7IH0KKyAgICBzdGF0aWMg
Q0NMYXllckl0ZXJhdG9yVHlwZSBlbmQoY29uc3QgVmVjdG9yPExheWVyVHlwZSo+KiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0b3JUeXBlKHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGZhbHNlKTsgfQogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSYgb3BlcmF0
b3IrKygpIHsgQVNTRVJUKG1fYWN0aW9ucyk7IG1fYWN0aW9ucy0+bmV4dChtX3Bvc2l0aW9uKTsg
cmV0dXJuICp0aGlzOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENDTGF5ZXJJdGVyYXRv
clR5cGUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRp
b247IH0KQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgTGF5ZXJUeXBlKiB0YXJnZXRS
ZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnRhcmdldFJlbmRl
clN1cmZhY2VMYXllcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NMYXllckl0ZXJhdG9yKGNvbnN0
IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBib29s
IHN0YXJ0KQorICAgIENDTGF5ZXJJdGVyYXRvcihjb25zdCBWZWN0b3I8TGF5ZXJUeXBlKj4qIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGJvb2wgc3RhcnQpCiAgICAgICAgIDogbV9wb3NpdGlvbihy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogICAgICAgICAsIG1fYWN0aW9ucyhhZG9wdFB0cihuZXcg
SXRlcmF0b3JBY3Rpb25UeXBlKCkpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvclBvc2l0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRl
cmF0b3JQb3NpdGlvbi5oCmluZGV4IGIxZjYzYzQ1Zjc0MmMwM2M2MGRlZjliMjE3Mzg0MGFmYjg2
YzMyNjMuLjJmYjBjYzk5YzgyMDQ2MzUwOGY2NGYxNDQyYTJkOWRkYjJiMGQ1NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaApAQCAtNTksMTYgKzU5LDE2IEBA
IHN0cnVjdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlIHsKIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBzdHJ1Y3QgQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb24gewogICAgIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKCkgOiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KDApIHsgfQotICAgIGV4cGxpY2l0IENDTGF5ZXJJdGVyYXRvclBvc2l0
aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KSA6IHJlbmRlclN1cmZhY2VMYXllckxpc3QocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyB9
CisgICAgZXhwbGljaXQgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24oY29uc3QgVmVjdG9yPExheWVy
VHlwZSo+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSA6IHJlbmRlclN1cmZhY2VMYXllckxpc3Qo
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyB9CiAKLSAgICBpbmxpbmUgTGF5ZXJUeXBlKiBjdXJy
ZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpID8gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkgOiB0YXJnZXRSZW5kZXJT
dXJmYWNlQ2hpbGRyZW4oKVtjdXJyZW50TGF5ZXJJbmRleF0uZ2V0KCk7IH0KKyAgICBpbmxpbmUg
TGF5ZXJUeXBlKiBjdXJyZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJSZXBy
ZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpID8gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkg
OiB0YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKVtjdXJyZW50TGF5ZXJJbmRleF07IH0KIAog
ICAgIGlubGluZSBib29sIGN1cnJlbnRMYXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJT
dXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJm
YWNlQ29udHJpYnV0ZXNUb1RhcmdldDxMYXllclR5cGU+KGN1cnJlbnRMYXllcigpLCB0YXJnZXRS
ZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKSk7IH0KICAgICBpbmxpbmUgYm9vbCBjdXJyZW50TGF5
ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRM
YXllckluZGV4ID09IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkxheWVySW5kZXhSZXBy
ZXNlbnRpbmdUYXJnZXRSZW5kZXJTdXJmYWNlOyB9CiAKLSAgICBpbmxpbmUgTGF5ZXJUeXBlKiB0
YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJldHVybiAoKnJlbmRlclN1cmZhY2VM
YXllckxpc3QpW3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4XS5nZXQoKTsgfQorICAgIGlu
bGluZSBMYXllclR5cGUqIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIGNvbnN0IHsgcmV0dXJu
ICgqcmVuZGVyU3VyZmFjZUxheWVyTGlzdClbdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhd
OyB9CiAgICAgaW5saW5lIFJlbmRlclN1cmZhY2VUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlKCkg
Y29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2Uo
KTsgfQotICAgIGlubGluZSBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgdGFyZ2V0
UmVuZGVyU3VyZmFjZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpLT5sYXllckxpc3QoKTsgfQorICAgIGlubGluZSBjb25zdCBWZWN0b3I8TGF5ZXJUeXBlKj4m
IHRhcmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRhcmdldFJlbmRl
clN1cmZhY2UoKS0+bGF5ZXJMaXN0KCk7IH0KIAogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTc2
LDcgKzc2LDcgQEAgc3RydWN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uIHsKICAgICAgICAgICAg
ICYmIGN1cnJlbnRMYXllckluZGV4ID09IG90aGVyLmN1cnJlbnRMYXllckluZGV4OwogICAgIH0K
IAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OworICAgIGNvbnN0IFZlY3RvcjxMYXllclR5cGUqPiogcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKICAgICBpbnQgdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXg7CiAgICAgaW50IGN1
cnJlbnRMYXllckluZGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKaW5kZXggNzUy
ODU1NDQ3MTdjZmRiNWE5YTJjZDNjYWY3ZGZkMzBjYjI3MTk2NC4uYzQzNGExZDk1MTI0NjM1NTM3
NzI3NjcyODIwOTA3M2VjNDlmMDBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKQEAg
LTI5NSw3ICsyOTUsNyBAQCB2b2lkIENDTGF5ZXJTb3J0ZXI6OmNyZWF0ZUdyYXBoTm9kZXMoTGF5
ZXJMaXN0OjppdGVyYXRvciBmaXJzdCwgTGF5ZXJMaXN0OjppdGVyYQogICAgIGZsb2F0IG1pblog
PSBGTFRfTUFYOwogICAgIGZsb2F0IG1heFogPSAtRkxUX01BWDsKICAgICBmb3IgKExheWVyTGlz
dDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmaXJzdDsgaXQgPCBsYXN0OyBpdCsrKSB7Ci0gICAgICAg
IG1fbm9kZXMuYXBwZW5kKEdyYXBoTm9kZShpdC0+Z2V0KCkpKTsKKyAgICAgICAgbV9ub2Rlcy5h
cHBlbmQoR3JhcGhOb2RlKCppdCkpOwogICAgICAgICBHcmFwaE5vZGUmIG5vZGUgPSBtX25vZGVz
LmF0KG1fbm9kZXMuc2l6ZSgpIC0gMSk7CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVy
U3VyZmFjZSA9IG5vZGUubGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgaWYgKCFub2Rl
LmxheWVyLT5kcmF3c0NvbnRlbnQoKSAmJiAhcmVuZGVyU3VyZmFjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJT
b3J0ZXIuaAppbmRleCAyYzMwZDVkYWU0YTA5OTBmNGMyMTRlMGVlZmQwNjAzNzRhNzFjYjk2Li44
YWI5Yjc1ODE0ZThjYzZmYTJlY2JiMWNiZGU4ODcxZDIxMzBjOTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clNvcnRlci5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXIgewogcHVibGlj
OgogICAgIENDTGF5ZXJTb3J0ZXIoKTsKIAotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDQ0xh
eWVySW1wbD4gPiBMYXllckxpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBM
YXllckxpc3Q7CiAKICAgICB2b2lkIHNvcnQoTGF5ZXJMaXN0OjppdGVyYXRvciBmaXJzdCwgTGF5
ZXJMaXN0OjppdGVyYXRvciBsYXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggNzBjOWM4MjJhODFiNzhkMjkyNTIwNjdjNDVlYWNmY2I2MmJhNjI1Ni4uNGIzNmExZDZi
Mzg5ODFlYWYzMWIyOWEyNTk5N2I5YTBkODUwYTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC0xNjcsMTIgKzE2Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5p
c2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAotICAgIC8vIFN5bmNocm9uaXpl
IHRyZWVzLCBpZiBvbmUgZXhpc3RzIGF0IGFsbC4uLgotICAgIGlmIChyb290TGF5ZXIoKSkKLSAg
ICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6
ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cm9vdExheWVyKCkpKTsKLSAgICBlbHNlCi0g
ICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7Ci0KKyAgICBob3N0SW1wbC0+c2V0Um9v
dExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhv
c3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCkpKTsKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJh
bWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMobV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKHZpZXdwb3J0U2l6ZSgpKTsKQEAgLTMzNywxMyArMzMyLDEwIEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaG9zdEltCiAgICAgLy8gSWYgdGhlIGZyb250YnVmZmVyIGlzIGNhY2hlZCwgdGhl
biBjbG9iYmVyIHRoZSBpbXBsIHRyZWUuIE90aGVyd2lzZSwKICAgICAvLyBwdXNoIG92ZXIgdGhl
IHRyZWUgY2hhbmdlcy4KICAgICBpZiAobV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLmNvbnRleHRIYXNDYWNoZWRGcm9udEJ1ZmZlcikgewotICAgICAgICBob3N0SW1wbC0+c2V0
Um9vdExheWVyKDApOworICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKG51bGxwdHIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChyb290TGF5ZXIoKSkKLSAgICAgICAgaG9z
dEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJv
b3RMYXllcigpLCBob3N0SW1wbC0+cm9vdExheWVyKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGhv
c3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7CisgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cmVs
ZWFzZVJvb3RMYXllcigpKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKQEAgLTU4MSw3ICs1
NzMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNs
ZWFyUGVuZGluZ1VwZGF0ZSgpCiB7CiAgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsg
c3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5n
ZXQoKTsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAg
ICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCBjMzgxMGFiMjc1YzNkMDE3Y2RmZDdjMDg0M2I0YTdjN2ZjYjk5NzA0Li4w
NmQzMzFlZmRjYzNkOWM1MDc5ODY4NTAxMjhhMzMwYTg3NzUyZTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtMTk5LDcgKzE5OSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlu
aXRpYWxpemUoKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBMYXllckxpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+
IExheWVyTGlzdDsKICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWFuYWdlZFRleHR1cmU+ID4g
VGV4dHVyZUxpc3Q7CiAKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCBiNGU3YmU0MTUyMjFj
MWY1ODhhNGU0OTc4NmJjZTIzMWQ3OTQ5NjI0Li44N2I2YmUzZjU2YWE4ODFmMTg4Y2Q3MTgxMmUy
ZjNjMjMzMDdjYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAKQEAgLTEwNyw5ICsxMDcsOSBAQCBib29sIGxheWVyU2hvdWxkQmVTa2lwcGVkKExheWVyVHlw
ZSogbGF5ZXIpCiAvLyBSZWN1cnNpdmVseSB3YWxrcyB0aGUgbGF5ZXIgdHJlZSBzdGFydGluZyBh
dCB0aGUgZ2l2ZW4gbm9kZSBhbmQgY29tcHV0ZXMgYWxsIHRoZQogLy8gbmVjZXNzYXJ5IHRyYW5z
Zm9ybWF0aW9ucywgY2xpcFJlY3RzLCByZW5kZXIgc3VyZmFjZXMsIGV0Yy4KIHRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIExh
eWVyU29ydGVyPgotc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIGxheWVy
TGlzdCwgTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCitzdGF0
aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXll
clR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVy
YXJjaHlNYXRyaXgsIFZlY3RvcjxMYXllclR5cGUqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
VmVjdG9yPExheWVyVHlwZSo+JiBsYXllckxpc3QsIExheWVyU29ydGVyKiBsYXllclNvcnRlciwg
aW50IG1heFRleHR1cmVTaXplKQogewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllclR5
cGU+ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPExheWVyVHlwZSo+IExheWVyTGlz
dDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIG5ldyBtYXRyaXggdHJhbnNm
b3JtYXRpb25zIHJlY3Vyc2l2ZWx5IGZvciB0aGlzCiAgICAgLy8gbGF5ZXIgYW5kIGFsbCBpdHMg
ZGVzY2VuZGFudHMuIEl0IGFsc28gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIHJlbmRlciBzdXJm
YWNlcy4KQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogLy8gdHJl
ZSBwYXNzLCByZXZpc2UgY2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdCgpIHNvIHRoYXQgdGhpcyBj
YW4gYmUgZG9uZSBpbiBhIHNpbmdsZQogLy8gcGFzcyBpbnNpZGUgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8PigpLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXN0YXRpYyB2b2lkIHdhbGtMYXllcnNB
bmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlw
ZT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3N0YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRD
YWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8TGF5ZXJUeXBlKj4mIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3Mg
Y2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENDTGF5ZXJJdGVyYXRvckFj
dGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwpAQCAtNDgyLDEzICs0ODIs
MTMgQEAgc3RhdGljIHZvaWQgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3Rz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXAKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJD
aHJvbWl1bSogbGF5ZXIsIExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1
bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckxp
c3QsIGludCBtYXhUZXh0dXJlU2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVu
dE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgs
IFZlY3RvcjxMYXllckNocm9taXVtKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxM
YXllckNocm9taXVtKj4mIGxheWVyTGlzdCwgaW50IG1heFRleHR1cmVTaXplKQogewogICAgIFdl
YkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVy
Q2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgdm9pZCo+KGxheWVyLCByb290TGF5ZXIs
IHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgbGF5ZXJMaXN0LCAwLCBtYXhUZXh0dXJlU2l6ZSk7CiAgICAgd2Fsa0xheWVyc0FuZENhbGN1
bGF0ZVZpc2libGVMYXllclJlY3RzPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxh
eWVyLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
cGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1h
dHJpeCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVy
KiBsYXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXplKQordm9pZCBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCog
bGF5ZXIsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5
TWF0cml4LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVj
dG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIs
IGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKICAgICBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbDxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVyU29y
dGVyPihsYXllciwgcm9vdExheWVyLCBwYXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwgbGF5ZXJTb3J0ZXIsIG1heFRleHR1
cmVTaXplKTsKICAgICB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8Q0NM
YXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCmluZGV4IDJlMGNiY2YyYzU4NWU4MjE1
ZDI4NmRlZTliNjFlNTM1MTgwY2ZmYWQuLmJmYmMzMjJhNmRmNDdiOWUwODUxZGFkYzMxZWYyNjI4
M2E3OTMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCkBAIC00
Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxl
UmVjdChjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5
ZXJCb3VuZFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJS
ZWN0KExheWVyVHlwZSopOwogCi0gICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qLCBMYXllckNocm9taXVtKiByb290TGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpOwotICAgIHN0YXRpYyB2b2lk
IGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCosIENDTGF5
ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRy
aXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0
b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8
UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0ZXIqLCBpbnQgbWF4
VGV4dHVyZVNpemUpOworICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShMYXllckNocm9taXVtKiwgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPExheWVyQ2hyb21pdW0qPiYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPExheWVyQ2hyb21pdW0qPiYgbGF5ZXJMaXN0LCBp
bnQgbWF4VGV4dHVyZVNpemUpOworICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCosIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NM
YXllclNvcnRlciosIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+IHN0YXRpYyBib29sIHJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0
KExheWVyVHlwZSosIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMDg4Mzc3Y2RkZDZhNzhhODdhZTQyMWI2MmIz
MTNkYTYyNTc4Y2JlMC4uOGNmM2I5MTc5NjY3YzE1MWViYWVmNGVmMWQ1YjE2OTk0NWY3YTdkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTQ5LDYgKzQ5LDcg
QEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCisgICAgLCBt
X3Njcm9sbExheWVySW1wbCgwKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1f
dmlzaWJsZSh0cnVlKQogICAgICwgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQpAQCAt
MTQ1LDcgKzE0Niw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JB
bGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciwKICAgICAvLyBkYW1hZ2UgcmVj
dC4gVGhlIHJvb3QgZGFtYWdlIHJlY3QgaXMgdGhlbiB1c2VkIHRvIHNjaXNzb3IgZWFjaCBzdXJm
YWNlLgogCiAgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAg
ICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJm
YWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF07CiAgICAgICAg
IENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVu
ZGVyU3VyZmFjZSgpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAgICAgICAgIHJl
bmRlclN1cmZhY2UtPmRhbWFnZVRyYWNrZXIoKS0+dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShy
ZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpLCByZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKTsKQEAgLTIxMCw3ICsyMTEsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiBwYXNzZXMpCiAgICAgbV9yb290RGFtYWdlUmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJm
YWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKIAogICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3Vy
ZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBDQ0xheWVySW1wbCog
cmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhd
LmdldCgpOworICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2Uq
IHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKIAog
ICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUo
cmVuZGVyU3VyZmFjZSk7CkBAIC0yMjIsNyArMjIzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzKQogCiAg
ICAgICAgIGNvbnN0IENDTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXll
ckxpc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRl
eCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgQ0NMYXll
ckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICAgICAg
Q0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdOwogICAgICAgICAgICAg
aWYgKGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCkBAIC0zMzIsNyArMzMzLDcgQEAgc3RhdGljIENDTGF5ZXJJbXBsKiBmaW5k
U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyKQogICAgIHJldHVybiAwOwogfQogCi12b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBsYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKFBhc3NPd25Q
dHI8Q0NMYXllckltcGw+IGxheWVyKQogewogICAgIG1fcm9vdExheWVySW1wbCA9IGxheWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNTY5ZDY5ZmEzZWQ2ODBm
YTUxN2U5OGIwYjFmNDU1NDkwMDg1NjQ0NS4uMjUyMjNjZjk1NGFkZTJlNTBhMmUyMjNjNjc5ZDYw
NjAxNTVmZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtOTIs
OSArOTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZGJhY2sodm9pZCogcGl4ZWxzLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc1Jl
ZlB0cjxDQ0xheWVySW1wbD4pOworICAgIHZvaWQgc2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NM
YXllckltcGw+KTsKKyAgICBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByZWxlYXNlUm9vdExheWVy
KCkgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLnJlbGVhc2UoKTsgfQogCi0gICAgQ0NMYXllcklt
cGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllckltcGwuZ2V0KCk7
IH0KKyAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bExheWVySW1wbDsgfQogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNp
YmxlOyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHBy
b3RlY3RlZDoKICAgICBpbnQgbV9mcmFtZU51bWJlcjsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gQ0NMYXllckxpc3Q7CisgICAgdHlwZWRlZiBW
ZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVyTGlzdDsKIAogICAgIHZvaWQgc2V0UGFnZVNjYWxl
RGVsdGEoZmxvYXQpOwogICAgIHZvaWQgYXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xsTGF5ZXIo
KTsKQEAgLTEzMiw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUgY29udGVudFNpemUo
KSBjb25zdDsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5k
ZXJlcjsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IG1fc2Nyb2xsTGF5ZXJJbXBsOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gbV9yb290TGF5ZXJJbXBsOworICAgIENDTGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsK
ICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsK
ICAgICBib29sIG1fdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCmluZGV4
IDM5YTk1OTUxZGRmM2JjOWY0NDk3NTQ0MjcyMjllNWM1OTNjMjg3YzcuLjlkOWE0ZGQxMDRlOTky
MzgwNDhjYzNjNTZkYjExYzgzOGEwY2NkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllcklt
cGwuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUGx1
Z2luTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ1BsdWdpbkxheWVySW1wbD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1BsdWdpbkxheWVySW1wbD4gY3JlYXRlKGludCBpZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NQbHVnaW5MYXllckltcGwoaWQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1BsdWdpbkxheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2
aXJ0dWFsIH5DQ1BsdWdpbkxheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5o
CmluZGV4IGFiODM4NmQ1ZGEyM2ZhNzEwMzA1N2FmMTE0MDdiNDlhNGE1YjU2MzAuLmNjN2E0MGMy
OTcwY2NmNGJkMWRmMzY4NzYxMzVlYjFiNTZjZWZiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHNraXBzRHJhdygpIGNv
bnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAKICAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkg
eyBtX2xheWVyTGlzdC5jbGVhcigpOyB9Ci0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4g
PiYgbGF5ZXJMaXN0KCkgeyByZXR1cm4gbV9sYXllckxpc3Q7IH0KKyAgICBWZWN0b3I8Q0NMYXll
ckltcGwqPiYgbGF5ZXJMaXN0KCkgeyByZXR1cm4gbV9sYXllckxpc3Q7IH0KIAogICAgIHZvaWQg
c2V0TWFza0xheWVyKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNr
TGF5ZXI7IH0KIApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX29yaWdpblRyYW5zZm9ybTsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDQ0xheWVySW1wbD4gPiBtX2xheWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllcklt
cGwqPiBtX2xheWVyTGlzdDsKIAogICAgIE93blB0cjxDQ0RhbWFnZVRyYWNrZXI+IG1fZGFtYWdl
VHJhY2tlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBj
N2VkYzE4YjJjMjg0YzIyOGE5MjE1N2E2YTk3YzE5MzQ1YjhmYjdmLi4yZTc0NDE2NjZmOTlmMzY5
ODE5MjU0YTBjNDU3MGM3ZDY2ZDZiY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JM
YXllckltcGwuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07
CiAKIGNsYXNzIENDU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBjcmVh
dGUoaW50IGlkKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29saWRDb2xvckxheWVySW1wbD4g
Y3JlYXRlKGludCBpZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxh
eWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggN2FkNzE1OTli
MjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQxZWEwNjhiMC4uN2U2MzdjZmZiNGNjN2JmN2JkYWFmOWQ2
MDliZDJhMzU2MTQ5ZmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtMzcs
OSArMzcsOSBAQCBjbGFzcyBEcmF3YWJsZVRpbGU7CiAKIGNsYXNzIENDVGlsZWRMYXllckltcGwg
OiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEND
VGlsZWRMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY3JlYXRlKGludCBpZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ0NUaWxlZExheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGlsZWRMYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExh
eWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggMTgyZjdiNTgy
N2M5MWNiZmZlZTVkM2JhZWFkMTA4NTFmNmZmYmE5NS4uZmMxYjBkMDhmM2U4OWE1ZTJmMDFjNGRl
MjZhMzIwNWY5NTY5OTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNDAs
OSArNDAsOSBAQCB0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTaGFkZXIsIGNsYXNzIEZyYWdtZW50U2hh
ZGVyPiBjbGFzcyBQcm9ncmFtQmluZGluZzsKIGNsYXNzIENDVmlkZW9MYXllckltcGwgOiBwdWJs
aWMgQ0NMYXllckltcGwKICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgVmlkZW9GcmFt
ZVByb3ZpZGVyOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDVmlk
ZW9MYXllckltcGw+IGNyZWF0ZShpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NWaWRlb0xheWVySW1wbD4gY3JlYXRlKGludCBpZCwg
VmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ0NWaWRlb0xheWVySW1wbChpZCwgcHJvdmlkZXIpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ1ZpZGVvTGF5ZXJJbXBsKGlkLCBwcm92aWRlcikpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IGE5ZjdiMWMxYTFl
ODlmMWRiY2Y5ZjUwMzM0YzA1ZjNhMTMzZTAzOGEuLjQ3MjRjYTBhZjk0ZjAzNjQ1ZDAwZTNjNjYy
MThmOTMzM2ZiNmMyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcApAQCAtMzksMTEgKzM5LDExIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXRUZXN0czsKIAogbmFtZXNwYWNlIHsKIAotdm9pZCBleGVjdXRlQ2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiByb290LCBWZWN0b3I8UmVm
UHRyPENDTGF5ZXJJbXBsPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBleGVjdXRl
Q2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiByb290LCBW
ZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICBDQ0xh
eWVyU29ydGVyIGxheWVyU29ydGVyOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OwotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gZHVtbXlMYXllckxpc3Q7
CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7CiAKICAgICAvLyBTYW5pdHkgY2hlY2s6IFRoZSB0ZXN0IGl0
c2VsZiBzaG91bGQgY3JlYXRlIHRoZSByb290IGxheWVyJ3MgcmVuZGVyIHN1cmZhY2UsIHNvCkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShDQ0xheWVySW1wbCog
cm9vdCkKICAgICAvLyAgIDIuIHVwZGF0aW5nIGFsbCBkYW1hZ2UgdHJhY2tlcnMgaW4gdGhlIGNv
cnJlY3Qgb3JkZXIKICAgICAvLyAgIDMuIHJlc2V0dGluZyBhbGwgdXBkYXRlUmVjdHMgYW5kIHBy
b3BlcnR5Q2hhbmdlZCBmbGFncyBmb3IgYWxsIGxheWVycyBhbmQgc3VyZmFjZXMuCiAKLSAgICBW
ZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAg
VmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBleGVjdXRl
Q2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogCiAgICAgLy8gSXRlcmF0ZSBiYWNrLXRvLWZyb250LCBzbyB0aGF0IGRhbWFn
ZSBjb3JyZWN0bHkgcHJvcGFnYXRlcyBmcm9tIGRlc2NlbmRhbnQgc3VyZmFjZXMgdG8gYW5jZXN0
b3JzLgpAQCAtNzYsMTAgKzc2LDEwIEBAIHZvaWQgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShDQ0xh
eWVySW1wbCogcm9vdCkKICAgICByb290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJl
ZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhPbmVT
dXJmYWNlKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMik7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgyKTsKIAogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAg
ICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKQEAgLTkyLDIyICs5
MiwyMiBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhPbmVTdXJm
YWNlKCkKICAgICBjaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUoMzAsIDMwKSk7CiAgICAgY2hpbGQtPnNldERyYXdz
Q29udGVudCh0cnVlKTsKLSAgICByb290LT5hZGRDaGlsZChjaGlsZCk7CisgICAgcm9vdC0+YWRk
Q2hpbGQoY2hpbGQucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiByb290LnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMo
KQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMo
KQogewogICAgIC8vIFRoaXMgdGVzdCB0cmVlIGhhcyB0d28gcmVuZGVyIHN1cmZhY2VzOiBvbmUg
Zm9yIHRoZSByb290LCBhbmQgb25lIGZvcgogICAgIC8vIGNoaWxkMS4gQWRkaXRpb25hbGx5LCB0
aGUgcm9vdCBoYXMgYSBzZWNvbmQgY2hpbGQgbGF5ZXIsIGFuZCBjaGlsZDEgaGFzIHR3bwogICAg
IC8vIGNoaWxkcmVuIG9mIGl0cyBvd24uCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQx
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxk
MiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFu
ZENoaWxkMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBncmFuZENoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CisgICAgT3duUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXll
ckltcGw+IGNoaWxkMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7CisgICAgT3duUHRyPENDTGF5
ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwogCiAg
ICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICByb290LT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtMTM3LDE3ICsxMzcsMTcgQEAgUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKQogICAg
IGdyYW5kQ2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CiAgICAgZ3JhbmRDaGlsZDIt
PnNldERyYXdzQ29udGVudCh0cnVlKTsKIAotICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3JhbmRDaGls
ZDEpOwotICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDIpOwotICAgIHJvb3QtPmFkZENo
aWxkKGNoaWxkMSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQyKTsKKyAgICBjaGlsZDEtPmFk
ZENoaWxkKGdyYW5kQ2hpbGQxLnJlbGVhc2UoKSk7CisgICAgY2hpbGQxLT5hZGRDaGlsZChncmFu
ZENoaWxkMi5yZWxlYXNlKCkpOworICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMS5yZWxlYXNlKCkp
OworICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMi5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHJv
b3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRV
cFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRl
QW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IHJvb3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwogCiAgICAg
Ly8gU2V0dXAgaW5jbHVkZXMgZ29pbmcgcGFzdCB0aGUgZmlyc3QgZnJhbWUgd2hpY2ggYWx3YXlz
IGRhbWFnZXMgZXZlcnl0aGluZywgc28KICAgICAvLyB0aGF0IHdlIGNhbiBhY3R1YWxseSBwZXJm
b3JtIHNwZWNpZmljIHRlc3RzLgpAQCAtMTU2LDkgKzE1Niw5IEBAIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiAgICAgcmV0dXJu
IHJvb3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKQogewotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsK
IAogICAgIC8vIFNldHVwIGluY2x1ZGVzIGdvaW5nIHBhc3QgdGhlIGZpcnN0IGZyYW1lIHdoaWNo
IGFsd2F5cyBkYW1hZ2VzIGV2ZXJ5dGhpbmcsIHNvCiAgICAgLy8gdGhhdCB3ZSBjYW4gYWN0dWFs
bHkgcGVyZm9ybSBzcGVjaWZpYyB0ZXN0cy4KQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKQogICAg
IC8vIFNhbml0eSBjaGVjayB0aGF0IHRoZSBzaW1wbGUgdGVzdCB0cmVlIHdpbGwgYWN0dWFsbHkg
cHJvZHVjZSB0aGUgZXhwZWN0ZWQgcmVuZGVyCiAgICAgLy8gc3VyZmFjZXMgYW5kIGxheWVyIGxp
c3RzLgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3Jl
YXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CiAKICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PigyKSwgcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKS5z
aXplKCkpOwogICAgIEVYUEVDVF9FUSgxLCByb290LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlz
dCgpWzBdLT5pZCgpKTsKQEAgLTE5MywxMCArMTkzLDEwIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNr
ZXJUZXN0LCBzYW5pdHlDaGVja1Rlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKQogICAgIC8vIFNhbml0
eSBjaGVjayB0aGF0IHRoZSBjb21wbGV4IHRlc3QgdHJlZSB3aWxsIGFjdHVhbGx5IHByb2R1Y2Ug
dGhlIGV4cGVjdGVkIHJlbmRlcgogICAgIC8vIHN1cmZhY2VzIGFuZCBsYXllciBsaXN0cy4KIAot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRo
VHdvU3VyZmFjZXMoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBj
aGlsZDIgPSByb290LT5jaGlsZHJlbigpWzFdOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDIgPSByb290
LT5jaGlsZHJlbigpWzFdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3QgPSBj
aGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVj
dCgpOwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdCA9IHJvb3QtPnJlbmRlclN1cmZhY2Uo
KS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwogCkBAIC0yMTIsOCArMjEy
LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHNhbml0eUNoZWNrVGVzdFRyZWVXaXRo
VHdvU3VyZmFjZXMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VG
b3JVcGRhdGVSZWN0cykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVB
bmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVy
SW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCiAgICAgLy8gQ0FTRSAx
OiBTZXR0aW5nIHRoZSB1cGRhdGUgcmVjdCBzaG91bGQgY2F1c2UgdGhlIGNvcnJlc3BvbmRpbmcg
ZGFtYWdlIHRvIHRoZSBzdXJmYWNlLgogICAgIC8vCkBAIC0yNDMsOCArMjQzLDggQEAgVEVTVF9G
KENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclVwZGF0ZVJlY3RzKQogCiBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUHJvcGVydHlDaGFuZ2VzKQog
ewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVX
aXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSByb290LT5j
aGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IHJv
b3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBDQVNFIDE6IFRoZSBsYXllcidzIHBy
b3BlcnR5IGNoYW5nZWQgZmxhZyB0YWtlcyBwcmlvcml0eSBvdmVyIHVwZGF0ZSByZWN0LgogICAg
IC8vCkBAIC0yODQsOCArMjg0LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlm
eURhbWFnZUZvclRyYW5zZm9ybWVkTGF5ZXIpCiAgICAgLy8gSWYgYSBsYXllciBpcyB0cmFuc2Zv
cm1lZCwgdGhlIGRhbWFnZSByZWN0IHNob3VsZCBzdGlsbCBlbmNsb3NlIHRoZSBlbnRpcmUKICAg
ICAvLyB0cmFuc2Zvcm1lZCBsYXllci4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAg
IENDTGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByb3RhdGlvbjsKICAgICByb3RhdGlvbi5yb3RhdGUoNDUpOwpA
QCAtMzE3LDEwICszMTcsMTEgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURh
bWFnZUZvclRyYW5zZm9ybWVkTGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1vdmluZ0xheWVyKQogewotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVsw
XS5nZXQoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgzKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wQ2hpbGQyID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgzKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQyID0gb3BDaGlsZDIuZ2V0KCk7
CiAgICAgY2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQwMCwgMzgwKSk7CiAgICAgY2hp
bGQyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGNoaWxkMi0+c2V0
Qm91bmRzKEludFNpemUoNiwgOCkpOwpAQCAtMzI4LDcgKzMyOSw3IEBAIFRFU1RfRihDQ0RhbWFn
ZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1vdmluZ0xheWVyKQogCiAg
ICAgLy8gQ0FTRSAxOiBBZGRpbmcgYSBuZXcgbGF5ZXIgc2hvdWxkIGNhdXNlIHRoZSBhcHByb3By
aWF0ZSBkYW1hZ2UuCiAgICAgLy8KLSAgICByb290LT5hZGRDaGlsZChjaGlsZDIpOworICAgIHJv
b3QtPmFkZENoaWxkKG9wQ2hpbGQyLnJlbGVhc2UoKSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVG
cmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIFNhbml0eSBjaGVjayAtIGFsbCAzIGxheWVycyBz
aG91bGQgYmUgb24gdGhlIHNhbWUgcmVuZGVyIHN1cmZhY2U7IHJlbmRlciBzdXJmYWNlcyBhcmUg
dGVzdGVkIGVsc2V3aGVyZS4KQEAgLTM1MywxNSArMzU0LDE2IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1vdmluZ0xheWVyKQogCiBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTXVsdGlwbGVMYXllcnMpCiB7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdp
dGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5j
aGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGls
ZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BD
aGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDIg
PSBvcENoaWxkMi5nZXQoKTsKICAgICBjaGlsZDItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNDAw
LCAzODApKTsKICAgICBjaGlsZDItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7
CiAgICAgY2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CiAgICAgY2hpbGQyLT5zZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQyKTsKKyAgICByb290
LT5hZGRDaGlsZChvcENoaWxkMi5yZWxlYXNlKCkpOwogCiAgICAgLy8gSW4gdGhpcyB0ZXN0IHdl
IGRvbid0IHdhbnQgdGhlIGFib3ZlIHRyZWUgbWFuaXB1bGF0aW9uIHRvIGJlIGNvbnNpZGVyZWQg
cGFydCBvZiB0aGUgc2FtZSBmcmFtZS4KICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3Qu
Z2V0KCkpOwpAQCAtMzc4LDEwICszODAsMTAgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvck11bHRpcGxlTGF5ZXJzKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2Vy
VGVzdCwgdmVyaWZ5RGFtYWdlRm9yTmVzdGVkU3VyZmFjZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV07Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0tPmNo
aWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDIgPSByb290
LT5jaGlsZHJlbigpWzFdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMSA9IHJv
b3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0IGNo
aWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7CiAKQEAgLTQxNSw5
ICs0MTcsOSBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yU3Vy
ZmFjZUNoYW5nZUZyb21EZXNjZW5kYW50TGF5ZXIpCiAgICAgLy8gVGhpcyBpcyBhIHRyaWNreSBj
YXNlLCBzaW5jZSBvbmx5IHRoZSBmaXJzdCBncmFuZENoaWxkIGNoYW5nZXMsIGJ1dCB0aGUgZW50
aXJlCiAgICAgLy8gc3VyZmFjZSBzaG91bGQgYmUgbWFya2VkIGRpcnR5LgogCi0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNl
cygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVsw
XTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4o
KVswXS0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVh
dGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNo
aWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5k
Q2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBG
bG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsK
IApAQCAtNDQ3LDkgKzQ0OSw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlE
YW1hZ2VGb3JTdXJmYWNlQ2hhbmdlRnJvbUFuY2VzdG9yTGF5ZXIpCiAgICAgLy8gICAgICAgIHNo
b3VsZCBiZSBjb21wbGV0ZWx5IHVuY2hhbmdlZCwgc2luY2Ugd2UgYXJlIG9ubHkgdHJhbnNmb3Jt
aW5nIGl0LCB3aGlsZSB0aGUKICAgICAvLyAgICAgICAgcm9vdCBzdXJmYWNlIHdvdWxkIGJlIGRh
bWFnZWQgYXBwcm9wcmlhdGVseS4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF07Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhU
d29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigp
WzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0
IHJvb3REYW1hZ2VSZWN0OwogCkBAIC00NjksOCArNDcwLDggQEAgVEVTVF9GKENDRGFtYWdlVHJh
Y2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclN1cmZhY2VDaGFuZ2VGcm9tQW5jZXN0b3JMYXllcikK
IAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJl
bW92aW5nUmVuZGVyU3VyZmFjZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0g
Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Cisg
ICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAg
RmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7
CiAKQEAgLTUxMCw4ICs1MTEsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5
RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdSZW5kZXJTdXJmYWNlcykKIAogVEVTVF9GKENDRGFt
YWdlVHJhY2tlclRlc3QsIHZlcmlmeU5vRGFtYWdlV2hlbk5vdGhpbmdDaGFuZ2VkKQogewotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxk
cmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBU
ZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290
LT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAg
ICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC01MzQsOCArNTM1LDggQEAgVEVTVF9G
KENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeU5vRGFtYWdlV2hlbk5vdGhpbmdDaGFuZ2VkKQog
CiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5Tm9EYW1hZ2VGb3JVcGRhdGVSZWN0
VGhhdERvZXNOb3REcmF3Q29udGVudCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsK
KyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAg
ICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVj
dDsKIApAQCAtNTUxLDEwICs1NTIsMTAgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZl
cmlmeU5vRGFtYWdlRm9yVXBkYXRlUmVjdFRoYXREb2VzTm90RHJhd0NvbnRlbnQpCiAKIFRFU1Rf
RihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogewotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3Vy
ZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVu
KClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hp
bGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQyID0gY2hpbGQx
LT5jaGlsZHJlbigpWzFdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQx
ID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGls
ZDEgPSBjaGlsZDEtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5k
Q2hpbGQyID0gY2hpbGQxLT5jaGlsZHJlbigpWzFdLmdldCgpOwogCiAgICAgLy8gRGFtYWdlIG9u
IGEgc3VyZmFjZSB0aGF0IGhhcyBhIHJlZmxlY3Rpb24gc2hvdWxkIGNhdXNlIHRoZSB0YXJnZXQg
c3VyZmFjZSB0bwogICAgIC8vIHJlY2VpdmUgdGhlIHN1cmZhY2UncyBkYW1hZ2UgYW5kIHRoZSBz
dXJmYWNlJ3MgcmVmbGVjdGVkIGRhbWFnZS4KQEAgLTU2MywyNCArNTY0LDI2IEBAIFRFU1RfRihD
Q0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogICAgIC8vIG9mIGNo
aWxkMSdzIHN1cmZhY2UuIFRoaXMgd2F5LCB3ZSBjYW4gdGVzdCByZWZsZWN0aW9uIGNoYW5nZXMg
d2l0aG91dCBjaGFuZ2luZwogICAgIC8vIGNvbnRlbnRCb3VuZHMgb2YgdGhlIHN1cmZhY2UuCiAg
ICAgZ3JhbmRDaGlsZDItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTgwLCAxODApKTsKLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQzID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2KTsK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wR3JhbmRDaGlsZDMgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDYpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMyA9IG9wR3JhbmRDaGlsZDMuZ2V0
KCk7CiAgICAgZ3JhbmRDaGlsZDMtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMjQwLCAyNDApKTsK
ICAgICBncmFuZENoaWxkMy0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBncmFuZENoaWxkMy0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgZ3JhbmRDaGls
ZDMtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICBjaGlsZDEtPnNldE9wYWNpdHkoMC41KTsK
LSAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQzKTsKKyAgICBjaGlsZDEtPmFkZENoaWxk
KG9wR3JhbmRDaGlsZDMucmVsZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJv
b3QuZ2V0KCkpOwogCiAgICAgLy8gQ0FTRSAxOiBhZGRpbmcgYSByZWZsZWN0aW9uIGFib3V0IHRo
ZSBsZWZ0IGVkZ2Ugb2YgZ3JhbmRDaGlsZDEuCiAgICAgLy8KLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNyk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoNyk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxUmVwbGljYSA9IG9wR3JhbmRDaGls
ZDFSZXBsaWNhLmdldCgpOwogICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludDo6emVybygpKTsKICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVmbGVjdGlv
bjsKICAgICByZWZsZWN0aW9uLnNjYWxlM2QoLTEuMCwgMS4wLCAxLjApOwogICAgIGdyYW5kQ2hp
bGQxUmVwbGljYS0+c2V0VHJhbnNmb3JtKHJlZmxlY3Rpb24pOwotICAgIGdyYW5kQ2hpbGQxLT5z
ZXRSZXBsaWNhTGF5ZXIoZ3JhbmRDaGlsZDFSZXBsaWNhKTsKKyAgICBncmFuZENoaWxkMS0+c2V0
UmVwbGljYUxheWVyKG9wR3JhbmRDaGlsZDFSZXBsaWNhLnJlbGVhc2UoKSk7CiAgICAgZW11bGF0
ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIEZsb2F0UmVjdCBncmFuZENoaWxk
RGFtYWdlUmVjdCA9IGdyYW5kQ2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIo
KS0+Y3VycmVudERhbWFnZVJlY3QoKTsKQEAgLTYxNCw3ICs2MTcsNyBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKIAogICAgIC8vIENBU0UgMzog
cmVtb3ZpbmcgdGhlIHJlZmxlY3Rpb24gc2hvdWxkIGNhdXNlIHRoZSBlbnRpcmUgcmVnaW9uIGlu
Y2x1ZGluZyByZWZsZWN0aW9uCiAgICAgLy8gICAgICAgICB0byBkYW1hZ2UgdGhlIHRhcmdldCBz
dXJmYWNlLgotICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIoMCk7CisgICAgZ3JhbmRD
aGlsZDEtPnNldFJlcGxpY2FMYXllcihudWxscHRyKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZy
YW1lKHJvb3QuZ2V0KCkpOwogICAgIEFTU0VSVF9FUShvbGRDb250ZW50UmVjdC53aWR0aCgpLCBj
aGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKS53aWR0aCgpKTsKICAgICBBU1NF
UlRfRVEob2xkQ29udGVudFJlY3QuaGVpZ2h0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5j
b250ZW50UmVjdCgpLmhlaWdodCgpKTsKQEAgLTYyOSwyNyArNjMyLDI5IEBAIFRFU1RfRihDQ0Rh
bWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogCiBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKIHsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdl
dCgpOwogCiAgICAgLy8gSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRhbWFn
ZSB0cmFja2VyLCBjaGFuZ2VzIHRvIG1hc2sgbGF5ZXJzIHNob3VsZAogICAgIC8vIGRhbWFnZSB0
aGUgZW50aXJlIGNvcnJlc3BvbmRpbmcgc3VyZmFjZS4KIAogICAgIC8vIFNldCB1cCB0aGUgbWFz
ayBsYXllci4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllciA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcE1hc2tMYXllciA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgQ0NMYXllckltcGwqIG1hc2tMYXllciA9IG9wTWFza0xh
eWVyLmdldCgpOwogICAgIG1hc2tMYXllci0+c2V0UG9zaXRpb24oY2hpbGQtPnBvc2l0aW9uKCkp
OwogICAgIG1hc2tMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBtYXNrTGF5ZXItPnNldEJvdW5kcyhjaGlsZC0+Ym91bmRzKCkpOwotICAgIGNoaWxkLT5zZXRN
YXNrTGF5ZXIobWFza0xheWVyKTsKKyAgICBjaGlsZC0+c2V0TWFza0xheWVyKG9wTWFza0xheWVy
LnJlbGVhc2UoKSk7CiAKICAgICAvLyBBZGQgb3BhY2l0eSBhbmQgYSBncmFuZENoaWxkIHNvIHRo
YXQgdGhlIHJlbmRlciBzdXJmYWNlIHBlcnNpc3RzIGV2ZW4gYWZ0ZXIgd2UgcmVtb3ZlIHRoZSBt
YXNrLgogICAgIGNoaWxkLT5zZXRPcGFjaXR5KDAuNSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBncmFuZENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsKKyAgICBPd25QdHI8Q0NMYXll
ckltcGw+IG9wR3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgQ0NMYXll
ckltcGwqIGdyYW5kQ2hpbGQgPSBvcEdyYW5kQ2hpbGQuZ2V0KCk7CiAgICAgZ3JhbmRDaGlsZC0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLjAsIDIuMCkpOwogICAgIGdyYW5kQ2hpbGQtPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgZ3JhbmRDaGlsZC0+c2V0Qm91bmRz
KEludFNpemUoMiwgMikpOwogICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsK
LSAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKG9w
R3JhbmRDaGlsZC5yZWxlYXNlKCkpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5n
ZXQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBhIG5ldyBzdXJmYWNlIHdhcyBjcmVh
dGVkIGZvciB0aGUgY2hpbGQuCkBAIC02ODUsNyArNjkwLDcgQEAgVEVTVF9GKENDRGFtYWdlVHJh
Y2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck1hc2spCiAgICAgRVhQRUNUX1RSVUUoY2hpbGREYW1h
Z2VSZWN0LmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGVuIHRlc3QgbWFzayByZW1vdmFsLgotICAg
IGNoaWxkLT5zZXRNYXNrTGF5ZXIoMCk7CisgICAgY2hpbGQtPnNldE1hc2tMYXllcihudWxscHRy
KTsKICAgICBBU1NFUlRfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CiAgICAg
ZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIApAQCAtNjk4LDI4ICs3MDMsMzAg
QEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck1hc2spCiAKIFRF
U1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFzaykKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5j
aGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSBjaGls
ZDEtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRl
QW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGls
ZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENo
aWxkMSA9IGNoaWxkMS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIC8vIENoYW5nZXMgdG8g
YSByZXBsaWNhJ3MgbWFzayBzaG91bGQgbm90IGRhbWFnZSB0aGUgb3JpZ2luYWwgc3VyZmFjZSwg
YmVjYXVzZSBpdCBpcwogICAgIC8vIG5vdCBtYXNrZWQuIEJ1dCBpdCBkb2VzIGRhbWFnZSB0aGUg
YW5jZXN0b3IgdGFyZ2V0IHN1cmZhY2UuCiAKICAgICAvLyBDcmVhdGUgYSByZWZsZWN0aW9uIGFi
b3V0IHRoZSBsZWZ0IGVkZ2Ugb2YgZ3JhbmRDaGlsZDEuCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBncmFuZENoaWxkMVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDYpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gb3BHcmFuZENoaWxkMVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDYpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMVJlcGxpY2EgPSBvcEdyYW5kQ2hpbGQx
UmVwbGljYS5nZXQoKTsKICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQ6Onplcm8oKSk7CiAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247
CiAgICAgcmVmbGVjdGlvbi5zY2FsZTNkKC0xLjAsIDEuMCwgMS4wKTsKICAgICBncmFuZENoaWxk
MVJlcGxpY2EtPnNldFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKLSAgICBncmFuZENoaWxkMS0+c2V0
UmVwbGljYUxheWVyKGdyYW5kQ2hpbGQxUmVwbGljYSk7CisgICAgZ3JhbmRDaGlsZDEtPnNldFJl
cGxpY2FMYXllcihvcEdyYW5kQ2hpbGQxUmVwbGljYS5yZWxlYXNlKCkpOwogCiAgICAgLy8gU2V0
IHVwIHRoZSBtYXNrIGxheWVyIG9uIHRoZSByZXBsaWNhIGxheWVyCi0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByZXBsaWNhTWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IG9wUmVwbGljYU1hc2tMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoNyk7CisgICAgQ0NMYXllckltcGwqIHJlcGxpY2FNYXNrTGF5ZXIgPSBvcFJlcGxpY2FNYXNr
TGF5ZXIuZ2V0KCk7CiAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2lu
dDo6emVybygpKTsKICAgICByZXBsaWNhTWFza0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogICAgIHJlcGxpY2FNYXNrTGF5ZXItPnNldEJvdW5kcyhncmFuZENoaWxk
MS0+Ym91bmRzKCkpOwotICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0TWFza0xheWVyKHJlcGxp
Y2FNYXNrTGF5ZXIpOworICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0TWFza0xheWVyKG9wUmVw
bGljYU1hc2tMYXllci5yZWxlYXNlKCkpOwogCiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShy
b290LmdldCgpKTsKIApAQCAtNzM4LDcgKzc0NSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFzaykKIAogICAgIC8vIENBU0UgMjogcmVtb3Zp
bmcgdGhlIHJlcGxpY2EgbWFzayBkYW1hZ2VzIG9ubHkgdGhlIHJlZmxlY3RlZCByZWdpb24gb24g
dGhlIHRhcmdldCBzdXJmYWNlLgogICAgIC8vCi0gICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRN
YXNrTGF5ZXIoMCk7CisgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIobnVsbHB0
cik7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIGdyYW5k
Q2hpbGREYW1hZ2VSZWN0ID0gZ3JhbmRDaGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJh
Y2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpAQCAtNzUwLDggKzc1Nyw4IEBAIFRFU1RfRihD
Q0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFzaykKIAogVEVTVF9G
KENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZVdoZW5SZXNldCkKIHsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZh
Y2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVsw
XTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVl
V2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJl
bigpWzBdLmdldCgpOwogCiAgICAgLy8gQ2FzZSAxOiBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHdo
ZW4gdGhlIHRyYWNrZXIgaXMgZm9yY2VkIHRvIGhhdmUgZnVsbCBkYW1hZ2UsIHRoYXQKICAgICAv
LyAgICAgICAgIGl0IHRha2VzIHByaW9yaXR5IG92ZXIgYW55IG90aGVyIHBhcnRpYWwgZGFtYWdl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3Bw
CmluZGV4IDI3NzI4Y2JlZjBlM2IzMTg3OTNkMGRkYzEwZmMzN2FkNjBmMTdkN2QuLjBkY2JlMmE3
ZWI0N2U2YWRiODVjMDYxZGJmNTU0MDZjZjg3YTdkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTY1LDE0ICs2NSwxMyBAQCBU
RVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5
KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzZXRJbXBsVGhyZWFkOwogCiAgICAgLy8g
Q3JlYXRlIGEgc2ltcGxlIENDTGF5ZXJJbXBsIHRyZWU6Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGdyYW5kQ2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIHJvb3QtPmFkZENoaWxk
KGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7Ci0KLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBkdW1teVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsK
KyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSBvcENoaWxkLmdldCgpOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gb3BHcmFuZENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBDQ0xh
eWVySW1wbCogZ3JhbmRDaGlsZCA9IG9wR3JhbmRDaGlsZC5nZXQoKTsKKyAgICByb290LT5hZGRD
aGlsZChvcENoaWxkLnJlbGVhc2UoKSk7CisgICAgY2hpbGQtPmFkZENoaWxkKG9wR3JhbmRDaGls
ZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gQWRkaW5nIGNoaWxkcmVuIGlzIGFuIGludGVybmFsIG9w
ZXJhdGlvbiBhbmQgc2hvdWxkIG5vdCBtYXJrIGxheWVycyBhcyBjaGFuZ2VkLgogICAgIEVYUEVD
VF9GQUxTRShyb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKQEAgLTkyLDExICs5MSwxMSBA
QCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Bl
cmx5KQogICAgIC8vIENoYW5naW5nIHRoZXNlIHByb3BlcnRpZXMgYWZmZWN0cyB0aGUgZW50aXJl
IHN1YnRyZWUgb2YgbGF5ZXJzLgogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5RmxvYXRQb2ludCkpOwogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5jaG9yUG9pbnRaKGFyYml0
cmFyeU51bWJlcikpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza0xheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoNCkpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tzVG9C
b3VuZHModHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0T3BhcXVlKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldE9wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNh
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRSZXBs
aWNhTGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSg1KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5RmxvYXRQb2ludCkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UHJlc2Vy
dmVzM0QodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwpAQCAtMTMxLDkgKzEzMCw3IEBA
IFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVy
bHkpCiAgICAgLy8gbm90IGNhdXNlIGFueSBjaGFuZ2UuCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5Rmxv
YXRQb2ludCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKLSAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrTGF5ZXIoZHVtbXlN
YXNrKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9v
dC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UmVwbGljYUxheWVyKGR1bW15UmVwbGljYSkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFBv
c2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7CiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VHJhbnNmb3Jt
KGFyYml0cmFyeVRyYW5zZm9ybSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKaW5kZXggYmZmN2UxYmE5NzExNDU2OGNhYmUz
OTZjZmFlNzc0NmYwNzM0MDk4ZS4uNTEyZGYwZTg3NTk4NTYwOGIxZTYxZjI2YWFmMWRkOWY0MWQ3
YjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRl
cmF0b3JUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJ
dGVyYXRvclRlc3QuY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgcHJpdmF0ZToKIHR5cGVkZWYgQ0NM
YXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IEZyb250VG9CYWNrOwogdHlwZWRlZiBDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVy
SXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQmFja1RvRnJvbnQ7CiAKLXZvaWQgcmVzZXRD
b3VudHMoVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KQordm9pZCByZXNldENvdW50cyhWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KQogewogICAgIGZvciAodW5zaWduZWQgc3VyZmFjZUluZGV4ID0gMDsgc3Vy
ZmFjZUluZGV4IDwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4
KSB7Ci0gICAgICAgIFRlc3RMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBzdGF0
aWNfY2FzdDxUZXN0TGF5ZXJDaHJvbWl1bSo+KHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKSk7CisgICAgICAgIFRlc3RMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5ZXIgPSBzdGF0aWNfY2FzdDxUZXN0TGF5ZXJDaHJvbWl1bSo+KHJlbmRlclN1cmZhY2VMYXll
ckxpc3Rbc3VyZmFjZUluZGV4XSk7CiAgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVu
ZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogCiAgICAg
ICAgIHJlbmRlclN1cmZhY2VMYXllci0+bV9jb3VudFJlcHJlc2VudGluZ1RhcmdldFN1cmZhY2Ug
PSAtMTsKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAgICAgIHJlbmRlclN1
cmZhY2VMYXllci0+bV9jb3VudFJlcHJlc2VudGluZ0l0c2VsZiA9IC0xOwogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXggPCByZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKS5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgVGVzdExheWVy
Q2hyb21pdW0qIGxheWVyID0gc3RhdGljX2Nhc3Q8VGVzdExheWVyQ2hyb21pdW0qPihyZW5kZXJT
dXJmYWNlLT5sYXllckxpc3QoKVtsYXllckluZGV4XS5nZXQoKSk7CisgICAgICAgICAgICBUZXN0
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxUZXN0TGF5ZXJDaHJvbWl1bSo+KHJl
bmRlclN1cmZhY2UtPmxheWVyTGlzdCgpW2xheWVySW5kZXhdKTsKIAogICAgICAgICAgICAgbGF5
ZXItPm1fY291bnRSZXByZXNlbnRpbmdUYXJnZXRTdXJmYWNlID0gLTE7CiAgICAgICAgICAgICBs
YXllci0+bV9jb3VudFJlcHJlc2VudGluZ0NvbnRyaWJ1dGluZ1N1cmZhY2UgPSAtMTsKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAgfQogfQogCi12b2lkIGl0ZXJhdGVGcm9u
dFRvQmFjayhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4qIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpCit2b2lkIGl0ZXJhdGVGcm9udFRvQmFjayhWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+KiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIHJlc2V0Q291bnRzKCpyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKICAgICBpbnQgY291bnQgPSAwOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
aXRlcmF0ZUZyb250VG9CYWNrKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiogcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCkKICAgICB9CiB9CiAKLXZvaWQgaXRlcmF0ZUJhY2tUb0Zyb250KFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3Zv
aWQgaXRlcmF0ZUJhY2tUb0Zyb250KFZlY3RvcjxMYXllckNocm9taXVtKj4qIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpCiB7CiAgICAgcmVzZXRDb3VudHMoKnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogICAgIGludCBjb3VudCA9IDA7CkBAIC0xMzUsOSArMTM1LDkgQEAgVEVTVChDQ0xheWVySXRl
cmF0b3JUZXN0LCBzaW1wbGVUcmVlKQogICAgIHJvb3RMYXllci0+YWRkQ2hpbGQodGhpcmQpOwog
ICAgIHJvb3RMYXllci0+YWRkQ2hpbGQoZm91cnRoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBsYXllckxpc3Q7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5h
cHBlbmQocm9vdExheWVyKTsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBsYXllckxpc3Q7CisgICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyLmdldCgpKTsKICAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShy
b290TGF5ZXIuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGxheWVyTGlzdCwKQEAgLTE4Miw5ICsxODIsOSBAQCBURVNUKENDTGF5ZXJJdGVyYXRv
clRlc3QsIGNvbXBsZXhUcmVlKQogICAgIHJvb3QyMi0+YWRkQ2hpbGQocm9vdDIyMSk7CiAgICAg
cm9vdDIzLT5hZGRDaGlsZChyb290MjMxKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBsYXllckxpc3Q7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cm9vdExheWVyKTsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBsYXllckxpc3Q7CisgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyLmdldCgpKTsKICAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5
ZXIuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGxheWVyTGlzdCwKQEAgLTI0MSw5ICsyNDEsOSBAQCBURVNUKENDTGF5ZXJJdGVyYXRvclRlc3Qs
IGNvbXBsZXhUcmVlTXVsdGlTdXJmYWNlKQogICAgIHJvb3QyMy0+c2V0T3BhY2l0eSgwLjUpOwog
ICAgIHJvb3QyMy0+YWRkQ2hpbGQocm9vdDIzMSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHJvb3RMYXllcik7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gbGF5ZXJMaXN0OworICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllci5nZXQoKSk7CiAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLmdldCgpLCByb290TGF5ZXIuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBsYXllckxpc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclNvcnRlclRlc3QuY3BwCmluZGV4IDY5MzQyY2RhN2M2M2I2MTU0NTA3NDVlYWJkOGIxZDFj
ZGJlZmNlNWUuLmE1MzNjOTM3Mzg4ZWVhNTZiN2E0YTFiYzYxYzFmMjgyMWFiZmVjYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3Bw
CkBAIC0xNzQsMTEgKzE3NCwxMSBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCB2ZXJpZnlFeGlz
dGluZ09yZGVyaW5nUHJlc2VydmVkV2hlbk5vWkRpZmYpCiAgICAgLy8gICAgLSAzIGFuZCA0IGRv
IG5vdCBoYXZlIGEgM2QgeiBkaWZmZXJlbmNlLCBhbmQgdGhlcmVmb3JlIHRoZWlyIHJlbGF0aXZl
IG9yZGVyaW5nIHNob3VsZCBiZSByZXRhaW5lZC4KICAgICAvLyAgICAtIDMgYW5kIDQgc2hvdWxk
IGJlIHJlLXNvcnRlZCBzbyB0aGV5IGFyZSBpbiBmcm9udCBvZiAxLCAyLCBhbmQgNS4KIAotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXIxID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0g
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcjMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXI0ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyNSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7
CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEp
OworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXIyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgy
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
Myk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjQgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDQpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXI1ID0gQ0NMYXllckltcGw6OmNyZWF0
ZSg1KTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IEJlaGluZE1hdHJpeDsKICAgICBCZWhp
bmRNYXRyaXgudHJhbnNsYXRlM2QoMCwgMCwgMik7CkBAIC0yMDUsMTIgKzIwNSwxMiBAQCBURVNU
KENDTGF5ZXJTb3J0ZXJUZXN0LCB2ZXJpZnlFeGlzdGluZ09yZGVyaW5nUHJlc2VydmVkV2hlbk5v
WkRpZmYpCiAgICAgbGF5ZXI1LT5zZXREcmF3VHJhbnNmb3JtKEJlaGluZE1hdHJpeCk7CiAgICAg
bGF5ZXI1LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5
ZXJJbXBsPiA+IGxheWVyTGlzdDsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMSk7Ci0gICAg
bGF5ZXJMaXN0LmFwcGVuZChsYXllcjIpOwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIzKTsK
LSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyNCk7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChsYXll
cjUpOworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGxheWVyTGlzdDsKKyAgICBsYXllckxpc3Qu
YXBwZW5kKGxheWVyMS5nZXQoKSk7CisgICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjIuZ2V0KCkp
OworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIzLmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBw
ZW5kKGxheWVyNC5nZXQoKSk7CisgICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjUuZ2V0KCkpOwog
CiAgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oNSksIGxheWVyTGlzdC5zaXplKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBsYXllckxpc3RbMF0tPmlkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5j
cHAKaW5kZXggYjFmYTcyOTE4NDAxZTMyNDBlNDFkMTNkMmUwYzI3ZDBjNTZhZDdjNS4uNmM3MWU3
ZTAyOGYxMjk4M2U5YTU3MWNlMjUwMTI4YmMwYjdhOGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3Bw
CkBAIC01Nyw4ICs1Nyw4IEBAIHZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXll
ckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyCiB2b2lkIGV4ZWN1dGVD
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSogcm9vdExh
eWVyKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teVJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAg
IFZlY3RvcjxMYXllckNocm9taXVtKj4gZHVtbXlSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxMYXllckNocm9taXVtKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgZHVtbXlSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1t
eUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiB9CkBAIC00NzYsOCArNDc2LDggQEAg
VEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlTGlzdEZv
ckNsaXBMYXllcikKICAgICByZW5kZXJTdXJmYWNlMS0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwog
ICAgIHJlbmRlclN1cmZhY2UxLT5hZGRDaGlsZChjaGlsZCk7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hy
b21pdW0qPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVt
Kj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CiAg
ICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4
VGV4dHVyZVNpemUpOwogCkBAIC01MDQsOCArNTA0LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlTGlzdEZvclRyYW5zcGFyZW50Q2hpbGQpCiAg
ICAgcmVuZGVyU3VyZmFjZTEtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICByZW5kZXJTdXJm
YWNlMS0+YWRkQ2hpbGQoY2hpbGQpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IGR1bW15TGF5ZXJM
aXN0OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5n
ZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
IApAQCAtNTc0LDEzICs1NzQsMTMgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2
ZXJpZnlDbGlwUmVjdEN1bGxzUmVuZGVyU3VyZmFjZXMpCiAgICAgY2hpbGQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgyMCwgMjApKSk7CiAgICAgZ3JlYXRH
cmFuZENoaWxkLT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUo
MTIzNCwgMTIzNCkpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBk
dW1teUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBkdW1teUxheWVyTGlzdDsKICAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAogICAgIC8vIEZJWE1FOiB3aGVuIHdl
IGZpeCB0aGlzICJyb290LWxheWVyIHNwZWNpYWwgY2FzZSIgYmVoYXZpb3IgaW4gQ0NMYXllclRy
ZWVIb3N0LCB3ZSB3aWxsIGhhdmUgdG8gZml4IGl0IGhlcmUsIHRvby4KICAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQo
KSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApA
QCAtNjE3LDE0ICs2MTcsMTQgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBsYXll
ckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKIAogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7
CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxMYXllckNocm9taXVtKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7CiAKICAgICAvLyBGSVhNRTogd2hlbiB3ZSBmaXggdGhpcyAicm9v
dC1sYXllciBzcGVjaWFsIGNhc2UiIGJlaGF2aW9yIGluIENDTGF5ZXJUcmVlSG9zdCwgd2Ugd2ls
bCBoYXZlIHRvIGZpeCBpdCBoZXJlLCB0b28uCiAgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOwogICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQuZ2V0KCkpOwog
CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwogCkBAIC02NTQsMTQgKzY1NCwxNCBAQCBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9u
KQogCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1
bSo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBk
dW1teUxheWVyTGlzdDsKICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAogICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGZpeCB0aGlzICJyb290LWxheWVyIHNwZWNpYWwgY2FzZSIgYmVo
YXZpb3IgaW4gQ0NMYXllclRyZWVIb3N0LCB3ZSB3aWxsIGhhdmUgdG8gZml4IGl0IGhlcmUsIHRv
by4KICAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CiAgICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudC5nZXQoKSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKQEAgLTY4
OSwxNCArNjg5LDE0IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCiAKICAgICBsYXllci0+c2V0T3Bh
cXVlKHRydWUpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1
cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15
TGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IGR1bW15TGF5ZXJMaXN0OwogICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4
IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhv
c3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
YXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNzMwLDE0ICs3MzAsMTQgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbldp
dGhSb3RhdGVkU3VyZmFjZSkKICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAg
ICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IGR1bW15TGF5
ZXJMaXN0OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCiAgICAgLy8gRklY
TUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBp
biBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAg
IHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1
cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cAppbmRleCBmNTk4OTNkZTkwNjQxOGY4Y2JkNzU3NDBhZTI5MzllMjNjYzIzNTBhLi44NWNjN2I5
NGJkYzM3ZGViYjdkOTkyMTc5NTM4NTMzZDE5ZGUxZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAt
NzYsMTYgKzc2LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0dXBTY3JvbGxBbmRDb250ZW50
c0xheWVycyhjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgICAgIE93
blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgICAg
IHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0
aW9uKEludFBvaW50KDAsIDApKTsKICAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24o
Y29udGVudFNpemUpOwotICAgICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNvbnRlbnRzID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjb250ZW50
cyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXRCb3VuZHMoY29udGVudFNpemUpOwog
ICAgICAgICBjb250ZW50cy0+c2V0Q29udGVudEJvdW5kcyhjb250ZW50U2l6ZSk7Ci0gICAgICAg
IHJvb3QtPmFkZENoaWxkKGNvbnRlbnRzKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKHJvb3QpOworICAgICAgICByb290LT5hZGRDaGlsZChjb250ZW50cy5yZWxlYXNlKCkpOwor
ICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAgIH0K
IAogcHJvdGVjdGVkOgpAQCAtMTA1LDM3ICsxMDUsMzkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBzY3JvbGxEZWx0YU5vTGF5ZXJzKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHNjcm9sbERlbHRhVHJlZUJ1dE5vQ2hhbmdlcykKIHsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gb3BSb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBDQ0xheWVySW1w
bCogcm9vdCA9IG9wUm9vdC5nZXQoKTsKICAgICByb290LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6
Y3JlYXRlKDEpKTsKICAgICByb290LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDIpKTsK
ICAgICByb290LT5jaGlsZHJlbigpWzFdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDMp
KTsKICAgICByb290LT5jaGlsZHJlbigpWzFdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRl
KDQpKTsKICAgICByb290LT5jaGlsZHJlbigpWzFdLT5jaGlsZHJlbigpWzBdLT5hZGRDaGlsZChD
Q0xheWVySW1wbDo6Y3JlYXRlKDUpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9v
dCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKG9wUm9vdC5yZWxlYXNlKCkpOwogCi0g
ICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBl
eHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogCiAgICAgT3duUHRyPEND
U2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKICAgICBzY3JvbGxJbmZvID0gbV9ob3N0
SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShzY3JvbGxJbmZvLT5z
Y3JvbGxzLnNpemUoKSwgMHUpOwotICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNp
dmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShy
b290KTsKIAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAwdSk7Ci0gICAg
ZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBleHBl
Y3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogfQogCiBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogewogICAgIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uKDIwLCAzMCk7CiAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgx
MSwgLTE1KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDEwKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wUm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMTApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gb3BSb290LmdldCgpOwogICAgIHJv
b3QtPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICByb290LT5zZXRTY3Jv
bGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAw
LCAxMDApKTsKICAgICByb290LT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7Ci0gICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJv
b3QucmVsZWFzZSgpKTsKIAogICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJ
bmZvOwogCkBAIC0xNTgsMTEgKzE2MCwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJhdykKIHsKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0
U2Nyb2xsYWJsZSh0cnVlKTsKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgw
LCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkp
OwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICBtX2hvc3RJbXBsLT5z
ZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5z
Y3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxT
dGFydGVkKTsKICAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShJbnRTaXplKDAsIDEwKSk7CiAgICAg
bV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7CkBAIC0zMDIsNyArMzA0LDcgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50
IGlkKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlk
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKQEAgLTM1MiwxNCArMzU0
LDE2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjb250ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwg
MTApKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcFJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gb3BSb290LmdldCgpOwogICAgIHJvb3Qt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJ
bnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihvcFJvb3QucmVsZWFzZSgpKTsKIAotICAgIFJlZlB0cjxCbGVuZFN0YXRlQ2hlY2tMYXll
cj4gbGF5ZXIxID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKTsKLSAgICByb290LT5h
ZGRDaGlsZChsYXllcjEpOworICAgIE93blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gb3BMYXll
cjEgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEpOworICAgIEJsZW5kU3RhdGVDaGVj
a0xheWVyKiBsYXllcjEgPSBvcExheWVyMS5nZXQoKTsKKyAgICByb290LT5hZGRDaGlsZChvcExh
eWVyMS5yZWxlYXNlKCkpOwogCiAgICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJs
ZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtMzk4LDggKzQwMiw5IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RS
VUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVj
a0xheWVyPiBsYXllcjIgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpOwotICAgIGxh
eWVyMS0+YWRkQ2hpbGQobGF5ZXIyKTsKKyAgICBPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+
IG9wTGF5ZXIyID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgyKTsKKyAgICBCbGVuZFN0
YXRlQ2hlY2tMYXllciogbGF5ZXIyID0gb3BMYXllcjIuZ2V0KCk7CisgICAgbGF5ZXIxLT5hZGRD
aGlsZChvcExheWVyMi5yZWxlYXNlKCkpOwogCiAgICAgLy8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3
biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtNTIx
LDExICs1MjYsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90
Q2FsbGVkVW50aWxEcmF3KQogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNvbnRleHQpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAx
MCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VE
cmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBh
ZG9wdFB0cihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwogICAgIHJvb3QtPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXpl
KDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJv
b3QucmVsZWFzZSgpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVD
YWxsZWQoKSk7CiAKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC01NzEsOCArNTc2
LDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZl
c0RhbWFnZVJlY3QpCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNvbnRleHQpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZSg1MDAsIDUwMCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRS
ZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGNoaWxkID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDIpKTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IG9wUm9vdCA9IGFkb3B0UHRyKG5ldyBGYWtlRHJhd2FibGVD
Q0xheWVySW1wbCgxKSk7CisgICAgQ0NMYXllckltcGwqIHJvb3QgPSBvcFJvb3QuZ2V0KCk7Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkID0gYWRvcHRQdHIobmV3IEZha2VEcmF3YWJs
ZUNDTGF5ZXJJbXBsKDIpKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSBvcENoaWxkLmdldCgp
OwogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEyLCAxMykpOwogICAgIGNoaWxk
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBjaGlsZC0+c2V0Qm91bmRz
KEludFNpemUoMTQsIDE1KSk7CkBAIC01ODAsOCArNTg3LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICByb290LT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50
U2l6ZSg1MDAsIDUwMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBy
b290LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXll
cihyb290KTsKKyAgICByb290LT5hZGRDaGlsZChvcENoaWxkLnJlbGVhc2UoKSk7CisgICAgbGF5
ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJvb3QucmVsZWFzZSgpKTsKIAogICAgIC8v
IEZpcnN0IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBzaG91bGQgZ2V0IHN3YXBwZWQuCiAgICAg
bGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGMzYjM2NmRkYTMy
Mzc0Njg2ODZmYmY4M2VkNGZlMzM5MGY4MmYzMzQuLjEyMDE1ODdjNzhkZjdiNTg0MDI3NzRkZjBj
NjkzZjRlZWRkZGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBURVNUKENDUmVuZGVy
U3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAg
IC8vIFRoaXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRo
cmVhZDsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDApOwogICAgIG93bmluZ0xheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CiAgICAgQVNTRVJUX1RSVUUob3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAg
Q0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gb3duaW5nTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKTsKQEAgLTc0LDcgKzc0LDcgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlT
dXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5zZXRDbGlwUmVjdCh0ZXN0UmVj
dCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRl
clN1cmZhY2UtPnNldENvbnRlbnRSZWN0KHRlc3RSZWN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGR1bW15TWF0cml4OwogICAgIGR1bW15TWF0cml4LnRyYW5zbGF0ZSgx
LjAsIDIuMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDA1OWVmMmFkY2Y1NWVkM2JmYWE1
MDc5MTRhNDEzMzQ3ODg2ZWVjNTQuLjAyZGM5MDhhYmRhNzc0NTNhNGZhNjlkZTJiOTZkM2RiOTA3
OTdmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBURVNUKENDU29s
aWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeVRpbGluZ0NvbXBsZXRlQW5kTm9PdmVybGFwKQog
ICAgIEludFNpemUgbGF5ZXJTaXplID0gSW50U2l6ZSg4MDAsIDYwMCk7CiAgICAgSW50UmVjdCB2
aXNpYmxlTGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogCi0gICAg
UmVmUHRyPENDU29saWRDb2xvckxheWVySW1wbD4gbGF5ZXIgPSBDQ1NvbGlkQ29sb3JMYXllcklt
cGw6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9
IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJT
aXplKTsKIApAQCAtNjYsNyArNjYsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3Qs
IHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgSW50U2l6ZSBsYXllclNp
emUgPSBJbnRTaXplKDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAKLSAgICBSZWZQdHI8Q0NTb2xpZENvbG9y
TGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOworICAg
IE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxheWVyID0gQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxh
eWVyUmVjdCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogICAgIGxheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IodGVzdENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggZDU1YzBiYzE2NDRl
MmE4OTA3NGYyYjg5ZjYxZWRmMjIwZjc4NmZjMy4uZmY3ZGFhM2M5YjI3NmY1YTJkYTdhMzkzZGIx
OGI1NWFkNDU4ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIHsK
IAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB0aWxlZCBsYXllciB3aXRoIHRleHR1cmVzIGZvciBhbGwg
dGlsZXMgYW5kIGEgZGVmYXVsdAogLy8gdmlzaWJpbGl0eSBvZiB0aGUgZW50aXJlIGxheWVyIHNp
emUuCi1zdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGls
aW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxzKQorc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVs
T3B0aW9uIGJvcmRlclRleGVscykKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5
ZXIgPSBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIE93blB0cjxD
Q0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKHRpbGVT
aXplLCBib3JkZXJUZXhlbHMpOwogICAgIHRpbGVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKICAg
ICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwpAQCAtNjgsNyArNjgsNyBAQCBURVNUKEND
VGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gVmVyaWZ5IGRlZmF1
bHQgbGF5ZXIgZG9lcyBjcmVhdGVzIHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxl
ZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBDQ1F1YWRMaXN0IHF1YWRzOwog
ICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVy
LT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwpAQCAtNzgsNyArNzgsNyBAQCBURVNUKENDVGls
ZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBlbXB0
eSB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJl
ZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXll
clNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNp
emUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgQ0NRdWFkTGlzdCBxdWFk
czsKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFk
TGlzdCkKIAogICAgIC8vIExheWVyIHdpdGggbm9uLWludGVyc2VjdGluZyB2aXNpYmxlIGxheWVy
IHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJU
aWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAKICAgICAgICAgSW50UmVjdCBvdXRzaWRlQm91bmRz
KEludFBvaW50KC0xMDAsIC0xMDApLCBJbnRTaXplKDUwLCA1MCkpOwogICAgICAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChvdXRzaWRlQm91bmRzKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIg
d2l0aCBza2lwcyBkcmF3IHByb2R1Y2VzIG5vIHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBD
Q0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBsYXllci0+c2V0U2tp
cHNEcmF3KHRydWUpOwogCiAgICAgICAgIENDUXVhZExpc3QgcXVhZHM7CkBAIC0xMjEsNyArMTIx
LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIGNv
bnN0IGludCBudW1UaWxlc1kgPSAyOwogICAgIGNvbnN0IEludFNpemUgbGF5ZXJTaXplKHRpbGVT
aXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXplLmhlaWdodCgpICogbnVtVGlsZXNZKTsK
IAotICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVT
aXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxh
eWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRR
dWFkU3RhdGUoKTsKIAogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwpAQCAtMTUwLDcgKzE1MCw3
IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAogc3RhdGlj
IFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRz
LCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZUxheWVyUmVjdCkKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5
ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7
CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNp
emUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJT
aXplKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJh
Y2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKICAgICBjb25zdCBpbnQgbnVtVGlsZXNZID0gMjsKICAg
ICBjb25zdCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKICAgICBj
b25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0aWxl
U2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+
IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0Rh
dGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIg
PSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkp
OwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDRiM2RkMjdkMzFkODgyMTA0YzcwY2ZmZjUwMjRmYjgwNDQ3ZWEx
NDEuLmM1ZTk4M2VlYWFlZTFjZTU0M2U5NWEzMmRhOGFlZjU3NjNhM2YyMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAg
ICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CiAKLSAg
ICAgICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVD
Q0xheWVySW1wbCgpOworICAgICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUs
IHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVy
ZUlkKCkpOwogCiAgICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
aW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjA2OWZkMTgx
Mzg4YmI1NDY5ZDliNjEzZjhjNzUzZDZhNWJmYjg5OS4uZjM2MmZhYWYxNWI3ZTFjOGYwYmVhZDRk
ODJmNWJkN2I5MzQ0NzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJl
ZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDAp
KTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTI0Miw3ICsyNDIs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0
b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAg
LTMwOCw3ICszMDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91
dE9mTWVtb3J5KQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQ
dHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKQEAgLTM0NCw3ICszNDQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVm
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5
ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggMTU1N2E3ZDkzMjJj
YzZiZTIwNmJmNTBiMDBjMGY0NzA2M2M1NDc4Yi4uMDIxNTFiOGU2ZTczYjY5ODMxMGY1YjExMDM4
NWFjZjE4M2E4NzYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
cmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIHsK
IAogY2xhc3MgTW9ja0NDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJ
ZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5
ZXJJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja0NDTGF5ZXJJbXBs
KGxheWVySWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrQ0NMYXllckltcGwo
bGF5ZXJJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Nb2NrQ0NMYXllckltcGwoKQogICAgIHsK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW9ja0xheWVyQ2hyb21p
dW0oKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NM
YXllckltcGwoKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NM
YXllckltcGwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgZXhwZWN0VHJlZXNB
cmVJZGVudGljYWwoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsKiBjY0xheWVyKQog
ICAgICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllci0+cmVwbGljYUxheWVyKCksIGNj
TGF5ZXItPnJlcGxpY2FMYXllcigpKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiYgbGF5ZXJDaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOwotICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNjTGF5ZXJDaGlsZHJlbiA9IGNjTGF5ZXIt
PmNoaWxkcmVuKCk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiYgY2NM
YXllckNoaWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4oKTsKIAogICAgIEFTU0VSVF9FUShsYXll
ckNoaWxkcmVuLnNpemUoKSwgY2NMYXllckNoaWxkcmVuLnNpemUoKSk7CiAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0
eSkKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7
CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwog
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25p
emVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hy
b25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBudWxscHRyKTsKIAogICAgIGV4cGVjdFRy
ZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQo
KSk7CiB9CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3lu
Y1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1v
Y2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKICAgICBs
YXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVy
RGVzdHJ1Y3Rpb25MaXN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVl
Um9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5n
ZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxw
dHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNj
TGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBBZGQgYSBuZXcgbGF5ZXIgdG8gdGhlIExh
eWVyQ2hyb21pdW0gc2lkZQpAQCAtMTcyLDcgKzE3Miw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXpl
clRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGllcykKICAgICBJbnRTaXplIHNlY29uZENo
aWxkQm91bmRzID0gSW50U2l6ZSgyNSwgNTMpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVu
KClbMV0tPnNldEJvdW5kcyhzZWNvbmRDaGlsZEJvdW5kcyk7CiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJl
ZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xh
eWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJl
ZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVy
VHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBDaGVjayB0
aGF0IHRoZSBwcm9wZXJ0eSB2YWx1ZXMgd2Ugc2V0IG9uIHRoZSBMYXllckNocm9taXVtIHRyZWUg
YXJlIHJlZmxlY3RlZCBpbiB0aGUgQ0NMYXllckltcGwgdHJlZS4KQEAgLTIwOSw3ICsyMDksNyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCByZXVzZUNDTGF5ZXJzQWZ0ZXJTdHJ1Y3R1cmFs
Q2hhbmdlKQogICAgIGxheWVyQi0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgm
Y2NMYXllckRlc3RydWN0aW9uTGlzdCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXll
ckQgPSBsYXllckItPmNoaWxkcmVuKClbMV0uZ2V0KCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMo
bGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVy
VHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJv
b3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJl
ZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBOb3cgcmVzdHJ1
Y3R1cmUgdGhlIHRyZWUgdG8gbG9vayBsaWtlIHRoaXM6CkBAIC0yNDcsNyArMjQ3LDcgQEAgVEVT
VChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBp
bnQgb2xkVHJlZUZpcnN0Q2hpbGRMYXllcklkID0gb2xkTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4o
KVswXS0+aWQoKTsKICAgICBpbnQgb2xkVHJlZVNlY29uZENoaWxkTGF5ZXJJZCA9IG9sZExheWVy
VHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPmlkKCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMob2xk
TGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVy
VHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKG9sZExheWVyVHJl
ZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKG9sZExh
eWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBSZW1v
dmUgYWxsIGNoaWxkcmVuIG9uIHRoZSBMYXllckNocm9taXVtIHNpZGUuCkBAIC0yODcsMjMgKzI4
NywyMyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBs
aWNhTWFza0xheWVycykKICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFza0xheWVyKHJl
cGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMl0t
PnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVz
KGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgZXhwZWN0VHJlZXNBcmVJZGVu
dGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAg
IC8vIFJlbW92ZSB0aGUgbWFzayBsYXllci4KICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigp
WzBdLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9u
aXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJv
b3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2Uo
KSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NM
YXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBsYXllci4K
ICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5ZXIoMCk7Ci0g
ICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhs
YXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJU
cmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9v
dC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJ
ZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAog
ICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBtYXNrLgogICAgIHJlcGxpY2FMYXllcldpdGhNYXNr
LT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXpl
cjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3Qu
Z2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7
CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXll
clRyZWVSb290LmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126837</attachid>
            <date>2012-02-13 14:35:05 -0800</date>
            <delta_ts>2012-02-15 15:04:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120213143504.patch</filename>
            <type>text/plain</type>
            <size>118615</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U0OTYyMDA3MDg1NjFk
M2ZjOTM1ZmFkYzU2NjIwOTE0ZjMwNGVmMS4uMmVhNGQzODdjNGVmYzcyMDhkZjBkMmY1YWRmYmI0
MWU4NDJhZGJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wMi0xMyAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0
TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcklt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpsYXllckxpc3QpOgorICAgICAgICAoUmVu
ZGVyU3VyZmFjZUNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmg6CisgICAgICAgIChT
b2xpZENvbG9yTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6Y29sbGVjdEV4
aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNo
cm9uaXplcjo6cmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oOgorICAgICAgICAoVHJl
ZVN5bmNocm9uaXplcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVmlkZW9MYXllckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNMYXllckltcGw6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFtYWdlRnJv
bUFjdGl2ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEYW1hZ2VUcmFja2VyLmg6CisgICAgICAgIChDQ0RhbWFnZVRyYWNrZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0
TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFJlcGxpY2FMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OmNoaWxkcmVuKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpiZWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySXRlcmF0b3I6OkNDTGF5ZXJJdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpDQ0xheWVySXRlcmF0b3JQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjo6Y3VycmVudExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjp0YXJnZXRSZW5k
ZXJTdXJmYWNlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRp
b246OnRhcmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbik6CisgICAgICAgIChDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclNvcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpjcmVhdGVH
cmFwaE5vZGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyU29ydGVyLmg6CisgICAgICAgIChDQ0xheWVyU29ydGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6d2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaDoKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdENvbW1vbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnRyYWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAg
ICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpyZWxlYXNlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnNjcm9sbExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5M
YXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OmxheWVyTGlzdCk6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NWaWRlb0xheWVySW1wbDo6Y3JlYXRlKToKKwogMjAxMi0wMi0xMyAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBzY3JvbGxpbmcgdHJlZSBu
ZWVkcyB0byBrbm93IGFib3V0IHRoZSBiYWNrIGZvcndhcmQgc3RhdGUgb2YgdGhlIHBhZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjhlMjFjYmQwNDgwNDJjZjkzNTRiYmFmMmRmYTkw
NjA4NmUwMDk3OC4uZTNjNWZmNDJmMDFjYTU2NmQ4ZTBhZDIyMjg3M2I5YzFlMjYxOTExMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wMi0xMyAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q0RhbWFnZVRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpleGVjdXRlQ2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjplbXVsYXRlRHJhd2luZ09uZUZyYW1lKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVU
ZXN0VHJlZVdpdGhPbmVTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVUZXN0
VHJlZVdpdGhUd29TdXJmYWNlcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVB
bmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpU
RVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcDoK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdDo6c2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyk6CisgICAgICAgIChXZWJLaXQ6
OlRFU1RfRik6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUp
OgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5j
cHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmNy
ZWF0ZUxheWVyKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAg
KENDTGF5ZXJUZXN0Q29tbW9uOjpnZXRRdWFkcyk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRM
YXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAqIHRlc3Rz
L1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ0xheWVy
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpjcmVh
dGVDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpleHBlY3RUcmVlc0FyZUlkZW50aWNh
bCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMi0xMyAgWW9zaWZ1bWkgSW5v
dWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Zvcm1zXSBVc2UgZW51bSBpbnN0
ZWFkIG9mIGJvb2wgZm9yIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE4MWJhNGU1ODEyY2U4ODc4YTE3OTIwMjU4ZjhlZGU4
ZGZiNDYyMWUuLmQ1MzM2OTlhZjlmMWY3YWEwODUyOGQ0MWY4YjZiY2MyNjBiMDM1MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIENhbnZhc0xh
eWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiBDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiBDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1w
bCgpCiB7CiAgICAgcmV0dXJuIENDQ2FudmFzTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAppbmRleCA5ZThjZTdkOGNjODJhYTg4M2Mz
NmE4NTg2MzA5NDQ4ZjMzNjIwMjcxLi43MjJjYzFhNjY3Mzg5YjM1NzEwNTgyNTI4YjZkMWNjNzYz
YTM1NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEJhc2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVy
YXRlZCAyZCBjYW52YXNlcy4KIGNsYXNzIENhbnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAogcHJvdGVjdGVkOgogICAgIENhbnZhc0xheWVyQ2hy
b21pdW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGJjZjI5N2ZmOTI0NjhjOTg0ZjVi
NGZjYzEyYmZmNTNiMjY2ZDY3NC4uZjNmMGZlZTA3NDY2YWU3OTY2MzlmMmE4ZGJhMzQ1NDViMmI2
YmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIG1f
dXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDTGF5
ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0KQEAgLTUxNCw3ICs1MTQsNyBAQCBib29sIExh
eWVyQ2hyb21pdW06OmRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRl
cmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKQor
dm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxMYXllckNocm9taXVtKj46Oml0ZXJhdG9yLCBWZWN0b3I8
TGF5ZXJDaHJvbWl1bSo+OjppdGVyYXRvciwgdm9pZCopCiB7CiAgICAgLy8gQ3VycmVudGx5IHdl
IGRvbid0IHVzZSB6LW9yZGVyIHRvIGRlY2lkZSB3aGF0IHRvIHBhaW50LCBzbyB0aGVyZSdzIG5v
IG5lZWQgdG8gYWN0dWFsbHkgc29ydCBMYXllckNocm9taXVtcy4KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAppbmRleCAzYTFlOTZjNWZkYTQ5ZTgxYjQ1ZGU3YzZjNDExOWVkMmIzOTg2M2YxLi4wNTFjMjhh
ZmE5YjdhMTVjNTI4YmY0OGFmZTcyYTcxZjhmNWI3MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBA
IC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMzYsNyArMjM3LDcgQEAgcHJvdGVjdGVkOgogICAgIGZy
aWVuZCBjbGFzcyBUcmVlU3luY2hyb25pemVyOwogICAgIGZyaWVuZCBjbGFzcyBDQ0xheWVySW1w
bDsKICAgICAvLyBDb25zdHJ1Y3RzIGEgQ0NMYXllckltcGwgb2YgdGhlIGNvcnJlY3QgcnVudGlt
ZSB0eXBlIGZvciB0aGlzIExheWVyQ2hyb21pdW0gdHlwZS4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogICAgIGludCBtX2xheWVySWQ7
CiAKIHByaXZhdGU6CkBAIC0zMDMsNyArMzA0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFn
ZVNjYWxlRGlydHk7CiB9OwogCi12b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVy
YXRvciwgdm9pZCopOwordm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxMYXllckNocm9taXVtKj46Oml0
ZXJhdG9yLCBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+OjppdGVyYXRvciwgdm9pZCopOwogCiB9CiAj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmNwcAppbmRleCAwNzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhh
YjRiLi42MjVmNGIyMWRmYjhhNTFkM2M5ZTdhZjA5MmU0YTAyOWJjYjM2NmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpbkxh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IHJlbmRlcmVyQwogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkK
K1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5
ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NQbHVnaW5MYXllckltcGw6OmNyZWF0ZShtX2xheWVy
SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDg0MzY1Njk1YmIxZGRj
NjUyMzFhZGQwNGY2ZjBkODMwMDA5MWUwZDAuLmMzMGY3N2FjNWQxYjdiYTVhNzRkYWRiMDhmZGU0
YTEzYjNlYTQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+
IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFz
c093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAogICAgIC8vIENvZGUg
cGF0aCBmb3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCiAgICAg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmgKaW5kZXggNjVjYjY0YjUxODRjNzRjZmQ2MTRmMDQwOTVjNjk2NmY0Nzhk
MTVmZi4uOGZiMzY3ODJkYWVlZDcyNDA1MzcxNWExYWNiMmNkZWYwNzNhMGM3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNE
cmF3OyB9CiAKICAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkgeyBtX2xheWVyTGlzdC5jbGVhcigp
OyB9Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckxpc3QoKSB7IHJl
dHVybiBtX2xheWVyTGlzdDsgfQorICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4mIGxheWVyTGlz
dCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CiAKICAgICB2b2lkIHNldE1hc2tMYXllcihMYXll
ckNocm9taXVtKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IH0KIApAQCAt
MTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBs
aWNhRHJhd1RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX29yaWdpblRyYW5z
Zm9ybTsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IG1fbGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gbV9sYXll
ckxpc3Q7CiAKICAgICAvLyBGb3IgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucwogICAgIGludCBtX3Rh
cmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4SGlzdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29s
b3JMYXllckNocm9taXVtLmNwcAppbmRleCBlZDEzNTQ2YmFlODdmNDA1MWIzMGUzNDk0YzBmMmZk
ZTg1M2YxZTMzLi4wZGM3N2FkYTgyMjYwMjMyNWU2NzllMzE1NDg4MzM2ODkzYjk0ZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gU29saWRD
b2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXll
ckltcGw+IFNvbGlkQ29sb3JMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAg
ICAgcmV0dXJuIENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKGlkKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xv
ckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmgKaW5kZXggMWQxNDg5MGJkMGUxZjBjMjBjNjNj
NmQyMzE3MTU5NDhkMjE4OTRmYy4uOTRhNTRhMGFjNWFkZTExOTc4NmRkMDZiZDM0OWRiYjIxN2Ji
ZDU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw3ICsz
OCw3IEBAIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIC8vIHNldEJhY2tncm91bmRDb2xvcigp
IG9uIHRoZSBiYXNlIGNsYXNzLgogY2xhc3MgU29saWRDb2xvckxheWVyQ2hyb21pdW0gOiBwdWJs
aWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIH5Tb2xpZENvbG9y
TGF5ZXJDaHJvbWl1bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDM0
ZWQ2OWI2NzAzZjU1MDE0ZjkwOWFkYWVkNGZiMWVmZjA3ZmZlZS4uNTVlY2FmYjFkNzdlOTU4MTdj
ZjU5ZGVkMzNlODVlOTMwZTA0MTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIFRpbGVkTGF5ZXJDaHJvbWl1bTo6flRpbGVkTGF5ZXJDaHJvbWl1
bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gVGlsZWRMYXllckNo
cm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDVGlsZWRMYXllcklt
cGw6OmNyZWF0ZShpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggMmQ5
OTk1MzY3YWQyNDM2YWZmYWZlNmRjYzMyM2FmOTUzYWVkMzA3Mi4uYTZjMjExOTUxZDc4NTE0MzQw
ZjU2N2JkZjM2MGVhNjc0MTA5NGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAg
LTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciog
dGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogCiAgICAgdm9pZCBjcmVhdGVU
aWxlcklmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAKaW5kZXggZDBmZDBjZTUyM2Q2Mzg4NGJlOTMyZTFi
ZDQxNjU4MmYyNTc2MmU0MC4uNTM3NDk1YWExMWIzNTljY2M0ZmFiMTBhZjFiYzNkMmRiODU2MTA4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VHJlZVN5bmNocm9uaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAKQEAgLTMzLDYzICszMyw1OCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXllcklt
cGxzVG9NYXBSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmIG1hcCwgQ0NMYXllckltcGwqIGNjTGF5
ZXJJbXBsKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hy
b25pemVUcmVlcyhMYXllckNocm9taXVtKiBsYXllckNocm9taXVtUm9vdCwgUGFzc093blB0cjxD
Q0xheWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290KQogewotICAgIG1hcC5zZXQoY2NMYXllcklt
cGwtPmlkKCksIGNjTGF5ZXJJbXBsKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID4mIGNoaWxkcmVuID0gY2NMYXllckltcGwtPmNoaWxkcmVuKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgYWRkQ0NMYXll
ckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBjaGlsZHJlbltpXS5nZXQoKSk7Ci0KLSAgICBpZiAo
Q0NMYXllckltcGwqIG1hc2tMYXllciA9IGNjTGF5ZXJJbXBsLT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBtYXNrTGF5ZXIpOworICAgIEND
TGF5ZXJJbXBsTWFwIG1hcDsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2
ZShtYXAsIG9sZENDTGF5ZXJJbXBsUm9vdCk7CiAKLSAgICBpZiAoQ0NMYXllckltcGwqIHJlcGxp
Y2FMYXllciA9IGNjTGF5ZXJJbXBsLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NMYXll
ckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCByZXBsaWNhTGF5ZXIpOworICAgIHJldHVybiBzeW5j
aHJvbml6ZVRyZWVSZWN1cnNpdmUobWFwLCBsYXllckNocm9taXVtUm9vdCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZShMYXllckNocm9taXVtKiBsYXllciwgQ0NMYXllckltcGxNYXAmIG1hcCkKK3ZvaWQgVHJl
ZVN5bmNocm9uaXplcjo6Y29sbGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUoQ0NMYXll
ckltcGxNYXAmIG1hcCwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcG9wQ0NMYXllckltcGwpCiB7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbDsKLSAgICBDQ0xheWVySW1wbE1h
cDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChsYXllci0+aWQoKSk7Ci0gICAgaWYgKGl0ICE9IG1h
cC5lbmQoKSkgewotICAgICAgICBjY0xheWVySW1wbCA9IGl0LT5zZWNvbmQ7IC8vIFdlIGFscmVh
ZHkgaGF2ZSBhbiBlbnRyeSBmb3IgdGhpcywgd2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0Lgot
ICAgICAgICBjY0xheWVySW1wbC0+Y2xlYXJDaGlsZExpc3QoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBjY0xheWVySW1wbCA9IGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwotICAgICAgICBt
YXAuc2V0KGxheWVyLT5pZCgpLCBjY0xheWVySW1wbCk7IC8vIEFkZCBpdCB0byB0aGUgbWFwIHNv
IG90aGVyIGxheWVycyByZWZlcmVuY2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1cC4KLSAgICB9
CisgICAgQ0NMYXllckltcGwqIGNjTGF5ZXJJbXBsID0gcG9wQ0NMYXllckltcGwuZ2V0KCk7CiAK
LSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNoaWxkcmVuID0gbGF5
ZXItPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjY0xheWVySW1wbCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbWFwLnNldChjY0xheWVySW1wbC0+aWQoKSwgcG9wQ0NMYXllckltcGwpOworCisgICAg
VmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRyZW4gPSBjY0xheWVySW1wbC0+bV9j
aGlsZHJlbjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytp
KQotICAgICAgICBjY0xheWVySW1wbC0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZl
KGNoaWxkcmVuW2ldLmdldCgpLCBtYXApKTsKKyAgICAgICAgY29sbGVjdEV4aXN0aW5nQ0NMYXll
ckltcGxSZWN1cnNpdmUobWFwLCBjaGlsZHJlbltpXS5yZWxlYXNlKCkpOworCisgICAgY29sbGVj
dEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUobWFwLCBjY0xheWVySW1wbC0+bV9tYXNrTGF5
ZXIucmVsZWFzZSgpKTsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZSht
YXAsIGNjTGF5ZXJJbXBsLT5tX3JlcGxpY2FMYXllci5yZWxlYXNlKCkpOworfQogCi0gICAgaWYg
KExheWVyQ2hyb21pdW0qIG1hc2tMYXllciA9IGxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAg
Y2NMYXllckltcGwtPnNldE1hc2tMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFza0xh
eWVyLCBtYXApKTsKLSAgICBlbHNlCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIo
MCk7CitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpyZXVzZU9yQ3Jl
YXRlQ0NMYXllckltcGwoQ0NMYXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIp
Cit7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbCA9IG1hcC50YWtlKGxheWVy
LT5pZCgpKTsKIAotICAgIGlmIChMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSBsYXllci0+
cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRSZXBsaWNhTGF5ZXIoc3lu
Y2hyb25pemVUcmVlUmVjdXJzaXZlKHJlcGxpY2FMYXllciwgbWFwKSk7Ci0gICAgZWxzZQotICAg
ICAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKDApOworICAgIGlmICghY2NMYXllcklt
cGwpCisgICAgICAgIHJldHVybiBsYXllci0+Y3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdldCgpKTsKICAgICByZXR1cm4gY2NM
YXllckltcGwucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3lu
Y2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW1S
b290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVySW1wbFJvb3QpCitQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1
cnNpdmUoQ0NMYXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCiB7Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QgPSBwcnBPbGRDQ0xheWVySW1w
bFJvb3Q7Ci0gICAgLy8gQnVpbGQgYSBtYXAgZnJvbSBsYXllciBJRHMgdG8gQ0NMYXllckltcGxz
IHNvIHdlIGNhbiByZXVzZSBsYXllcnMgZnJvbSB0aGUgb2xkIHRyZWUuCi0gICAgQ0NMYXllcklt
cGxNYXAgbWFwOwotICAgIGlmIChvbGRDQ0xheWVySW1wbFJvb3QpCi0gICAgICAgIGFkZENDTGF5
ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgb2xkQ0NMYXllckltcGxSb290LmdldCgpKTsKKyAg
ICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIFJlY3Vyc2l2
ZWx5IGJ1aWxkIHRoZSBuZXcgbGF5ZXIgdHJlZS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG5l
d0NDTGF5ZXJJbXBsUm9vdCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShsYXllckNocm9taXVt
Um9vdCwgbWFwKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJJbXBsID0gcmV1c2VP
ckNyZWF0ZUNDTGF5ZXJJbXBsKG1hcCwgbGF5ZXIpOwogCi0gICAgcmV0dXJuIG5ld0NDTGF5ZXJJ
bXBsUm9vdC5yZWxlYXNlKCk7CisgICAgY2NMYXllckltcGwtPmNsZWFyQ2hpbGRMaXN0KCk7Cisg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBjaGlsZHJlbiA9IGxheWVy
LT5jaGlsZHJlbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgp
OyArK2kpCisgICAgICAgIGNjTGF5ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVSZWN1
cnNpdmUobWFwLCBjaGlsZHJlbltpXS5nZXQoKSkpOworCisgICAgY2NMYXllckltcGwtPnNldE1h
c2tMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFwLCBsYXllci0+bWFza0xheWVyKCkp
KTsKKyAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZShtYXAsIGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkpOworCisgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8oY2NMYXllckltcGwuZ2V0KCkpOworICAgIHJldHVybiBjY0xheWVySW1wbC5yZWxl
YXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIu
aAppbmRleCBhNGU0OTQyMTczOTVlOGQyZTEyOTZiZDY1NjY2MmUzMmIxMTlhY2ZmLi43YzM3Y2Fk
YTQyNzRlZjU0YjY3MjEzMjlkMjA1MmE1MGNjNDAyNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXpl
ci5oCkBAIC0yOCw3ICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTYgKzQxLDE2IEBAIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRyZWVTeW5jaHJvbml6ZXIpOwogcHVibGljOgogICAgIC8vIEFjY2VwdHMgYSBMYXllckNocm9t
aXVtIHRyZWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gYSBDQ0xheWVySW1wbCB0cmVlIHRo
YXQgZHVwbGljYXRlcyB0aGUgc3RydWN0dXJlCiAgICAgLy8gb2YgdGhlIExheWVyQ2hyb21pdW0g
dHJlZSwgcmV1c2luZyB0aGUgQ0NMYXllckltcGxzIGluIHRoZSB0cmVlIHByb3ZpZGVkIGJ5IG9s
ZENDTGF5ZXJJbXBsUm9vdCBpZiBwb3NzaWJsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xh
eWVySW1wbD4gc3luY2hyb25pemVUcmVlcyhMYXllckNocm9taXVtKiBsYXllclJvb3QsIFBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCk7CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJS
b290LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QpOwogCiBwcml2
YXRlOgotICAgIFRyZWVTeW5jaHJvbml6ZXIoKTsgLy8gTm90IGluc3RhbnRpYWJsZS4KKyAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NMYXllckltcGw+ID4gQ0NMYXllckltcGxNYXA7
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q0NMYXllckltcGw+ID4gQ0NMYXll
ckltcGxNYXA7CisgICAgVHJlZVN5bmNocm9uaXplcigpOyAvLyBOb3QgaW5zdGFudGlhYmxlLgog
Ci0gICAgLy8gRGVjbGFyZWQgYXMgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgc28gdGhleSBjYW4g
YWNjZXNzIGZ1bmN0aW9ucyBvbiBMYXllckNocm9taXVtIGFzIGEgZnJpZW5kIGNsYXNzLgotICAg
IHN0YXRpYyB2b2lkIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFw
JiwgQ0NMYXllckltcGwqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gc3lu
Y2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbE1hcCYpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByZXVzZU9yQ3JlYXRlQ0NMYXllcklt
cGwoQ0NMYXllckltcGxNYXAmLCBMYXllckNocm9taXVtKik7CisgICAgc3RhdGljIHZvaWQgY29s
bGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmLCBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHN5
bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYsIExheWVyQ2hyb21pdW0qKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGFlMmFlOGM4MGUyMmExOTM4YWViNDlhNDY3OTNlMjMwZTI4YjgyOGEuLmU2OTEx
OTgxZWQwNjFkYzY3ZGU1MzRlM2ViNjcwMDUzNGI5OWQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06On5WaWRl
b0xheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBWaWRlb0xh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBD
Q1ZpZGVvTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkLCBtX3Byb3ZpZGVyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggODc4ODA2ZTI2ZGI1NDczMDIyNDE2MjMwZWMxMDVm
YWJmOWI4ZTY0YS4uMWYyZTkyMDEyNGZjNGYwMDYyZTJkNjUyNmI2MDJlY2NkNGFjN2JmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKFZpZGVvRnJhbWVQ
cm92aWRlciogPSAwKTsKICAgICB2aXJ0dWFsIH5WaWRlb0xheWVyQ2hyb21pdW0oKTsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgVmlkZW9MYXllckNocm9taXVtKFZpZGVvRnJhbWVQcm92
aWRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKaW5kZXggOTEyNmE3ZDQ0NTAx
ZTYzMjViNWVmZDRiNTdjYmE5ZTQ2YmM4YTc1YS4uYzk2YWYyNDZlZDNiYTc1ODk1YmJlZjU1MmQ0
Yzk4ZDRlODBiNWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCkBAIC0zNCw5
ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDYW52YXNMYXllckltcGwg
OiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEND
Q2FudmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
Q2FudmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDQ0NhbnZhc0xheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDQ2Fu
dmFzTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCmluZGV4IDJk
NmY0M2YzMTg1ZmM0NDVjYTk5NTlmZTgwNGY2MjRiM2I0ZTEzM2YuLjZhMDYyY2FjYTdjYzU4NzVm
MmM5MjU5OTg1NmI2YTVlYzhlNTNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBDQ0RhbWFnZVRyYWNrZXI6On5DQ0RhbWFnZVRyYWNrZXIoKQog
ewogfQogCi12b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShj
b25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIGludCB0YXJnZXRT
dXJmYWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpCit2b2lk
IENDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8
Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIENDTGF5
ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVyKQogewogICAgIC8vCiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBjb21wdXRlcyB0aGUgImRhbWFnZSByZWN0IiBvZiBhIHRhcmdldCBzdXJmYWNlLCBh
bmQgdXBkYXRlcyB0aGUgc3RhdGUKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENDRGFtYWdlVHJh
Y2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5
ZXJJbXBsPgogCiAgICAgLy8gSWYgdGhlIHRhcmdldCBzdXJmYWNlIGFscmVhZHkga25vd3MgaXRz
IGVudGlyZSByZWdpb24gaXMgZGFtYWdlZCwgd2UgY2FuIHJldHVybiBlYXJseS4KICAgICAvLyBG
SVhNRTogdGhpcyBzaG91bGQgZ28gYXdheSwgb3Igd2lsbCBiZSBjbGVhbmVyLCBhZnRlciByZWZh
Y3RvcmluZyBpbnRvIFJlbmRlclBhc3MvUmVuZGVyU2NoZWR1bGUuCi0gICAgQ0NMYXllckltcGwq
IGxheWVyID0gbGF5ZXJMaXN0WzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IGxh
eWVyTGlzdFswXTsKICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UgPSBsYXllci0+
dGFyZ2V0UmVuZGVyU3VyZmFjZSgpOwogCiAgICAgaWYgKG1fZm9yY2VGdWxsRGFtYWdlTmV4dFVw
ZGF0ZSB8fCB0YXJnZXRTdXJmYWNlLT5zdXJmYWNlUHJvcGVydHlDaGFuZ2VkT25seUZyb21EZXNj
ZW5kYW50KCkpIHsKQEAgLTE2MSwxMiArMTYxLDEyIEBAIHZvaWQgQ0NEYW1hZ2VUcmFja2VyOjpz
YXZlUmVjdEZvck5leHRGcmFtZShpbnQgbGF5ZXJJRCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRT
CiAgICAgbV9uZXh0UmVjdEhpc3RvcnktPnNldChsYXllcklELCB0YXJnZXRTcGFjZVJlY3QpOwog
fQogCi1GbG9hdFJlY3QgQ0NEYW1hZ2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXll
cnMoY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBpbnQgdGFy
Z2V0U3VyZmFjZUxheWVySUQpCitGbG9hdFJlY3QgQ0NEYW1hZ2VUcmFja2VyOjp0cmFja0RhbWFn
ZUZyb21BY3RpdmVMYXllcnMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwg
aW50IHRhcmdldFN1cmZhY2VMYXllcklEKQogewogICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0g
RmxvYXRSZWN0KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllcklu
ZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgIENDTGF5ZXJJ
bXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgQ0NMYXll
ckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdOwogCiAgICAgICAgIGlmIChDQ0xh
eWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5
ZXJJbXBsPihsYXllciwgdGFyZ2V0U3VyZmFjZUxheWVySUQpKQogICAgICAgICAgICAgZXh0ZW5k
RGFtYWdlRm9yUmVuZGVyU3VyZmFjZShsYXllciwgZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFt
YWdlVHJhY2tlci5oCmluZGV4IGQ0MjhmMjZkMWEwYzI1Y2EwYzQ4MWMwOTNlYjNhOGZmYmEzYmI4
MDkuLjdhNjI5YzQ3ODEyODFiZTRkZmExYzQ5ZGQxM2IxMWU0Zjk1NTBmNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5oCkBAIC00NCwxMyArNDQsMTMgQEAgcHVibGljOgogICAgIH5DQ0Rh
bWFnZVRyYWNrZXIoKTsKIAogICAgIHZvaWQgZm9yY2VGdWxsRGFtYWdlTmV4dFVwZGF0ZSgpIHsg
bV9mb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlID0gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlRGFt
YWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXll
ckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZh
Y2VNYXNrTGF5ZXIpOworICAgIHZvaWQgdXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBW
ZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQs
IENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVyKTsKICAgICBjb25zdCBGbG9hdFJl
Y3QmIGN1cnJlbnREYW1hZ2VSZWN0KCkgeyByZXR1cm4gbV9jdXJyZW50RGFtYWdlUmVjdDsgfQog
CiBwcml2YXRlOgogICAgIENDRGFtYWdlVHJhY2tlcigpOwogCi0gICAgRmxvYXRSZWN0IHRyYWNr
RGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+
JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CisgICAgRmxvYXRSZWN0IHRy
YWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5
ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpOwogICAgIEZsb2F0UmVjdCB0cmFja0Rh
bWFnZUZyb21TdXJmYWNlTWFzayhDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllcik7
CiAgICAgRmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJvbUxlZnRvdmVyUmVjdHMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwCmluZGV4IDBiZmI3MzcwN2E0YjVkN2UxNmVmMjg5N2Y4MmVkM2Y5NGZl
MTFjMGYuLmU1OTc2YTIxY2Y3YWNiY2UyMjA5ZGM0N2VkYmQxNTkwZDkwOTAwNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgQ0NMYXllckltcGw6On5DQ0xheWVy
SW1wbCgpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIH0KIAotdm9pZCBD
Q0xheWVySW1wbDo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQpCit2b2lk
IENDTGF5ZXJJbXBsOjphZGRDaGlsZChQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCkKIHsK
ICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxk
KTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgIHRzIDw8ICJkcmF3c0Nv
bnRlbnQ6ICIgPDwgKG1fZHJhd3NDb250ZW50ID8gInllcyIgOiAibm8iKSA8PCAiXG4iOwogfQog
Ci12b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3Ig
Zmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGVuZCwgQ0NMYXll
clNvcnRlciogbGF5ZXJTb3J0ZXIpCit2b2lkIHNvcnRMYXllcnMoVmVjdG9yPENDTGF5ZXJJbXBs
Kj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8Q0NMYXllckltcGwqPjo6aXRlcmF0b3IgZW5kLCBD
Q0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpzb3J0TGF5ZXJzIiwgMCwgMCk7CiAgICAgbGF5ZXJTb3J0ZXItPnNvcnQo
Zmlyc3QsIGVuZCk7CkBAIC0zMjAsMjAgKzMyMCwxNCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRC
b3VuZHMoY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFu
Z2VkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza0xheWVyKFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3ZvaWQgQ0NMYXllckltcGw6OnNldE1hc2tMYXll
cihQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIpCiB7Ci0gICAgaWYgKG1fbWFza0xh
eWVyID09IG1hc2tMYXllcikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9tYXNrTGF5ZXIgPSBt
YXNrTGF5ZXI7CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQog
Ci12b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gcmVwbGljYUxheWVyKQordm9pZCBDQ0xheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFBhc3NP
d25QdHI8Q0NMYXllckltcGw+IHJlcGxpY2FMYXllcikKIHsKLSAgICBpZiAobV9yZXBsaWNhTGF5
ZXIgPT0gcmVwbGljYUxheWVyKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3JlcGxpY2FMYXll
ciA9IHJlcGxpY2FMYXllcjsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA4ZmJhYmFlODZhNmJkNmFjOGQ2NWNiN2U3
ZTA2Y2E2YzliZTY5MTgwLi4wYzRiNjliNzlmMmZmMWMzNzc4ZWUwY2RkOThhZjE2ZTEyNGZmMzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTQ1LDI1ICs0NSwyNSBAQCBjbGFzcyBDQ0xheWVy
U29ydGVyOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1
bTsKIAotY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxDQ0xheWVySW1wbD4g
eworY2xhc3MgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJ
bXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
Q0xheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJJbXBs
KGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDTGF5ZXJJbXBsKCk7CiAKICAgICAvLyBUcmVl
IHN0cnVjdHVyZS4KICAgICBDQ0xheWVySW1wbCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KLSAgICB2b2lkIGFkZENoaWxkKFBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+KTsKKyAgICBjb25zdCBWZWN0b3I8T3duUHRyPENDTGF5ZXJJbXBs
PiA+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KKyAgICB2b2lkIGFk
ZENoaWxkKFBhc3NPd25QdHI8Q0NMYXllckltcGw+KTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJl
bnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICB2b2lkIHNldE1hc2tM
YXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUGFz
c093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX21hc2tMYXllci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhTGF5
ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOworICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBh
c3NPd25QdHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogcmVwbGljYUxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIuZ2V0KCk7IH0KIAogICAgIGludCBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQpAQCAtMjMwLDkgKzIzMCw5IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBQcm9wZXJ0aWVzIGludGVybmFsIHRvIENDTGF5ZXJJbXBsCiAgICAgQ0NMYXllcklt
cGwqIG1fcGFyZW50OwotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gbV9jaGlsZHJl
bjsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fbWFza0xheWVyOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gbV9yZXBsaWNhTGF5ZXI7CisgICAgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4g
PiBtX2NoaWxkcmVuOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9tYXNrTGF5ZXI7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBtX3JlcGxpY2FMYXllcjsKICAgICBpbnQgbV9sYXllcklkOwog
CiAgICAgLy8gUHJvcGVydGllcyBzeW5jaHJvbml6ZWQgZnJvbSB0aGUgYXNzb2NpYXRlZCBMYXll
ckNocm9taXVtLgpAQCAtMzE0LDcgKzMxNCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
dXBkYXRlUmVjdDsKIH07CiAKLXZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPENDTGF5ZXJJ
bXBsPiA+OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRl
cmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKik7Cit2b2lkIHNvcnRMYXllcnMoVmVjdG9yPENDTGF5
ZXJJbXBsKj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8Q0NMYXllckltcGwqPjo6aXRlcmF0b3Ig
ZW5kLCBDQ0xheWVyU29ydGVyKik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaApp
bmRleCA4ZjQxMmM0NGQzZDE0MDQ3MGZkMTJhNzI3YjkxNGU0ZDQ2ZmJlYjE0Li41YWU5NjQxZmQx
OTBlMWE4MTNiNDYyNWMxMTI5YWI0NzRhOTBhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0
b3IuaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBDQ0xheWVySXRlcmF0b3IgewogcHVibGljOgog
ICAgIENDTGF5ZXJJdGVyYXRvcigpIHsgfQogCi0gICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5
cGUgYmVnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgdHJ1ZSk7IH0KLSAgICBzdGF0aWMgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgcmV0
dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZmFsc2UpOyB9
CisgICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5cGUgYmVnaW4oY29uc3QgVmVjdG9yPExheWVy
VHlwZSo+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0b3JU
eXBlKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHRydWUpOyB9CisgICAgc3RhdGljIENDTGF5ZXJJ
dGVyYXRvclR5cGUgZW5kKGNvbnN0IFZlY3RvcjxMYXllclR5cGUqPiogcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBmYWxzZSk7IH0KIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUmIG9wZXJhdG9yKysoKSB7
IEFTU0VSVChtX2FjdGlvbnMpOyBtX2FjdGlvbnMtPm5leHQobV9wb3NpdGlvbik7IHJldHVybiAq
dGhpczsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDQ0xheWVySXRlcmF0b3JUeXBlJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOyB9CkBA
IC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIExheWVyVHlwZSogdGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi50YXJnZXRSZW5kZXJTdXJmYWNl
TGF5ZXIoKTsgfQogCiBwcml2YXRlOgotICAgIENDTGF5ZXJJdGVyYXRvcihjb25zdCBWZWN0b3I8
UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgYm9vbCBzdGFydCkK
KyAgICBDQ0xheWVySXRlcmF0b3IoY29uc3QgVmVjdG9yPExheWVyVHlwZSo+KiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBib29sIHN0YXJ0KQogICAgICAgICA6IG1fcG9zaXRpb24ocmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkKICAgICAgICAgLCBtX2FjdGlvbnMoYWRvcHRQdHIobmV3IEl0ZXJhdG9y
QWN0aW9uVHlwZSgpKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9z
aXRpb24uaAppbmRleCBiMWY2M2M0NWY3NDJjMDNjNjBkZWY5YjIxNzM4NDBhZmI4NmMzMjYzLi4y
ZmIwY2M5OWM4MjA0NjM1MDhmNjRmMTQ0MmEyZDlkZGIyYjBkNTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQ
b3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJdGVyYXRvclBvc2l0aW9uLmgKQEAgLTU5LDE2ICs1OSwxNiBAQCBzdHJ1Y3Qg
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb25WYWx1ZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgogc3RydWN0IENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uIHsKICAgICBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbigpIDogcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCgwKSB7IH0KLSAgICBleHBsaWNpdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbihjb25z
dCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgOiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgfQorICAgIGV4
cGxpY2l0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKGNvbnN0IFZlY3RvcjxMYXllclR5cGUqPiog
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgOiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1
cmZhY2VMYXllckxpc3QpIHsgfQogCi0gICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVy
KCkgY29uc3QgeyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZh
Y2UoKSA/IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogdGFyZ2V0UmVuZGVyU3VyZmFjZUNo
aWxkcmVuKClbY3VycmVudExheWVySW5kZXhdLmdldCgpOyB9CisgICAgaW5saW5lIExheWVyVHlw
ZSogY3VycmVudExheWVyKCkgY29uc3QgeyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1Rh
cmdldFJlbmRlclN1cmZhY2UoKSA/IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogdGFyZ2V0
UmVuZGVyU3VyZmFjZUNoaWxkcmVuKClbY3VycmVudExheWVySW5kZXhdOyB9CiAKICAgICBpbmxp
bmUgYm9vbCBjdXJyZW50TGF5ZXJSZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgp
IGNvbnN0IHsgcmV0dXJuIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRy
aWJ1dGVzVG9UYXJnZXQ8TGF5ZXJUeXBlPihjdXJyZW50TGF5ZXIoKSwgdGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVyKCktPmlkKCkpOyB9CiAgICAgaW5saW5lIGJvb2wgY3VycmVudExheWVyUmVwcmVz
ZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJJbmRl
eCA9PSBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlOjpMYXllckluZGV4UmVwcmVzZW50aW5n
VGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQogCi0gICAgaW5saW5lIExheWVyVHlwZSogdGFyZ2V0UmVu
ZGVyU3VyZmFjZUxheWVyKCkgY29uc3QgeyByZXR1cm4gKCpyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KVt0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleF0uZ2V0KCk7IH0KKyAgICBpbmxpbmUgTGF5
ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJldHVybiAoKnJlbmRl
clN1cmZhY2VMYXllckxpc3QpW3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4XTsgfQogICAg
IGlubGluZSBSZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsg
cmV0dXJuIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7IH0KLSAg
ICBpbmxpbmUgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIHRhcmdldFJlbmRlclN1
cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRhcmdldFJlbmRlclN1cmZhY2UoKS0+bGF5
ZXJMaXN0KCk7IH0KKyAgICBpbmxpbmUgY29uc3QgVmVjdG9yPExheWVyVHlwZSo+JiB0YXJnZXRS
ZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0YXJnZXRSZW5kZXJTdXJmYWNl
KCktPmxheWVyTGlzdCgpOyB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC03Niw3ICs3Niw3
IEBAIHN0cnVjdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbiB7CiAgICAgICAgICAgICAmJiBjdXJy
ZW50TGF5ZXJJbmRleCA9PSBvdGhlci5jdXJyZW50TGF5ZXJJbmRleDsKICAgICB9CiAKLSAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
KyAgICBjb25zdCBWZWN0b3I8TGF5ZXJUeXBlKj4qIHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAg
ICAgaW50IHRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4OwogICAgIGludCBjdXJyZW50TGF5
ZXJJbmRleDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCmluZGV4IDc1Mjg1NTQ0NzE3
Y2ZkYjVhOWEyY2QzY2FmN2RmZDMwY2IyNzE5NjQuLmM0MzRhMWQ5NTEyNDYzNTUzNzcyNzY3Mjgy
MDkwNzNlYzQ5ZjAwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCkBAIC0yOTUsNyAr
Mjk1LDcgQEAgdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVzKExheWVyTGlzdDo6
aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRlcmEKICAgICBmbG9hdCBtaW5aID0gRkxUX01B
WDsKICAgICBmbG9hdCBtYXhaID0gLUZMVF9NQVg7CiAgICAgZm9yIChMYXllckxpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gZmlyc3Q7IGl0IDwgbGFzdDsgaXQrKykgewotICAgICAgICBtX25vZGVz
LmFwcGVuZChHcmFwaE5vZGUoaXQtPmdldCgpKSk7CisgICAgICAgIG1fbm9kZXMuYXBwZW5kKEdy
YXBoTm9kZSgqaXQpKTsKICAgICAgICAgR3JhcGhOb2RlJiBub2RlID0gbV9ub2Rlcy5hdChtX25v
ZGVzLnNpemUoKSAtIDEpOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2Ug
PSBub2RlLmxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIGlmICghbm9kZS5sYXllci0+
ZHJhd3NDb250ZW50KCkgJiYgIXJlbmRlclN1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgK
aW5kZXggMmMzMGQ1ZGFlNGEwOTkwZjRjMjE0ZTBlZWZkMDYwMzc0YTcxY2I5Ni4uOGFiOWI3NTgx
NGU4Y2M2ZmEyZWNiYjFjYmRlODg3MWQyMTMwYzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIu
aApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDQ0xheWVyU29ydGVyIHsKIHB1YmxpYzoKICAgICBD
Q0xheWVyU29ydGVyKCk7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gTGF5ZXJMaXN0
OwogCiAgICAgdm9pZCBzb3J0KExheWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6
aXRlcmF0b3IgbGFzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY4
MTQ0ZTEwMmM1YmZmOTVlZDM0MjhjOTYyMjJiYmQyMjliNjVkNjIuLjA2ZjEzNzk0Mjc5N2QyMDE0
YTQxZWFmMzRiYTViOGFkZjlmMGUxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMTcwLDEyICsxNzAsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKLSAgICAvLyBTeW5jaHJvbml6ZSB0cmVlcywg
aWYgb25lIGV4aXN0cyBhdCBhbGwuLi4KLSAgICBpZiAocm9vdExheWVyKCkpCi0gICAgICAgIGhv
c3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhy
b290TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7Ci0gICAgZWxzZQotICAgICAgICBo
b3N0SW1wbC0+c2V0Um9vdExheWVyKDApOwotCisgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+
cmVsZWFzZVJvb3RMYXllcigpKSk7CiAgICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVy
KGZyYW1lTnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJz
KG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZSh2aWV3cG9ydFNpemUoKSk7CkBAIC0zMzksMTMgKzMzNCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGhvc3RJbQogICAgIC8vIElmIHRoZSBmcm9udGJ1ZmZlciBpcyBjYWNoZWQsIHRoZW4gY2xvYmJl
ciB0aGUgaW1wbCB0cmVlLiBPdGhlcndpc2UsCiAgICAgLy8gcHVzaCBvdmVyIHRoZSB0cmVlIGNo
YW5nZXMuCiAgICAgaWYgKG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5jb250
ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpIHsKLSAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cigwKTsKKyAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihudWxscHRyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAocm9vdExheWVyKCkpCi0gICAgICAgIGhvc3RJbXBsLT5z
ZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhyb290TGF5ZXIo
KSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7Ci0gICAgZWxzZQotICAgICAgICBob3N0SW1wbC0+
c2V0Um9vdExheWVyKDApOworICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9u
aXplcjo6c3luY2hyb25pemVUcmVlcyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJlbGVhc2VSb290
TGF5ZXIoKSkpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0SGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCkBAIC01OTAsNyArNTgyLDcgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIENDVGUKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRp
bmdVcGRhdGUoKQogewogICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJ
bmRleCA8IG1fdXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExh
eWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Cisg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF07
CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXIt
PmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggZDgxYjhlNGRhZmYxZjBlNmZkODg3OGViMTJiMTA2Y2QzN2Q3M2Q4Zi4uZTVmOGJmMjQw
ZmIzNGZmNDQ2Zjk2ZjAzMTZmZTcxODEyMjMzMTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXpl
KCk7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBMYXllckxp
c3Q7CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVM
aXN0OwogCiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggODdmM2I1MWYzNWNiNWMzYzk0ZjMw
N2Y3NjkzYWJiNjhmYzgwN2I1Zi4uNTYxMGIxNTZlNjI1MTkzNDk4OWIwMDgxNDMzZThhYmVmNTg1
ZjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0x
MDcsOSArMTA3LDkgQEAgYm9vbCBsYXllclNob3VsZEJlU2tpcHBlZChMYXllclR5cGUqIGxheWVy
KQogLy8gUmVjdXJzaXZlbHkgd2Fsa3MgdGhlIGxheWVyIHRyZWUgc3RhcnRpbmcgYXQgdGhlIGdp
dmVuIG5vZGUgYW5kIGNvbXB1dGVzIGFsbCB0aGUKIC8vIG5lY2Vzc2FyeSB0cmFuc2Zvcm1hdGlv
bnMsIGNsaXBSZWN0cywgcmVuZGVyIHN1cmZhY2VzLCBldGMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBMYXllclNvcnRl
cj4KLXN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVy
bmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiBsYXllckxpc3QsIExh
eWVyU29ydGVyKiBsYXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXplKQorc3RhdGljIGJvb2wg
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBs
YXllciwgTGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBw
YXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0
cml4LCBWZWN0b3I8TGF5ZXJUeXBlKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxM
YXllclR5cGUqPiYgbGF5ZXJMaXN0LCBMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhU
ZXh0dXJlU2l6ZSkKIHsKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+IExh
eWVyTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxMYXllclR5cGUqPiBMYXllckxpc3Q7CiAKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBuZXcgbWF0cml4IHRyYW5zZm9ybWF0aW9u
cyByZWN1cnNpdmVseSBmb3IgdGhpcwogICAgIC8vIGxheWVyIGFuZCBhbGwgaXRzIGRlc2NlbmRh
bnRzLiBJdCBhbHNvIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSByZW5kZXIgc3VyZmFjZXMuCkBA
IC00NzEsNyArNDcxLDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKIC8vIHRyZWUgcGFzcywg
cmV2aXNlIGNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoKSBzbyB0aGF0IHRoaXMgY2FuIGJlIGRv
bmUgaW4gYSBzaW5nbGUKIC8vIHBhc3MgaW5zaWRlIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eUludGVybmFsPD4oKS4KIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1zdGF0aWMgdm9pZCB3YWxrTGF5ZXJzQW5kQ2FsY3Vs
YXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpCitzdGF0aWMgdm9pZCB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRl
VmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPExheWVyVHlwZSo+JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KQogewogICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFu
ZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRv
cjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpC
YWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKQEAgLTQ4NSwxMyArNDg1LDEzIEBAIHN0
YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBW
ZWN0b3I8UmVmUHRyPExheWVyVHlwCiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0q
IGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFy
Y2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQg
bWF4VGV4dHVyZVNpemUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9t
aXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8
TGF5ZXJDaHJvbWl1bSo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8TGF5ZXJDaHJv
bWl1bSo+JiBsYXllckxpc3QsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKICAgICBXZWJDb3JlOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIHZvaWQqPihsYXllciwgcm9vdExheWVyLCBwYXJlbnRN
YXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVy
TGlzdCwgMCwgbWF4VGV4dHVyZVNpemUpOwogICAgIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNp
YmxlTGF5ZXJSZWN0czxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+KHJlbmRl
clN1cmZhY2VMYXllckxpc3QpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiBsYXllciwgQ0NM
YXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1h
dHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZl
Y3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3Rv
cjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJT
b3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxheWVyLCBD
Q0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50
TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwg
VmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xh
eWVySW1wbCo+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4
VGV4dHVyZVNpemUpCiB7CiAgICAgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
SW50ZXJuYWw8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllclNvcnRlcj4obGF5
ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5TWF0cml4LCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsIGxheWVyU29ydGVyLCBtYXhUZXh0dXJlU2l6ZSk7
CiAgICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2U+KHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaAppbmRleCAyZTBjYmNmMmM1ODVlODIxNWQyODZkZWU5
YjYxZTUzNTE4MGNmZmFkLi5iZmJjMzIyYTZkZjQ3YjllMDg1MWRhZGMzMWVmMjYyODNhNzkzMjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaApAQCAtNDIsOCArNDIs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJsZVJlY3QoY29u
c3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4gc3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdChMYXll
clR5cGUqKTsKIAotICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShMYXllckNocm9taXVtKiwgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4m
IGxheWVyTGlzdCwgaW50IG1heFRleHR1cmVTaXplKTsKLSAgICBzdGF0aWMgdm9pZCBjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBDQ0xheWVySW1wbCog
cm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0
cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxD
Q0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVyKiwgaW50IG1heFRleHR1cmVT
aXplKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkoTGF5ZXJDaHJvbWl1bSosIExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxMYXllckNocm9taXVtKj4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIFZlY3RvcjxMYXllckNocm9taXVtKj4mIGxheWVyTGlzdCwgaW50IG1heFRl
eHR1cmVTaXplKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkoQ0NMYXllckltcGwqLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0
ZXIqLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJU
eXBlPiBzdGF0aWMgYm9vbCByZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldChMYXllclR5
cGUqLCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IGU0NmFlMzI0OWYzODE1Y2Q5YjAxOTFhOTI4NzFmYTE3ZjJh
OWRiODYuLmRmNzVhODA3NDE5OTVjMGIyMjQyNzQxNjczNWJmMzMyODc2YzNkNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00OSw2ICs0OSw3IEBAIENDTGF5
ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MsIENDTGF5ZXJUcmVlCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJj
ZUZyYW1lTnVtYmVyKC0xKQogICAgICwgbV9mcmFtZU51bWJlcigwKQorICAgICwgbV9zY3JvbGxM
YXllckltcGwoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUo
dHJ1ZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKQEAgLTE0NSw3ICsx
NDYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYWNrRGFtYWdlRm9yQWxsU3VyZmFj
ZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsCiAgICAgLy8gZGFtYWdlIHJlY3QuIFRoZSBy
b290IGRhbWFnZSByZWN0IGlzIHRoZW4gdXNlZCB0byBzY2lzc29yIGVhY2ggc3VyZmFjZS4KIAog
ICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgp
IC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBDQ0xh
eWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOworICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVy
ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdOwogICAgICAgICBDQ1JlbmRl
clN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICByZW5kZXJTdXJm
YWNlLT5kYW1hZ2VUcmFja2VyKCktPnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUocmVuZGVyU3Vy
ZmFjZS0+bGF5ZXJMaXN0KCksIHJlbmRlclN1cmZhY2VMYXllci0+aWQoKSwgcmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKSk7CkBAIC0yMTAsNyArMjExLDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2Vz
KQogICAgIG1fcm9vdERhbWFnZVJlY3QgPSByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5k
YW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAKICAgICBmb3IgKGludCBzdXJm
YWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRl
eCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1
cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsK
KyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Rbc3VyZmFjZUluZGV4XTsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKICAgICAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclN1
cmZhY2UpOwpAQCAtMjIyLDcgKzIyMyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcykKIAogICAgICAgICBj
b25zdCBDQ0xheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXggPCBsYXll
ckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIENDTGF5ZXJJbXBsKiBs
YXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIENDTGF5ZXJJ
bXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XTsKICAgICAgICAgICAgIGlmIChsYXll
ci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIApAQCAtMzMyLDcgKzMzMyw3IEBAIHN0YXRpYyBDQ0xheWVySW1wbCogZmluZFNjcm9sbExh
eWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXIp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcihQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllckltcGwgPSBsYXllcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDVlZTAzOTlmNWI0NTcyMjVhOTFkZmY2
Yjc3N2NkNWQ4YTc2ZDZhOWYuLmRiMTkyODAxY2VmMWI1ZDUwNTdjNjFjMDI4MDg5NDJhNDBhMDAw
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTkyLDkgKzkyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVj
dCYpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dExheWVySW1wbC5nZXQoKTsgfQotICAgIHZvaWQgc2V0Um9vdExheWVyKFBhc3NSZWZQdHI8Q0NM
YXllckltcGw+KTsKKyAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzT3duUHRyPENDTGF5ZXJJbXBs
Pik7CisgICAgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcmVsZWFzZVJvb3RMYXllcigpIHsgcmV0
dXJuIG1fcm9vdExheWVySW1wbC5yZWxlYXNlKCk7IH0KIAotICAgIENDTGF5ZXJJbXBsKiBzY3Jv
bGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXJJbXBsLmdldCgpOyB9CisgICAg
Q0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcklt
cGw7IH0KIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQog
ICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKQEAgLTEyNiw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPENDTGF5ZXJJbXBsPiA+IENDTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPEND
TGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZURlbHRhKGZs
b2F0KTsKICAgICB2b2lkIGFwcGx5UGFnZVNjYWxlRGVsdGFUb1Njcm9sbExheWVyKCk7CkBAIC0x
MzgsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7
CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7Ci0g
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBtX3Njcm9sbExheWVySW1wbDsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9v
dExheWVySW1wbDsKKyAgICBDQ0xheWVySW1wbCogbV9zY3JvbGxMYXllckltcGw7CiAgICAgQ0NT
ZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgYm9v
bCBtX3Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAppbmRleCAzOWE5NTk1
MWRkZjNiYzlmNDQ5NzU0NDI3MjI5ZTVjNTkzYzI4N2M3Li45ZDlhNGRkMTA0ZTk5MjM4MDQ4Y2Mz
YzU2ZGIxMWM4MzhhMGNjZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKQEAg
LTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1BsdWdpbkxheWVy
SW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q0NQbHVnaW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NQbHVnaW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENDUGx1Z2luTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+
Q0NQbHVnaW5MYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA0
MzdhOTFjYzAzODkwOWY5MjU1MDM2YjA0ZTFlMTRkMTZkOTFjYmMxLi4zMTVjOWRkYzE5MDRkMWE4
MDE4MDM4ZGZiM2U5ZTZiOTgwMDI4NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApA
QCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJl
dHVybiBtX3NraXBzRHJhdzsgfQogCiAgICAgdm9pZCBjbGVhckxheWVyTGlzdCgpIHsgbV9sYXll
ckxpc3QuY2xlYXIoKTsgfQotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVy
TGlzdCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4m
IGxheWVyTGlzdCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CiAKICAgICB2b2lkIHNldE1hc2tM
YXllcihDQ0xheWVySW1wbCogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFza0xheWVyOyB9
CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fb3JpZ2luVHJhbnNmb3JtOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwogICAg
IEludFJlY3QgbV9jbGlwUmVjdDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IG1f
bGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJMaXN0OwogCiAgICAg
T3duUHRyPENDRGFtYWdlVHJhY2tlcj4gbV9kYW1hZ2VUcmFja2VyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IGM3ZWRjMThiMmMyODRjMjI4YTkyMTU3YTZh
OTdjMTkzNDViOGZiN2YuLjJlNzQ0MTY2NmY5OWYzNjk4MTkyNTRhMGM0NTcwYzdkNjZkNmJjYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0zNSw5ICszNSw5
IEBAIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1NvbGlkQ29sb3JMYXllckltcGwoaWQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29sb3JMYXllckltcGwoaWQpKTsKICAg
ICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuaAppbmRleCA3YWQ3MTU5OWIyMTM2NTg1OGExYzVhNWY3YTljZjQyNDFl
YTA2OGIwLi43ZTYzN2NmZmI0Y2M3YmY3YmRhYWY5ZDYwOWJkMmEzNTYxNDlmZjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC0zNyw5ICszNyw5IEBAIGNsYXNzIERyYXdhYmxl
VGlsZTsKIAogY2xhc3MgQ0NUaWxlZExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlKGlu
dCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGUoaW50
IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1RpbGVkTGF5ZXJJbXBs
KGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1wbChpZCkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuaAppbmRleCAxODJmN2I1ODI3YzkxY2JmZmVlNWQzYmFlYWQxMDg1MWY2
ZmZiYTk1Li5mYzFiMGQwOGYzZTg5YTVlMmYwMWM0ZGUyNmEzMjA1Zjk1Njk5MmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC00MCw5ICs0MCw5IEBAIHRlbXBsYXRlPGNsYXNz
IFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+IGNsYXNzIFByb2dyYW1CaW5kaW5n
OwogY2xhc3MgQ0NWaWRlb0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbAogICAgICAgICAg
ICAgICAgICAgICAgICAsIHB1YmxpYyBWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NWaWRlb0xheWVySW1wbD4gY3JlYXRlKGludCBp
ZCwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1ZpZGVvTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3Zp
ZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1ZpZGVvTGF5ZXJJbXBs
KGlkLCBwcm92aWRlcikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVmlkZW9MYXll
ckltcGwoaWQsIHByb3ZpZGVyKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllcklt
cGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFn
ZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VU
cmFja2VyVGVzdC5jcHAKaW5kZXggYTlmN2IxYzFhMWU4OWYxZGJjZjlmNTAzMzRjMDVmM2ExMzNl
MDM4YS4uNDcyNGNhMGFmOTRmMDM2NDVkMDBlM2M2NjIxOGY5MzMzZmI2YzI2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3Bw
CkBAIC0zOSwxMSArMzksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1l
c3BhY2UgewogCi12b2lkIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkoQ0NMYXllckltcGwqIHJvb3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpCit2b2lkIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIHJvb3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIENDTGF5ZXJTb3J0ZXIgbGF5ZXJTb3J0ZXI7CiAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgVmVjdG9yPFJlZlB0
cjxDQ0xheWVySW1wbD4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwq
PiBkdW1teUxheWVyTGlzdDsKICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAog
ICAgIC8vIFNhbml0eSBjaGVjazogVGhlIHRlc3QgaXRzZWxmIHNob3VsZCBjcmVhdGUgdGhlIHJv
b3QgbGF5ZXIncyByZW5kZXIgc3VyZmFjZSwgc28KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBlbXVs
YXRlRHJhd2luZ09uZUZyYW1lKENDTGF5ZXJJbXBsKiByb290KQogICAgIC8vICAgMi4gdXBkYXRp
bmcgYWxsIGRhbWFnZSB0cmFja2VycyBpbiB0aGUgY29ycmVjdCBvcmRlcgogICAgIC8vICAgMy4g
cmVzZXR0aW5nIGFsbCB1cGRhdGVSZWN0cyBhbmQgcHJvcGVydHlDaGFuZ2VkIGZsYWdzIGZvciBh
bGwgbGF5ZXJzIGFuZCBzdXJmYWNlcy4KIAotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocm9vdCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKICAgICAvLyBJdGVy
YXRlIGJhY2stdG8tZnJvbnQsIHNvIHRoYXQgZGFtYWdlIGNvcnJlY3RseSBwcm9wYWdhdGVzIGZy
b20gZGVzY2VuZGFudCBzdXJmYWNlcyB0byBhbmNlc3RvcnMuCkBAIC03NiwxMCArNzYsMTAgQEAg
dm9pZCBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKENDTGF5ZXJJbXBsKiByb290KQogICAgIHJvb3Qt
PnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQorUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiB7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwogCiAgICAgcm9vdC0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtOTIsMjIgKzkyLDIyIEBAIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQogICAgIGNoaWxkLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGNoaWxkLT5zZXRCb3VuZHMoSW50U2l6
ZSgzMCwgMzApKTsKICAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIHJvb3Qt
PmFkZENoaWxkKGNoaWxkKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwog
CiAgICAgcmV0dXJuIHJvb3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiB7CiAgICAgLy8gVGhpcyB0ZXN0IHRy
ZWUgaGFzIHR3byByZW5kZXIgc3VyZmFjZXM6IG9uZSBmb3IgdGhlIHJvb3QsIGFuZCBvbmUgZm9y
CiAgICAgLy8gY2hpbGQxLiBBZGRpdGlvbmFsbHksIHRoZSByb290IGhhcyBhIHNlY29uZCBjaGls
ZCBsYXllciwgYW5kIGNoaWxkMSBoYXMgdHdvCiAgICAgLy8gY2hpbGRyZW4gb2YgaXRzIG93bi4K
IAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIp
OwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgz
KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQyID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxk
MiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CiAKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9h
dFBvaW50Ojp6ZXJvKCkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onpl
cm8oKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiAgICAgZ3JhbmRDaGlsZDItPnNldEJvdW5kcyhJ
bnRTaXplKDYsIDgpKTsKICAgICBncmFuZENoaWxkMi0+c2V0RHJhd3NDb250ZW50KHRydWUpOwog
Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMSk7Ci0gICAgY2hpbGQxLT5hZGRDaGls
ZChncmFuZENoaWxkMik7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICByb290LT5h
ZGRDaGlsZChjaGlsZDIpOworICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDEucmVsZWFz
ZSgpKTsKKyAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQyLnJlbGVhc2UoKSk7CisgICAg
cm9vdC0+YWRkQ2hpbGQoY2hpbGQxLnJlbGVhc2UoKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoY2hp
bGQyLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gcm9vdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgp
CitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVl
V2l0aE9uZVN1cmZhY2UoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVU
ZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CiAKICAgICAvLyBTZXR1cCBpbmNsdWRlcyBnb2luZyBw
YXN0IHRoZSBmaXJzdCBmcmFtZSB3aGljaCBhbHdheXMgZGFtYWdlcyBldmVyeXRoaW5nLCBzbwog
ICAgIC8vIHRoYXQgd2UgY2FuIGFjdHVhbGx5IHBlcmZvcm0gc3BlY2lmaWMgdGVzdHMuCkBAIC0x
NTYsOSArMTU2LDkgQEAgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCkKICAgICByZXR1cm4gcm9vdC5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFj
ZXMoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhU
d29TdXJmYWNlcygpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVz
dFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBj
cmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwogCiAgICAgLy8gU2V0dXAgaW5jbHVkZXMg
Z29pbmcgcGFzdCB0aGUgZmlyc3QgZnJhbWUgd2hpY2ggYWx3YXlzIGRhbWFnZXMgZXZlcnl0aGlu
Zywgc28KICAgICAvLyB0aGF0IHdlIGNhbiBhY3R1YWxseSBwZXJmb3JtIHNwZWNpZmljIHRlc3Rz
LgpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCBzYW5pdHlD
aGVja1Rlc3RUcmVlV2l0aE9uZVN1cmZhY2UpCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgdGhl
IHNpbXBsZSB0ZXN0IHRyZWUgd2lsbCBhY3R1YWxseSBwcm9kdWNlIHRoZSBleHBlY3RlZCByZW5k
ZXIKICAgICAvLyBzdXJmYWNlcyBhbmQgbGF5ZXIgbGlzdHMuCiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKTsKIAogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDIpLCByb290
LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEs
IHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KClbMF0tPmlkKCkpOwpAQCAtMTkzLDEw
ICsxOTMsMTAgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHNhbml0eUNoZWNrVGVzdFRy
ZWVXaXRoVHdvU3VyZmFjZXMpCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgdGhlIGNvbXBsZXgg
dGVzdCB0cmVlIHdpbGwgYWN0dWFsbHkgcHJvZHVjZSB0aGUgZXhwZWN0ZWQgcmVuZGVyCiAgICAg
Ly8gc3VyZmFjZXMgYW5kIGxheWVyIGxpc3RzLgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFj
ZXMoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4o
KVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClb
MV07CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7
CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV0uZ2V0KCk7CiAg
ICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdCA9IGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5k
YW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAgICAgRmxvYXRSZWN0IHJvb3RE
YW1hZ2VSZWN0ID0gcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJl
bnREYW1hZ2VSZWN0KCk7CiAKQEAgLTIxMiw4ICsyMTIsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFj
a2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJlZVdpdGhUd29TdXJmYWNlcykKIAogVEVTVF9GKEND
RGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclVwZGF0ZVJlY3RzKQogewotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3Vy
ZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigp
WzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRy
ZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxk
cmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBDQVNFIDE6IFNldHRpbmcgdGhlIHVwZGF0ZSByZWN0
IHNob3VsZCBjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBkYW1hZ2UgdG8gdGhlIHN1cmZhY2UuCiAg
ICAgLy8KQEAgLTI0Myw4ICsyNDMsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JQcm9wZXJ0eUNoYW5nZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsK
IAogICAgIC8vIENBU0UgMTogVGhlIGxheWVyJ3MgcHJvcGVydHkgY2hhbmdlZCBmbGFnIHRha2Vz
IHByaW9yaXR5IG92ZXIgdXBkYXRlIHJlY3QuCiAgICAgLy8KQEAgLTI4NCw4ICsyODQsOCBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXll
cikKICAgICAvLyBJZiBhIGxheWVyIGlzIHRyYW5zZm9ybWVkLCB0aGUgZGFtYWdlIHJlY3Qgc2hv
dWxkIHN0aWxsIGVuY2xvc2UgdGhlIGVudGlyZQogICAgIC8vIHRyYW5zZm9ybWVkIGxheWVyLgog
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdp
dGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNo
aWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9v
dC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdGF0
aW9uOwogICAgIHJvdGF0aW9uLnJvdGF0ZSg0NSk7CkBAIC0zMTcsMTAgKzMxNywxMSBAQCBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXllcikK
IAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJl
bW92aW5nTGF5ZXIpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5k
U2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBj
aGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9v
dCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJ
bXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gb3BDaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5
ZXJJbXBsKiBjaGlsZDIgPSBvcENoaWxkMi5nZXQoKTsKICAgICBjaGlsZDItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoNDAwLCAzODApKTsKICAgICBjaGlsZDItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQ6Onplcm8oKSk7CiAgICAgY2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CkBA
IC0zMjgsNyArMzI5LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFn
ZUZvckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiAKICAgICAvLyBDQVNFIDE6IEFkZGluZyBhIG5l
dyBsYXllciBzaG91bGQgY2F1c2UgdGhlIGFwcHJvcHJpYXRlIGRhbWFnZS4KICAgICAvLwotICAg
IHJvb3QtPmFkZENoaWxkKGNoaWxkMik7CisgICAgcm9vdC0+YWRkQ2hpbGQob3BDaGlsZDIucmVs
ZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCiAgICAg
Ly8gU2FuaXR5IGNoZWNrIC0gYWxsIDMgbGF5ZXJzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSByZW5k
ZXIgc3VyZmFjZTsgcmVuZGVyIHN1cmZhY2VzIGFyZSB0ZXN0ZWQgZWxzZXdoZXJlLgpAQCAtMzUz
LDE1ICszNTQsMTYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZv
ckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxheWVycykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7
CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
Myk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMyk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IG9wQ2hpbGQyLmdldCgpOwogICAgIGNo
aWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0MDAsIDM4MCkpOwogICAgIGNoaWxkMi0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICBjaGlsZDItPnNldEJvdW5kcyhJ
bnRTaXplKDYsIDgpKTsKICAgICBjaGlsZDItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBy
b290LT5hZGRDaGlsZChjaGlsZDIpOworICAgIHJvb3QtPmFkZENoaWxkKG9wQ2hpbGQyLnJlbGVh
c2UoKSk7CiAKICAgICAvLyBJbiB0aGlzIHRlc3Qgd2UgZG9uJ3Qgd2FudCB0aGUgYWJvdmUgdHJl
ZSBtYW5pcHVsYXRpb24gdG8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzYW1lIGZyYW1lLgog
ICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CkBAIC0zNzgsMTAgKzM4MCwx
MCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTXVsdGlwbGVM
YXllcnMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JOZXN0
ZWRTdXJmYWNlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBj
aGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hp
bGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5k
Q2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2Vz
KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7
CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV0uZ2V0KCk7Cisg
ICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRy
ZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0
UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNDE1LDkgKzQxNyw5IEBAIFRFU1RfRihDQ0RhbWFn
ZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JTdXJmYWNlQ2hhbmdlRnJvbURlc2NlbmRhbnRM
YXllcikKICAgICAvLyBUaGlzIGlzIGEgdHJpY2t5IGNhc2UsIHNpbmNlIG9ubHkgdGhlIGZpcnN0
IGdyYW5kQ2hpbGQgY2hhbmdlcywgYnV0IHRoZSBlbnRpcmUKICAgICAvLyBzdXJmYWNlIHNob3Vs
ZCBiZSBtYXJrZWQgZGlydHkuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVh
dGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdOworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVsw
XS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigp
WzBdLT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7
CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC00NDcsOSArNDQ5LDggQEAgVEVT
VF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclN1cmZhY2VDaGFuZ2VGcm9t
QW5jZXN0b3JMYXllcikKICAgICAvLyAgICAgICAgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5jaGFu
Z2VkLCBzaW5jZSB3ZSBhcmUgb25seSB0cmFuc2Zvcm1pbmcgaXQsIHdoaWxlIHRoZQogICAgIC8v
ICAgICAgICByb290IHN1cmZhY2Ugd291bGQgYmUgZGFtYWdlZCBhcHByb3ByaWF0ZWx5LgogCi0g
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhU
d29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hp
bGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gcm9vdC0+
Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXll
ckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0
IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7CiAKQEAgLTQ2
OSw4ICs0NzAsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9y
U3VyZmFjZUNoYW5nZUZyb21BbmNlc3RvckxheWVyKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2Vy
VGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdSZW5kZXJTdXJmYWNlcykKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5j
aGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0g
cm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0
OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNTEwLDggKzUxMSw4IEBAIFRF
U1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1vdmlu
Z1JlbmRlclN1cmZhY2VzKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5Tm9E
YW1hZ2VXaGVuTm90aGluZ0NoYW5nZWQpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7
CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAg
ICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJl
Y3Q7CiAKQEAgLTUzNCw4ICs1MzUsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5Tm9EYW1hZ2VXaGVuTm90aGluZ0NoYW5nZWQpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlOb0RhbWFnZUZvclVwZGF0ZVJlY3RUaGF0RG9lc05vdERyYXdDb250ZW50KQog
ewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVX
aXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3Qt
PmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5k
U2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEg
PSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJl
Y3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC01NTEsMTAgKzU1MiwxMCBA
QCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5Tm9EYW1hZ2VGb3JVcGRhdGVSZWN0
VGhhdERvZXNOb3REcmF3Q29udGVudCkKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZl
cmlmeURhbWFnZUZvclJlcGxpY2EpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0g
Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gZ3JhbmRDaGlsZDIgPSBjaGlsZDEtPmNoaWxkcmVuKClbMV07CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJm
YWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdl
dCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hpbGRyZW4oKVsw
XS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDIgPSBjaGlsZDEtPmNoaWxkcmVu
KClbMV0uZ2V0KCk7CiAKICAgICAvLyBEYW1hZ2Ugb24gYSBzdXJmYWNlIHRoYXQgaGFzIGEgcmVm
bGVjdGlvbiBzaG91bGQgY2F1c2UgdGhlIHRhcmdldCBzdXJmYWNlIHRvCiAgICAgLy8gcmVjZWl2
ZSB0aGUgc3VyZmFjZSdzIGRhbWFnZSBhbmQgdGhlIHN1cmZhY2UncyByZWZsZWN0ZWQgZGFtYWdl
LgpAQCAtNTYzLDI0ICs1NjQsMjYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlm
eURhbWFnZUZvclJlcGxpY2EpCiAgICAgLy8gb2YgY2hpbGQxJ3Mgc3VyZmFjZS4gVGhpcyB3YXks
IHdlIGNhbiB0ZXN0IHJlZmxlY3Rpb24gY2hhbmdlcyB3aXRob3V0IGNoYW5naW5nCiAgICAgLy8g
Y29udGVudEJvdW5kcyBvZiB0aGUgc3VyZmFjZS4KICAgICBncmFuZENoaWxkMi0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgxODAsIDE4MCkpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRD
aGlsZDMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDYpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
b3BHcmFuZENoaWxkMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXllckltcGwq
IGdyYW5kQ2hpbGQzID0gb3BHcmFuZENoaWxkMy5nZXQoKTsKICAgICBncmFuZENoaWxkMy0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgyNDAsIDI0MCkpOwogICAgIGdyYW5kQ2hpbGQzLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hpbGQzLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMCwgMTApKTsKICAgICBncmFuZENoaWxkMy0+c2V0RHJhd3NDb250ZW50KHRydWUp
OwogICAgIGNoaWxkMS0+c2V0T3BhY2l0eSgwLjUpOwotICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3Jh
bmRDaGlsZDMpOworICAgIGNoaWxkMS0+YWRkQ2hpbGQob3BHcmFuZENoaWxkMy5yZWxlYXNlKCkp
OwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAvLyBDQVNF
IDE6IGFkZGluZyBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBncmFuZENoaWxk
MS4KICAgICAvLwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0g
Q0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wR3JhbmRD
aGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBDQ0xheWVySW1wbCog
Z3JhbmRDaGlsZDFSZXBsaWNhID0gb3BHcmFuZENoaWxkMVJlcGxpY2EuZ2V0KCk7CiAgICAgZ3Jh
bmRDaGlsZDFSZXBsaWNhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGdy
YW5kQ2hpbGQxUmVwbGljYS0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOwogICAgIHJlZmxlY3Rpb24uc2NhbGUz
ZCgtMS4wLCAxLjAsIDEuMCk7CiAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRUcmFuc2Zvcm0o
cmVmbGVjdGlvbik7Ci0gICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihncmFuZENoaWxk
MVJlcGxpY2EpOworICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIob3BHcmFuZENoaWxk
MVJlcGxpY2EucmVsZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0
KCkpOwogCiAgICAgRmxvYXRSZWN0IGdyYW5kQ2hpbGREYW1hZ2VSZWN0ID0gZ3JhbmRDaGlsZDEt
PnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpA
QCAtNjE0LDcgKzYxNyw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1h
Z2VGb3JSZXBsaWNhKQogCiAgICAgLy8gQ0FTRSAzOiByZW1vdmluZyB0aGUgcmVmbGVjdGlvbiBz
aG91bGQgY2F1c2UgdGhlIGVudGlyZSByZWdpb24gaW5jbHVkaW5nIHJlZmxlY3Rpb24KICAgICAv
LyAgICAgICAgIHRvIGRhbWFnZSB0aGUgdGFyZ2V0IHN1cmZhY2UuCi0gICAgZ3JhbmRDaGlsZDEt
PnNldFJlcGxpY2FMYXllcigwKTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKG51
bGxwdHIpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgQVNT
RVJUX0VRKG9sZENvbnRlbnRSZWN0LndpZHRoKCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5j
b250ZW50UmVjdCgpLndpZHRoKCkpOwogICAgIEFTU0VSVF9FUShvbGRDb250ZW50UmVjdC5oZWln
aHQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpOwpA
QCAtNjI5LDI3ICs2MzIsMjkgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURh
bWFnZUZvclJlcGxpY2EpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1h
Z2VGb3JNYXNrKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hp
bGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBs
KiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBJbiB0aGUgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGFtYWdlIHRyYWNrZXIsIGNoYW5nZXMgdG8gbWFz
ayBsYXllcnMgc2hvdWxkCiAgICAgLy8gZGFtYWdlIHRoZSBlbnRpcmUgY29ycmVzcG9uZGluZyBz
dXJmYWNlLgogCiAgICAgLy8gU2V0IHVwIHRoZSBtYXNrIGxheWVyLgotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gbWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IG9wTWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBD
Q0xheWVySW1wbCogbWFza0xheWVyID0gb3BNYXNrTGF5ZXIuZ2V0KCk7CiAgICAgbWFza0xheWVy
LT5zZXRQb3NpdGlvbihjaGlsZC0+cG9zaXRpb24oKSk7CiAgICAgbWFza0xheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIG1hc2tMYXllci0+c2V0Qm91bmRzKGNo
aWxkLT5ib3VuZHMoKSk7Ci0gICAgY2hpbGQtPnNldE1hc2tMYXllcihtYXNrTGF5ZXIpOworICAg
IGNoaWxkLT5zZXRNYXNrTGF5ZXIob3BNYXNrTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIC8vIEFk
ZCBvcGFjaXR5IGFuZCBhIGdyYW5kQ2hpbGQgc28gdGhhdCB0aGUgcmVuZGVyIHN1cmZhY2UgcGVy
c2lzdHMgZXZlbiBhZnRlciB3ZSByZW1vdmUgdGhlIG1hc2suCiAgICAgY2hpbGQtPnNldE9wYWNp
dHkoMC41KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDQpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BHcmFuZENoaWxkID0gQ0NM
YXllckltcGw6OmNyZWF0ZSg0KTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZCA9IG9wR3Jh
bmRDaGlsZC5nZXQoKTsKICAgICBncmFuZENoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDIu
MCwgMi4wKSk7CiAgICAgZ3JhbmRDaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVy
bygpKTsKICAgICBncmFuZENoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgyLCAyKSk7CiAgICAgZ3Jh
bmRDaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIGNoaWxkLT5hZGRDaGlsZChncmFu
ZENoaWxkKTsKKyAgICBjaGlsZC0+YWRkQ2hpbGQob3BHcmFuZENoaWxkLnJlbGVhc2UoKSk7CiAg
ICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIFNhbml0eSBj
aGVjayB0aGF0IGEgbmV3IHN1cmZhY2Ugd2FzIGNyZWF0ZWQgZm9yIHRoZSBjaGlsZC4KQEAgLTY4
NSw3ICs2OTAsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9y
TWFzaykKICAgICBFWFBFQ1RfVFJVRShjaGlsZERhbWFnZVJlY3QuaXNFbXB0eSgpKTsKIAogICAg
IC8vIFRoZW4gdGVzdCBtYXNrIHJlbW92YWwuCi0gICAgY2hpbGQtPnNldE1hc2tMYXllcigwKTsK
KyAgICBjaGlsZC0+c2V0TWFza0xheWVyKG51bGxwdHIpOwogICAgIEFTU0VSVF9UUlVFKGNoaWxk
LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJv
b3QuZ2V0KCkpOwogCkBAIC02OTgsMjggKzcwMywzMCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2Vy
VGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hpbGRyZW4oKVswXTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1
cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigp
WzBdLmdldCgpOwogCiAgICAgLy8gQ2hhbmdlcyB0byBhIHJlcGxpY2EncyBtYXNrIHNob3VsZCBu
b3QgZGFtYWdlIHRoZSBvcmlnaW5hbCBzdXJmYWNlLCBiZWNhdXNlIGl0IGlzCiAgICAgLy8gbm90
IG1hc2tlZC4gQnV0IGl0IGRvZXMgZGFtYWdlIHRoZSBhbmNlc3RvciB0YXJnZXQgc3VyZmFjZS4K
IAogICAgIC8vIENyZWF0ZSBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBncmFu
ZENoaWxkMS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hp
bGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXllckltcGwqIGdy
YW5kQ2hpbGQxUmVwbGljYSA9IG9wR3JhbmRDaGlsZDFSZXBsaWNhLmdldCgpOwogICAgIGdyYW5k
Q2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICBncmFu
ZENoaWxkMVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggcmVmbGVjdGlvbjsKICAgICByZWZsZWN0aW9uLnNjYWxlM2Qo
LTEuMCwgMS4wLCAxLjApOwogICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0VHJhbnNmb3JtKHJl
ZmxlY3Rpb24pOwotICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIoZ3JhbmRDaGlsZDFS
ZXBsaWNhKTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKG9wR3JhbmRDaGlsZDFS
ZXBsaWNhLnJlbGVhc2UoKSk7CiAKICAgICAvLyBTZXQgdXAgdGhlIG1hc2sgbGF5ZXIgb24gdGhl
IHJlcGxpY2EgbGF5ZXIKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FNYXNrTGF5ZXIg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDcpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BSZXBs
aWNhTWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBDQ0xheWVySW1wbCog
cmVwbGljYU1hc2tMYXllciA9IG9wUmVwbGljYU1hc2tMYXllci5nZXQoKTsKICAgICByZXBsaWNh
TWFza0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIHJlcGxpY2FN
YXNrTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVwbGlj
YU1hc2tMYXllci0+c2V0Qm91bmRzKGdyYW5kQ2hpbGQxLT5ib3VuZHMoKSk7Ci0gICAgZ3JhbmRD
aGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIocmVwbGljYU1hc2tMYXllcik7CisgICAgZ3JhbmRD
aGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIob3BSZXBsaWNhTWFza0xheWVyLnJlbGVhc2UoKSk7
CiAKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCkBAIC03MzgsNyAr
NzQ1LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxp
Y2FNYXNrKQogCiAgICAgLy8gQ0FTRSAyOiByZW1vdmluZyB0aGUgcmVwbGljYSBtYXNrIGRhbWFn
ZXMgb25seSB0aGUgcmVmbGVjdGVkIHJlZ2lvbiBvbiB0aGUgdGFyZ2V0IHN1cmZhY2UuCiAgICAg
Ly8KLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcigwKTsKKyAgICBncmFuZENo
aWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcihudWxscHRyKTsKICAgICBlbXVsYXRlRHJhd2luZ09u
ZUZyYW1lKHJvb3QuZ2V0KCkpOwogCiAgICAgZ3JhbmRDaGlsZERhbWFnZVJlY3QgPSBncmFuZENo
aWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0
KCk7CkBAIC03NTAsOCArNzU3LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlm
eURhbWFnZUZvclJlcGxpY2FNYXNrKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5RGFtYWdlV2hlblJlc2V0KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIEND
TGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBD
YXNlIDE6IFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgdHJhY2tlciBpcyBmb3JjZWQg
dG8gaGF2ZSBmdWxsIGRhbWFnZSwgdGhhdAogICAgIC8vICAgICAgICAgaXQgdGFrZXMgcHJpb3Jp
dHkgb3ZlciBhbnkgb3RoZXIgcGFydGlhbCBkYW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMjc3MjhjYmVmMGUzYjMxODc5
M2QwZGRjMTBmYzM3YWQ2MGYxN2Q3ZC4uMGRjYmUyYTdlYjQ3ZTZhZGI4NWMwNjFkYmY1NTQwNmNm
ODdhN2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllcklt
cGxUZXN0LmNwcApAQCAtNjUsMTQgKzY1LDEzIEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJp
ZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIHNldEltcGxUaHJlYWQ7CiAKICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgQ0NMYXllcklt
cGwgdHJlZToKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDIpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMyk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxkLT5hZGRD
aGlsZChncmFuZENoaWxkKTsKLQotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlNYXNrID0g
Q0NMYXllckltcGw6OmNyZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15UmVw
bGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9w
Q2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9
IG9wQ2hpbGQuZ2V0KCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hpbGQgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkID0gb3BH
cmFuZENoaWxkLmdldCgpOworICAgIHJvb3QtPmFkZENoaWxkKG9wQ2hpbGQucmVsZWFzZSgpKTsK
KyAgICBjaGlsZC0+YWRkQ2hpbGQob3BHcmFuZENoaWxkLnJlbGVhc2UoKSk7CiAKICAgICAvLyBB
ZGRpbmcgY2hpbGRyZW4gaXMgYW4gaW50ZXJuYWwgb3BlcmF0aW9uIGFuZCBzaG91bGQgbm90IG1h
cmsgbGF5ZXJzIGFzIGNoYW5nZWQuCiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyUHJvcGVy
dHlDaGFuZ2VkKCkpOwpAQCAtOTIsMTEgKzkxLDExIEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2
ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgLy8gQ2hhbmdpbmcgdGhl
c2UgcHJvcGVydGllcyBhZmZlY3RzIHRoZSBlbnRpcmUgc3VidHJlZSBvZiBsYXllcnMuCiAgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRBbmNob3JQb2ludChh
cmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hB
TkdFRChyb290LT5zZXRBbmNob3JQb2ludFooYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRNYXNrTGF5ZXIoZHVtbXlNYXNr
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRNYXNr
TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSg0KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFxdWUodHJ1ZSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0T3BhY2l0eShhcmJp
dHJhcnlOdW1iZXIpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJv
b3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJlcGxpY2EpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihDQ0xheWVySW1wbDo6Y3Jl
YXRlKDUpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5z
ZXRQb3NpdGlvbihhcmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7CiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5
VHJhbnNmb3JtKSk7CkBAIC0xMzEsOSArMTMwLDcgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZl
cmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICAvLyBub3QgY2F1c2UgYW55
IGNoYW5nZS4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShy
b290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9pbnRaKGFy
Yml0cmFyeU51bWJlcikpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUp
KTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5z
ZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5RmxvYXRQb2lu
dCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3Qt
PnNldFByZXNlcnZlczNEKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9E
SURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0
LmNwcAppbmRleCBiZmY3ZTFiYTk3MTE0NTY4Y2FiZTM5NmNmYWU3NzQ2ZjA3MzQwOThlLi41MTJk
ZjBlODc1OTg1NjA4YjFlNjFmMjZhYWYxZGQ5ZjQxZDdiMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKQEAgLTcwLDEw
ICs3MCwxMCBAQCBwcml2YXRlOgogdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRv
QmFjaz4gRnJvbnRUb0JhY2s7CiB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zy
b250PiBCYWNrVG9Gcm9udDsKIAotdm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit2b2lkIHJlc2V0Q291bnRzKFZl
Y3RvcjxMYXllckNocm9taXVtKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgVGVzdExheWVyQ2hy
b21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IHN0YXRpY19jYXN0PFRlc3RMYXllckNocm9taXVt
Kj4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpKTsKKyAgICAgICAg
VGVzdExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IHN0YXRpY19jYXN0PFRlc3RM
YXllckNocm9taXVtKj4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdKTsKICAg
ICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFj
ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5t
X2NvdW50UmVwcmVzZW50aW5nVGFyZ2V0U3VyZmFjZSA9IC0xOwpAQCAtODEsNyArODEsNyBAQCB2
b2lkIHJlc2V0Q291bnRzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tX2NvdW50UmVwcmVz
ZW50aW5nSXRzZWxmID0gLTE7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0g
MDsgbGF5ZXJJbmRleCA8IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKTsgKytsYXll
ckluZGV4KSB7Ci0gICAgICAgICAgICBUZXN0TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBzdGF0aWNf
Y2FzdDxUZXN0TGF5ZXJDaHJvbWl1bSo+KHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpW2xheWVy
SW5kZXhdLmdldCgpKTsKKyAgICAgICAgICAgIFRlc3RMYXllckNocm9taXVtKiBsYXllciA9IHN0
YXRpY19jYXN0PFRlc3RMYXllckNocm9taXVtKj4ocmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KClb
bGF5ZXJJbmRleF0pOwogCiAgICAgICAgICAgICBsYXllci0+bV9jb3VudFJlcHJlc2VudGluZ1Rh
cmdldFN1cmZhY2UgPSAtMTsKICAgICAgICAgICAgIGxheWVyLT5tX2NvdW50UmVwcmVzZW50aW5n
Q29udHJpYnV0aW5nU3VyZmFjZSA9IC0xOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIHJlc2V0Q291
bnRzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkKICAgICB9CiB9CiAKLXZvaWQgaXRlcmF0ZUZyb250VG9CYWNrKFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgaXRlcmF0ZUZyb250
VG9CYWNrKFZlY3RvcjxMYXllckNocm9taXVtKj4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7
CiAgICAgcmVzZXRDb3VudHMoKnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIGludCBjb3Vu
dCA9IDA7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBpdGVyYXRlRnJvbnRUb0JhY2soVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogICAgIH0K
IH0KIAotdm9pZCBpdGVyYXRlQmFja1RvRnJvbnQoVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBpdGVyYXRlQmFja1RvRnJvbnQoVmVj
dG9yPExheWVyQ2hyb21pdW0qPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICByZXNl
dENvdW50cygqcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgaW50IGNvdW50ID0gMDsKQEAg
LTEzNSw5ICsxMzUsOSBAQCBURVNUKENDTGF5ZXJJdGVyYXRvclRlc3QsIHNpbXBsZVRyZWUpCiAg
ICAgcm9vdExheWVyLT5hZGRDaGlsZCh0aGlyZCk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChm
b3VydGgpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlz
dDsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIFZl
Y3RvcjxMYXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8
TGF5ZXJDaHJvbWl1bSo+IGxheWVyTGlzdDsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVy
LmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LApAQCAtMTgy
LDkgKzE4Miw5IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxleFRyZWUpCiAgICAg
cm9vdDIyLT5hZGRDaGlsZChyb290MjIxKTsKICAgICByb290MjMtPmFkZENoaWxkKHJvb3QyMzEp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIFZlY3RvcjxM
YXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJD
aHJvbWl1bSo+IGxheWVyTGlzdDsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChy
b290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LApAQCAtMjQxLDkgKzI0
MSw5IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxleFRyZWVNdWx0aVN1cmZhY2Up
CiAgICAgcm9vdDIzLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgcm9vdDIzLT5hZGRDaGlsZChyb290
MjMxKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBsYXllckxpc3Q7
Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICBWZWN0
b3I8TGF5ZXJDaHJvbWl1bSo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPExh
eWVyQ2hyb21pdW0qPiBsYXllckxpc3Q7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocm9vdExheWVyLmdldCgpKTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIuZ2V0KCksIHJvb3RMYXllci5n
ZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKaW5kZXgg
NjkzNDJjZGE3YzYzYjYxNTQ1MDc0NWVhYmQ4YjFkMWNkYmVmY2U1ZS4uYTUzM2M5MzczODhlZWE1
NmI3YTRhMWJjNjFjMWYyODIxYWJmZWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKQEAgLTE3NCwxMSArMTc0LDExIEBAIFRF
U1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQcmVzZXJ2ZWRXaGVu
Tm9aRGlmZikKICAgICAvLyAgICAtIDMgYW5kIDQgZG8gbm90IGhhdmUgYSAzZCB6IGRpZmZlcmVu
Y2UsIGFuZCB0aGVyZWZvcmUgdGhlaXIgcmVsYXRpdmUgb3JkZXJpbmcgc2hvdWxkIGJlIHJldGFp
bmVkLgogICAgIC8vICAgIC0gMyBhbmQgNCBzaG91bGQgYmUgcmUtc29ydGVkIHNvIHRoZXkgYXJl
IGluIGZyb250IG9mIDEsIDIsIGFuZCA1LgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXll
cjEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5
ZXIyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxh
eWVyMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBs
YXllcjQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
bGF5ZXI1ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IGxheWVyMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBsYXllcjIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gbGF5ZXIzID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBPd25QdHI8Q0NMYXllcklt
cGw+IGxheWVyNCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBsYXllcjUgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwogCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggQmVoaW5kTWF0cml4OwogICAgIEJlaGluZE1hdHJpeC50cmFuc2xhdGUzZCgwLCAw
LCAyKTsKQEAgLTIwNSwxMiArMjA1LDEyIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlm
eUV4aXN0aW5nT3JkZXJpbmdQcmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBsYXllcjUtPnNldERy
YXdUcmFuc2Zvcm0oQmVoaW5kTWF0cml4KTsKICAgICBsYXllcjUtPnNldERyYXdzQ29udGVudCh0
cnVlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gbGF5ZXJMaXN0OwotICAg
IGxheWVyTGlzdC5hcHBlbmQobGF5ZXIxKTsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMik7
Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjMpOwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5
ZXI0KTsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyNSk7CisgICAgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4gbGF5ZXJMaXN0OworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIxLmdldCgpKTsKKyAg
ICBsYXllckxpc3QuYXBwZW5kKGxheWVyMi5nZXQoKSk7CisgICAgbGF5ZXJMaXN0LmFwcGVuZChs
YXllcjMuZ2V0KCkpOworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXI0LmdldCgpKTsKKyAgICBs
YXllckxpc3QuYXBwZW5kKGxheWVyNS5nZXQoKSk7CiAKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nh
c3Q8c2l6ZV90Pig1KSwgbGF5ZXJMaXN0LnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVy
TGlzdFswXS0+aWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAppbmRleCBiMWZhNzI5MTg0MDFlMzI0
MGU0MWQxM2QyZTBjMjdkMGM1NmFkN2M1Li42YzcxZTdlMDI4ZjEyOTgzZTlhNTcxY2UyNTAxMjhi
YzBiN2E4ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAgLTU3LDggKzU3LDggQEAgdm9pZCBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHIKIHZvaWQgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGR1bW15UmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBk
dW1teVJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBk
dW1teUxheWVyTGlzdDsKICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKICAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBk
dW1teVJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKIH0KQEAgLTQ3Niw4ICs0NzYsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yQ2xpcExheWVyKQogICAgIHJlbmRlclN1
cmZhY2UxLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcmVuZGVyU3VyZmFjZTEtPmFkZENo
aWxkKGNoaWxkKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1t
eUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBkdW1teUxheWVyTGlzdDsKICAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKQEAgLTUwNCw4
ICs1MDQsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1
cmZhY2VMaXN0Rm9yVHJhbnNwYXJlbnRDaGlsZCkKICAgICByZW5kZXJTdXJmYWNlMS0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwogICAgIHJlbmRlclN1cmZhY2UxLT5hZGRDaGlsZChjaGlsZCk7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Cisg
ICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZl
Y3RvcjxMYXllckNocm9taXVtKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4VGV4
dHVyZVNpemUgPSA1MTI7CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlM
YXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCkBAIC01NzQsMTMgKzU3NCwxMyBAQCBU
RVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3VsbHNSZW5kZXJT
dXJmYWNlcykKICAgICBjaGlsZC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBJbnRTaXplKDIwLCAyMCkpKTsKICAgICBncmVhdEdyYW5kQ2hpbGQtPnNldENsaXBSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMjM0LCAxMjM0KSkpOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIFZlY3Rv
cjxMYXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5
ZXJDaHJvbWl1bSo+IGR1bW15TGF5ZXJMaXN0OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOwogCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3Bl
Y2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBm
aXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50KTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJl
bnQuZ2V0KCkpOwogCiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXll
ckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCkBAIC02MTcsMTQgKzYxNywxNCBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9u
KQogCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1
bSo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiBk
dW1teUxheWVyTGlzdDsKICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAogICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGZpeCB0aGlzICJyb290LWxheWVyIHNwZWNpYWwgY2FzZSIgYmVo
YXZpb3IgaW4gQ0NMYXllclRyZWVIb3N0LCB3ZSB3aWxsIGhhdmUgdG8gZml4IGl0IGhlcmUsIHRv
by4KICAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CiAgICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudC5nZXQoKSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKQEAgLTY1
NCwxNCArNjU0LDE0IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24pCiAKICAgICBsYXllci0+c2V0T3BhcXVl
KHRydWUpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5
ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNocm9taXVtKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKKyAgICBWZWN0b3I8TGF5ZXJDaHJvbWl1bSo+IGR1bW15TGF5ZXJMaXN0OwogICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRo
aXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3Qs
IHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50Lmdl
dCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0
LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNjg5LDE0ICs2ODksMTQgQEAgVEVTVChDQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbldpdGhU
cmFuc2xhdGlvbikKIAogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgVmVjdG9yPExh
eWVyQ2hyb21pdW0qPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxMYXllckNo
cm9taXVtKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7CiAKICAgICAvLyBGSVhNRTogd2hlbiB3ZSBmaXggdGhpcyAicm9vdC1sYXllciBzcGVjaWFs
IGNhc2UiIGJlaGF2aW9yIGluIENDTGF5ZXJUcmVlSG9zdCwgd2Ugd2lsbCBoYXZlIHRvIGZpeCBp
dCBoZXJlLCB0b28uCiAgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwogICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQuZ2V0KCkpOwogCiAgICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwogCkBAIC03MzAsMTQgKzczMCwxNCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlKQogICAgIGNo
aWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7
CisgICAgVmVjdG9yPExheWVyQ2hyb21pdW0qPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxMYXllckNocm9taXVtKj4gZHVtbXlMYXllckxpc3Q7CiAgICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7CiAKICAgICAvLyBGSVhNRTogd2hlbiB3ZSBmaXggdGhpcyAicm9v
dC1sYXllciBzcGVjaWFsIGNhc2UiIGJlaGF2aW9yIGluIENDTGF5ZXJUcmVlSG9zdCwgd2Ugd2ls
bCBoYXZlIHRvIGZpeCBpdCBoZXJlLCB0b28uCiAgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOwogICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQuZ2V0KCkpOwog
CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGY1OTg5M2RlOTA2NDE4Zjhj
YmQ3NTc0MGFlMjkzOWUyM2NjMjM1MGEuLjg1Y2M3Yjk0YmRjMzdkZWJiN2Q5OTIxNzk1Mzg1MzNk
MTlkZTFlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKGNvbnN0IEludFNpemUmIGNv
bnRlbnRTaXplKQogICAgIHsKLSAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0g
Q0NMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVl
KTsKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAg
ICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihjb250ZW50U2l6ZSk7Ci0gICAgICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gY29udGVudHMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAg
ICAgICBPd25QdHI8Q0NMYXllckltcGw+IGNvbnRlbnRzID0gQ0NMYXllckltcGw6OmNyZWF0ZSgx
KTsKICAgICAgICAgY29udGVudHMtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAgY29u
dGVudHMtPnNldEJvdW5kcyhjb250ZW50U2l6ZSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXRDb250
ZW50Qm91bmRzKGNvbnRlbnRTaXplKTsKLSAgICAgICAgcm9vdC0+YWRkQ2hpbGQoY29udGVudHMp
OwotICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgICAgIHJvb3Qt
PmFkZENoaWxkKGNvbnRlbnRzLnJlbGVhc2UoKSk7CisgICAgICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC0xMDUsMzcg
KzEwNSwzOSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhTm9M
YXllcnMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFUcmVl
QnV0Tm9DaGFuZ2VzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcFJvb3QgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gb3BSb290LmdldCgpOwog
ICAgIHJvb3QtPmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoMSkpOwogICAgIHJvb3QtPmFk
ZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoMikpOwogICAgIHJvb3QtPmNoaWxkcmVuKClbMV0t
PmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoMykpOwogICAgIHJvb3QtPmNoaWxkcmVuKClb
MV0tPmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoNCkpOwogICAgIHJvb3QtPmNoaWxkcmVu
KClbMV0tPmNoaWxkcmVuKClbMF0tPmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoNSkpOwot
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIob3BSb290LnJlbGVhc2UoKSk7CiAKLSAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVs
dGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOworICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNS
ZWN1cnNpdmUocm9vdCk7CiAKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xs
SW5mbzsKIAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAwdSk7Ci0gICAg
ZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBleHBl
Y3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogCiAgICAgc2Nyb2xsSW5mbyA9
IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKICAgICBBU1NFUlRfRVEoc2Nyb2xs
SW5mby0+c2Nyb2xscy5zaXplKCksIDB1KTsKLSAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFz
UmVjdXJzaXZlKHJvb3QuZ2V0KCkpOworICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1
cnNpdmUocm9vdCk7CiB9CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xs
RGVsdGFSZXBlYXRlZFNjcm9sbHMpCiB7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oMjAs
IDMwKTsKICAgICBJbnRTaXplIHNjcm9sbERlbHRhKDExLCAtMTUpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMTApOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gb3BSb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxMCk7CisgICAgQ0NMYXllcklt
cGwqIHJvb3QgPSBvcFJvb3QuZ2V0KCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oc2Ny
b2xsUG9zaXRpb24pOwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+
c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgIHJvb3QtPnNjcm9s
bEJ5KHNjcm9sbERlbHRhKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7Cisg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKG9wUm9vdC5yZWxlYXNlKCkpOwogCiAgICAgT3du
UHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKQEAgLTE1OCwxMSArMTYwLDEx
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNj
cm9sbHMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdENhbGxz
Q29tbWl0QW5kUmVkcmF3KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSgwKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJv
b3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhT
Y3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9v
dExheWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2Uo
KSk7CiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDAp
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwogICAgIG1faG9zdEltcGwt
PnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKICAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsK
QEAgLTMwMiw3ICszMDQsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tMYXll
ciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCbGVuZFN0YXRlQ2hlY2tMYXllcihpZCkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8Qmxl
bmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBC
bGVuZFN0YXRlQ2hlY2tMYXllcihpZCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUpCiAgICAgewpAQCAtMzUyLDE0ICszNTQsMTYgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9zdElt
cGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCi0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NMYXll
ckltcGw+IG9wUm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgQ0NMYXllckltcGwq
IHJvb3QgPSBvcFJvb3QuZ2V0KCk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgcm9v
dC0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKG9wUm9vdC5yZWxlYXNlKCkpOwog
Ci0gICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBsYXllcjEgPSBCbGVuZFN0YXRlQ2hl
Y2tMYXllcjo6Y3JlYXRlKDEpOwotICAgIHJvb3QtPmFkZENoaWxkKGxheWVyMSk7CisgICAgT3du
UHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBvcExheWVyMSA9IEJsZW5kU3RhdGVDaGVja0xheWVy
OjpjcmVhdGUoMSk7CisgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIGxheWVyMSA9IG9wTGF5ZXIx
LmdldCgpOworICAgIHJvb3QtPmFkZENoaWxkKG9wTGF5ZXIxLnJlbGVhc2UoKSk7CiAKICAgICAv
LyBPcGFxdWUgbGF5ZXIsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRP
cGFxdWUodHJ1ZSk7CkBAIC0zOTgsOCArNDAyLDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQo
KSk7CiAKLSAgICBSZWZQdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGxheWVyMiA9IEJsZW5kU3Rh
dGVDaGVja0xheWVyOjpjcmVhdGUoMik7Ci0gICAgbGF5ZXIxLT5hZGRDaGlsZChsYXllcjIpOwor
ICAgIE93blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gb3BMYXllcjIgPSBCbGVuZFN0YXRlQ2hl
Y2tMYXllcjo6Y3JlYXRlKDIpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjIgPSBv
cExheWVyMi5nZXQoKTsKKyAgICBsYXllcjEtPmFkZENoaWxkKG9wTGF5ZXIyLnJlbGVhc2UoKSk7
CiAKICAgICAvLyAyIG9wYXF1ZSBsYXllcnMsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAg
bGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CkBAIC01MjEsMTEgKzUyNiwxMSBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGFkb3B0UHRyKG5ldyBGYWtlRHJhd2FibGVD
Q0xheWVySW1wbCgxKSk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAw
KSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgcm9vdC0+c2V0
RHJhd3NDb250ZW50KHRydWUpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsK
KyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAgIEVYUEVD
VF9GQUxTRShyZXNoYXBlVHJhY2tlci0+cmVzaGFwZUNhbGxlZCgpKTsKIAogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKQEAgLTU3MSw4ICs1NzYsMTAgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBsYXllclRy
ZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXll
ckltcGwoMSkpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBhZG9wdFJlZihuZXcg
RmFrZURyYXdhYmxlQ0NMYXllckltcGwoMikpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BS
b290ID0gYWRvcHRQdHIobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKKyAgICBDQ0xh
eWVySW1wbCogcm9vdCA9IG9wUm9vdC5nZXQoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9w
Q2hpbGQgPSBhZG9wdFB0cihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMikpOworICAgIEND
TGF5ZXJJbXBsKiBjaGlsZCA9IG9wQ2hpbGQuZ2V0KCk7CiAgICAgY2hpbGQtPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoMTIsIDEzKSk7CiAgICAgY2hpbGQtPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQoMCwgMCkpOwogICAgIGNoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgxNCwgMTUpKTsKQEAgLTU4
MCw4ICs1ODcsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2Fw
UmVjZWl2ZXNEYW1hZ2VSZWN0KQogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDUwMCwgNTAwKSk7CiAgICAgcm9v
dC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkKTsKLSAg
ICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIHJvb3QtPmFkZENo
aWxkKG9wQ2hpbGQucmVsZWFzZSgpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExh
eWVyKG9wUm9vdC5yZWxlYXNlKCkpOwogCiAgICAgLy8gRmlyc3QgZnJhbWUsIHRoZSBlbnRpcmUg
c2NyZWVuIHNob3VsZCBnZXQgc3dhcHBlZC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xh
eWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRl
clN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJT
dXJmYWNlVGVzdC5jcHAKaW5kZXggYzNiMzY2ZGRhMzIzNzQ2ODY4NmZiZjgzZWQ0ZmUzMzkwZjgy
ZjMzNC4uMTIwMTU4N2M3OGRmN2I1ODQwMjc3NGRmMGM2OTNmNGVlZGRkZDYwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgdmVyaWZ5U3VyZmFj
ZUNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgLy8gVGhpcyB3aWxsIGZha2UgdGhhdCB3
ZSBhcmUgb24gdGhlIGNvcnJlY3QgdGhyZWFkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzZXRJbXBsVGhyZWFkOwogCi0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBvd25pbmdMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBvd25pbmdMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAg
b3duaW5nTGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBBU1NFUlRfVFJVRShvd25p
bmdMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1
cmZhY2UgPSBvd25pbmdMYXllci0+cmVuZGVyU3VyZmFjZSgpOwpAQCAtNzQsNyArNzQsNyBAQCBU
RVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFBy
b3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJl
bmRlclN1cmZhY2UtPnNldENsaXBSZWN0KHRlc3RSZWN0KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVUkZBQ0VfRElEX05PVF9DSEFOR0UocmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3Qo
dGVzdFJlY3QpKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlNYXNrID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGR1bW15TWFzayA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZHVtbXlNYXRy
aXg7CiAgICAgZHVtbXlNYXRyaXgudHJhbnNsYXRlKDEuMCwgMi4wKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVz
dC5jcHAKaW5kZXggMDU5ZWYyYWRjZjU1ZWQzYmZhYTUwNzkxNGE0MTMzNDc4ODZlZWM1NC4uMDJk
YzkwOGFiZGE3NzQ1M2E0ZmE2OWRlMmI5NmQzZGI5MDc5N2YyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3Qu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVy
aWZ5VGlsaW5nQ29tcGxldGVBbmROb092ZXJsYXApCiAgICAgSW50U2l6ZSBsYXllclNpemUgPSBJ
bnRTaXplKDgwMCwgNjAwKTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAKLSAgICBSZWZQdHI8Q0NTb2xpZENvbG9yTGF5ZXJJ
bXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0
cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxheWVyID0gQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpj
cmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVj
dCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogCkBAIC02Niw3ICs2Niw3IEBA
IFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdEJhY2tncm91bmRD
b2xvckluUXVhZCkKICAgICBJbnRTaXplIGxheWVyU2l6ZSA9IEludFNpemUoMTAwLCAxMDApOwog
ICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJT
aXplKTsKIAotICAgIFJlZlB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxheWVyID0gQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDU29saWRDb2xvckxheWVy
SW1wbD4gbGF5ZXIgPSBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICBsYXllci0+c2V0
Qm91bmRzKGxheWVyU2l6ZSk7CiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcih0ZXN0Q29s
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
ckltcGxUZXN0LmNwcAppbmRleCBkNTVjMGJjMTY0NGUyYTg5MDc0ZjJiODlmNjFlZGYyMjBmNzg2
ZmMzLi5mZjdkYWEzYzliMjc2ZjVhMmRhN2EzOTNkYjE4YjU1YWQ0NThkMDg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNw
cApAQCAtMzksOSArMzksOSBAQCBuYW1lc3BhY2UgewogCiAvLyBDcmVhdGUgYSBkZWZhdWx0IHRp
bGVkIGxheWVyIHdpdGggdGV4dHVyZXMgZm9yIGFsbCB0aWxlcyBhbmQgYSBkZWZhdWx0CiAvLyB2
aXNpYmlsaXR5IG9mIHRoZSBlbnRpcmUgbGF5ZXIgc2l6ZS4KLXN0YXRpYyBQYXNzUmVmUHRyPEND
VGlsZWRMYXllckltcGw+IGNyZWF0ZUxheWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25z
dCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlv
biBib3JkZXJUZXhlbHMpCitzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVh
dGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxzKQogewot
ICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IENDVGlsZWRMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBDQ1RpbGVkTGF5
ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxlciA9
IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUodGlsZVNpemUsIGJvcmRlclRleGVscyk7CiAgICAg
dGlsZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0
aWxlcik7CkBAIC02OCw3ICs2OCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5
UXVhZExpc3QpCiAKICAgICAvLyBWZXJpZnkgZGVmYXVsdCBsYXllciBkb2VzIGNyZWF0ZXMgcXVh
ZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0
ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxh
eWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cyk7CiAgICAgICAgIENDUXVhZExpc3QgcXVhZHM7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
OwogICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZHMsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSk7CkBAIC03OCw3ICs3OCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVh
ZExpc3QpCiAKICAgICAvLyBMYXllciB3aXRoIGVtcHR5IHZpc2libGUgbGF5ZXIgcmVjdCBwcm9k
dWNlcyBubyBxdWFkcwogICAgIHsKLSAgICAgICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxh
eWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6
Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVy
ID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzKTsKICAgICAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVj
dCgpKTsKIAogICAgICAgICBDQ1F1YWRMaXN0IHF1YWRzOwpAQCAtODksNyArODksNyBAQCBURVNU
KENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0
aCBub24taW50ZXJzZWN0aW5nIHZpc2libGUgbGF5ZXIgcmVjdCBwcm9kdWNlcyBubyBxdWFkcwog
ICAgIHsKLSAgICAgICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5
ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxz
KTsKKyAgICAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIo
dGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsK
IAogICAgICAgICBJbnRSZWN0IG91dHNpZGVCb3VuZHMoSW50UG9pbnQoLTEwMCwgLTEwMCksIElu
dFNpemUoNTAsIDUwKSk7CiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KG91dHNp
ZGVCb3VuZHMpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3Qs
IGVtcHR5UXVhZExpc3QpCiAKICAgICAvLyBMYXllciB3aXRoIHNraXBzIGRyYXcgcHJvZHVjZXMg
bm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9
IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0Jv
cmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNy
ZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRl
clRleGVscyk7CiAgICAgICAgIGxheWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAKICAgICAgICAg
Q0NRdWFkTGlzdCBxdWFkczsKQEAgLTEyMSw3ICsxMjEsNyBAQCBURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgY29uc3QgaW50IG51bVRpbGVzWSA9IDI7CiAg
ICAgY29uc3QgSW50U2l6ZSBsYXllclNpemUodGlsZVNpemUud2lkdGgoKSAqIG51bVRpbGVzWCwg
dGlsZVNpemUuaGVpZ2h0KCkgKiBudW1UaWxlc1kpOwogCi0gICAgUmVmUHRyPENDVGlsZWRMYXll
ckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRp
bGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
bGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0
YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVk
UXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogCiAgICAgLy8gTm8g
Y2hlY2tlcmJvYXJkaW5nCkBAIC0xNTAsNyArMTUwLDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBs
VGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogCiBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0
IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9u
IGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQogewot
ICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhl
bE9wdGlvbik7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVj
dCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogCkBAIC0yNjAsNyArMjYwLDcg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQog
ICAgIGNvbnN0IGludCBudW1UaWxlc1kgPSAyOwogICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVz
ID0gbnVtVGlsZXNYICogbnVtVGlsZXNZOwogICAgIGNvbnN0IEludFNpemUgbGF5ZXJTaXplKHRp
bGVTaXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXplLmhlaWdodCgpICogbnVtVGlsZXNZ
KTsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgbGF5ZXIt
PnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CiAgICAgbGF5ZXItPnNldEJhY2tncm91
bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGIzZGQy
N2QzMWQ4ODIxMDRjNzBjZmZmNTAyNGZiODA0NDdlYTE0MS4uYzVlOTgzZWVhYWVlMWNlNTQzZTk1
YTMyZGE4YWVmNTc2M2EzZjIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKIAotICAgICAgICAgICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgICAgICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllcklt
cGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXll
ckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAKICAgICAgICAgICAgIGNh
bnZhcy0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhpbXBsQ29udGV4dC5nZXQoKSwgdXBkYXRl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCBmY2QzODc4YTY2YTYzYjhmOTYwNmI5NTQzYWY3MTEyNjky
MWM1ZTRhLi43ZWQ0MjJkYjgwNGQ1OTg0Mzg5NWRkM2U4ZWRhYTVmMzQwODI4NWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hEaXJ0eVRpbGVzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAy
NCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBSZWZQdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bCgwKSk7CisgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCiAgICAgRmFrZVRleHR1cmVBbGxv
Y2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRl
eHR1cmVBbGxvY2F0b3IpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBSZWZQ
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgwKSk7CisgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwgPSBhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCiAgICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMzIzLDcgKzMyMyw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobWVt
b3J5TGltaXQsIG1lbW9yeUxpbWl0IC8gMiwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKLSAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFk
b3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CisgICAgT3duUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllcklt
cGwoMCkpOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMzU5LDcg
KzM1OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVw
YXJlKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+
IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CisgICAg
T3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMCkpOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVy
ZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hy
b25pemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJv
bml6ZXJUZXN0LmNwcAppbmRleCAxNTU3YTdkOTMyMmNjNmJlMjA2YmY1MGIwMGMwZjQ3MDYzYzU0
NzhiLi4wMjE1MWI4ZTZlNzNiNjk4MzEwZjViMTEwMzg1YWNmMTgzYTg3NjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNw
cApAQCAtMzgsOSArMzgsOSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBNb2NrQ0NMYXllckltcGwg
OiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1v
Y2tDQ0xheWVySW1wbD4gY3JlYXRlKGludCBsYXllcklkKQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1vY2tDQ0xheWVySW1wbD4gY3JlYXRlKGludCBsYXllcklkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNb2NrQ0NMYXllckltcGwobGF5ZXJJZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE1vY2tDQ0xheWVySW1wbChsYXllcklkKSk7CiAgICAgfQogICAgIHZp
cnR1YWwgfk1vY2tDQ0xheWVySW1wbCgpCiAgICAgewpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5Nb2NrTGF5ZXJDaHJvbWl1bSgpIHsgfQogCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpCisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gTW9ja0NDTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKICAgICB9CkBAIC0x
MDcsNyArMTA3LDcgQEAgdm9pZCBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChMYXllckNocm9taXVt
KiBsYXllciwgQ0NMYXllckltcGwqIGNjTGF5ZXIpCiAgICAgICAgIGV4cGVjdFRyZWVzQXJlSWRl
bnRpY2FsKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgY2NMYXllci0+cmVwbGljYUxheWVyKCkpOwog
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckNoaWxkcmVu
ID0gbGF5ZXItPmNoaWxkcmVuKCk7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1w
bD4gPiYgY2NMYXllckNoaWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBW
ZWN0b3I8T3duUHRyPENDTGF5ZXJJbXBsPiA+JiBjY0xheWVyQ2hpbGRyZW4gPSBjY0xheWVyLT5j
aGlsZHJlbigpOwogCiAgICAgQVNTRVJUX0VRKGxheWVyQ2hpbGRyZW4uc2l6ZSgpLCBjY0xheWVy
Q2hpbGRyZW4uc2l6ZSgpKTsKIApAQCAtMTIzLDcgKzEyMyw3IEBAIFRFU1QoVHJlZVN5bmNocm9u
aXplclRlc3QsIHN5bmNTaW1wbGVUcmVlRnJvbUVtcHR5KQogICAgIGxheWVyVHJlZVJvb3QtPmFk
ZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKICAgICBsYXllclRyZWVSb290LT5hZGRD
aGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJl
ZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3Qu
Z2V0KCksIG51bGxwdHIpOwogCiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVl
Um9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIH0KQEAgLTEzOCw3ICsxMzgsNyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdMYXllcnMp
CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgm
Y2NMYXllckRlc3RydWN0aW9uTGlzdCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1v
Y2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKIAotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6
c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCAwKTsKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CiAgICAgZXhwZWN0VHJlZXNBcmVJ
ZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAog
ICAgIC8vIEFkZCBhIG5ldyBsYXllciB0byB0aGUgTGF5ZXJDaHJvbWl1bSBzaWRlCkBAIC0xNzIs
NyArMTcyLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQ
cm9wZXJ0aWVzKQogICAgIEludFNpemUgc2Vjb25kQ2hpbGRCb3VuZHMgPSBJbnRTaXplKDI1LCA1
Myk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsxXS0+c2V0Qm91bmRzKHNlY29uZENo
aWxkQm91bmRzKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0g
VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCAw
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJv
bml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CiAg
ICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRy
ZWVSb290LmdldCgpKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHByb3BlcnR5IHZhbHVlcyB3
ZSBzZXQgb24gdGhlIExheWVyQ2hyb21pdW0gdHJlZSBhcmUgcmVmbGVjdGVkIGluIHRoZSBDQ0xh
eWVySW1wbCB0cmVlLgpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRl
c3QsIHJldXNlQ0NMYXllcnNBZnRlclN0cnVjdHVyYWxDaGFuZ2UpCiAgICAgbGF5ZXJCLT5hZGRD
aGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyRCA9IGxheWVyQi0+Y2hpbGRyZW4oKVsx
XS5nZXQoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJl
ZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCAwKTsK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CiAgICAg
ZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVS
b290LmdldCgpKTsKIAogICAgIC8vIE5vdyByZXN0cnVjdHVyZSB0aGUgdHJlZSB0byBsb29rIGxp
a2UgdGhpczoKQEAgLTI0Nyw3ICsyNDcsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBz
eW5jU2ltcGxlVHJlZVRoZW5EZXN0cm95KQogICAgIGludCBvbGRUcmVlRmlyc3RDaGlsZExheWVy
SWQgPSBvbGRMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5pZCgpOwogICAgIGludCBvbGRU
cmVlU2Vjb25kQ2hpbGRMYXllcklkID0gb2xkTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsxXS0+
aWQoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5
bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhvbGRMYXllclRyZWVSb290LmdldCgpLCAwKTsK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZXMob2xkTGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CiAg
ICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwob2xkTGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXll
clRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSBhbGwgY2hpbGRyZW4gb24gdGhlIExh
eWVyQ2hyb21pdW0gc2lkZS4KQEAgLTI4NywyMyArMjg3LDIzIEBAIFRFU1QoVHJlZVN5bmNocm9u
aXplclRlc3QsIHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogICAgIHJlcGxp
Y2FMYXllcldpdGhNYXNrLT5zZXRNYXNrTGF5ZXIocmVwbGljYU1hc2tMYXllci5nZXQoKSk7CiAg
ICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsyXS0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FM
YXllcldpdGhNYXNrLmdldCgpKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRy
ZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290
LmdldCgpLCAwKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVs
bHB0cik7CiAKICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllclRyZWVSb290LmdldCgp
LCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwogCiAgICAgLy8gUmVtb3ZlIHRoZSBtYXNrIGxheWVy
LgogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMF0tPnNldE1hc2tMYXllcigwKTsKLSAg
ICBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxh
eWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CisgICAgY2NMYXllclRy
ZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290
LmdldCgpLCBjY0xheWVyVHJlZVJvb3QucmVsZWFzZSgpKTsKICAgICBleHBlY3RUcmVlc0FyZUlk
ZW50aWNhbChsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwogCiAg
ICAgLy8gUmVtb3ZlIHRoZSByZXBsaWNhIGxheWVyLgogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxk
cmVuKClbMV0tPnNldFJlcGxpY2FMYXllcigwKTsKLSAgICBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5
ZXJUcmVlUm9vdC5nZXQoKSk7CisgICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXpl
cjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3Qu
cmVsZWFzZSgpKTsKICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllclRyZWVSb290Lmdl
dCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwogCiAgICAgLy8gUmVtb3ZlIHRoZSByZXBsaWNh
IG1hc2suCiAgICAgcmVwbGljYUxheWVyV2l0aE1hc2stPnNldE1hc2tMYXllcigwKTsKLSAgICBj
Y0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVy
VHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CisgICAgY2NMYXllclRyZWVS
b290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290Lmdl
dCgpLCBjY0xheWVyVHJlZVJvb3QucmVsZWFzZSgpKTsKICAgICBleHBlY3RUcmVlc0FyZUlkZW50
aWNhbChsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127246</attachid>
            <date>2012-02-15 15:04:39 -0800</date>
            <delta_ts>2012-02-15 16:31:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120215150438.patch</filename>
            <type>text/plain</type>
            <size>126956</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRmNjE4ZmFjYmNlOTI2
YjVlNWY3YjUyMjE5YjcyNTdmYzUyZTA4OS4uOTU5MjAwNmFmODUyZDg1ZmEzZDU4ZTM2ZWQ0YzI5
YTYxMjJkMmFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMi0wMi0xNSAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU29saWRDb2xvckxheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnJldXNlT3JDcmVhdGVDQ0xheWVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5j
aHJvbml6ZXIuaDoKKyAgICAgICAgKFRyZWVTeW5jaHJvbml6ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFZpZGVvTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFz
TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGFtYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNr
ZXI6OnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEYW1h
Z2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oOgorICAgICAgICAoQ0NE
YW1hZ2VUcmFja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6c29ydExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpz
ZXRSZXBsaWNhTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjaGlsZHJlbik6CisgICAgICAgIChDQ0xh
eWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJv
bnQ6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNr
VG9Gcm9udDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjazo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySXRlcmF0b3I6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6
OkNDTGF5ZXJJdGVyYXRvcik6CisgICAgICAgIChCYWNrVG9Gcm9udCk6CisgICAgICAgIChGcm9u
dFRvQmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckl0ZXJhdG9yUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpnZXRSYXdQdHIpOgorICAg
ICAgICAoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckl0ZXJhdG9yUG9zaXRpb246OmN1cnJlbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySXRlcmF0b3JQb3NpdGlvbjo6dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjp0YXJnZXRSZW5kZXJTdXJmYWNlQ2hp
bGRyZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJT
b3J0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhO
b2Rlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5oOgorICAgICAgICAoQ0NMYXllclNvcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENvbW1vbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVy
VHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnRy
YWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxl
YXNlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5MYXllckltcGw6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmxheWVyTGlzdCk6
CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6Y3JlYXRlKToKKwogMjAxMi0wMi0xNCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHJlcGFyZSBSZW5kZXJMYXllckJhY2tpbmcgYW5kIFJl
bmRlckxheWVyQ29tcG9zaXRvciBmb3Igc3VicGl4ZWwgbGF5b3V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDU5NTM4YmVlYzBmZDQ4YzRjMTg1Y2JiMmRiNmIwNTZlMGEyZWIwMDUuLmIz
NTM1M2EwYmQ4MjE3YTIzMWQxNjJmMzhiMGVjMDEyMmE0YjlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDItMTUgIFRpZW4tUmVuIENoZW4gIDx0
cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVwbGFjZSBSZWZQdHIg
d2l0aCBPd25QdHIgZm9yIENDTGF5ZXJJbXBsIHRyZWUgc3RydWN0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NEYW1hZ2VUcmFja2Vy
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6ZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6ZW11bGF0ZURyYXdp
bmdPbmVGcmFtZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVXaXRoT25l
U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVXaXRoVHdvU3Vy
ZmFjZXMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRo
T25lU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlQW5kU2V0VXBUZXN0VHJl
ZVdpdGhUd29TdXJmYWNlcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6
CisgICAgICAgICogdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvQ0NMYXllclNvcnRlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpzZXR1cFNjcm9sbEFu
ZENvbnRlbnRzTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKFdl
YktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogdGVzdHMvQ0NS
ZW5kZXJTdXJmYWNlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJU
ZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAo
Q0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246Omdl
dFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3lj
bGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAg
ICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NDTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorCiAyMDEyLTAyLTE0ICBSYW15YSBDaGFuZHJhc2VrYXJhbiAgPGNyYW15YUBnb29n
bGUuY29tPgogCiAgICAgICAgIExhc3QgY2hhcmFjdGVyIGRpc3BsYXkgZm9yIHBhc3N3b3JkcyBp
biBBbmRyb2lkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAppbmRleCAxODFiYTRl
NTgxMmNlODg3OGExNzkyMDI1OGY4ZWRlOGRmYjQ2MjFlLi5kNTMzNjk5YWY5ZjFmN2FhMDg1Mjhk
NDFmOGI2YmNjMjYwYjAzNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVt
KCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ0NhbnZhc0xheWVy
SW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgK
aW5kZXggOWU4Y2U3ZDhjYzgyYWE4ODNjMzZhODU4NjMwOTQ0OGYzMzYyMDI3MS4uNzIyY2MxYTY2
NzM4OWIzNTcxMDU4MjUyOGI2ZDFjYzc2M2EzNTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIGNs
YXNzIGZvciBXZWJHTCBhbmQgYWNjZWxlcmF0ZWQgMmQgY2FudmFzZXMuCiBjbGFzcyBDYW52YXNM
YXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKIHByb3Rl
Y3RlZDoKICAgICBDYW52YXNMYXllckNocm9taXVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDRiY2YyOTdmZjkyNDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQuLmFiYjI1YmQzZDM1
NWYxMzhjOTM2ZGU5ZWUzZTcwMzFlZTlmNzcyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBA
IC00NDUsNyArNDQ1LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKICAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoKTsKIH0KIAot
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwo
KQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcklt
cGwoKQogewogICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggM2ExZTk2YzVmZGE0OWU4MWI0NWRlN2M2YzQxMTllZDJiMzk4
NjNmMS4uOTk4MTFhMDFkZWY4ZTYzN2E3NTIzNjQyZGFhODcxZmRiMTJkYzU1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjM2LDcgKzIzNyw3IEBAIHByb3Rl
Y3RlZDoKICAgICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKICAgICBmcmllbmQgY2xh
c3MgQ0NMYXllckltcGw7CiAgICAgLy8gQ29uc3RydWN0cyBhIENDTGF5ZXJJbXBsIG9mIHRoZSBj
b3JyZWN0IHJ1bnRpbWUgdHlwZSBmb3IgdGhpcyBMYXllckNocm9taXVtIHR5cGUuCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZp
cnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKICAgICBp
bnQgbV9sYXllcklkOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cAppbmRleCAwNzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhhYjRiLi42MjVmNGIy
MWRmYjhhNTFkM2M5ZTdhZjA5MmU0YTAyOWJjYjM2NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQwog
ICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8
Q0NMYXllckltcGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsK
ICAgICByZXR1cm4gQ0NQbHVnaW5MYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2lu
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDg0MzY1Njk1YmIxZGRjNjUyMzFhZGQwNGY2
ZjBkODMwMDA5MWUwZDAuLmMzMGY3N2FjNWQxYjdiYTVhNzRkYWRiMDhmZGU0YTEzYjNlYTQ0ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAogICAgIC8vIENvZGUgcGF0aCBmb3IgcGx1
Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCiAgICAgdm9pZCBzZXRUZXh0
dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNo
cm9taXVtLmNwcAppbmRleCBlZDEzNTQ2YmFlODdmNDA1MWIzMGUzNDk0YzBmMmZkZTg1M2YxZTMz
Li4wZGM3N2FkYTgyMjYwMjMyNWU2NzllMzE1NDg4MzM2ODkzYjk0ZTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gU29saWRDb2xvckxheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFNv
bGlkQ29sb3JMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJu
IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKGlkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlk
Q29sb3JMYXllckNocm9taXVtLmgKaW5kZXggMWQxNDg5MGJkMGUxZjBjMjBjNjNjNmQyMzE3MTU5
NDhkMjE4OTRmYy4uOTRhNTRhMGFjNWFkZTExOTc4NmRkMDZiZDM0OWRiYjIxN2JiZDU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRD
b2xvckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIC8vIHNldEJhY2tncm91bmRDb2xvcigpIG9uIHRoZSBi
YXNlIGNsYXNzLgogY2xhc3MgU29saWRDb2xvckxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIH5Tb2xpZENvbG9yTGF5ZXJDaHJv
bWl1bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTBkMWQ5NTdiZDUw
YWIxZmJmMWMwNWRkNmZjZTg1YzI2OGE0Yzc0Zi4uOTMwNTliZGUzY2RhMmNhMmQwNWZhOTAzMGQw
MmQ0YmUwNDE4OWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIFRpbGVkTGF5ZXJDaHJvbWl1bTo6flRpbGVkTGF5ZXJDaHJvbWl1bSgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gVGlsZWRMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6OmNyZWF0
ZShpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggMmQ5OTk1MzY3YWQy
NDM2YWZmYWZlNmRjYzMyM2FmOTUzYWVkMzA3Mi4uYTZjMjExOTUxZDc4NTE0MzQwZjU2N2JkZjM2
MGVhNjc0MTA5NGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogCiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVl
ZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJv
bml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJl
ZVN5bmNocm9uaXplci5jcHAKaW5kZXggZDBmZDBjZTUyM2Q2Mzg4NGJlOTMyZTFiZDQxNjU4MmYy
NTc2MmU0MC4uNTM3NDk1YWExMWIzNTljY2M0ZmFiMTBhZjFiYzNkMmRiODU2MTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNo
cm9uaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJlZVN5bmNocm9uaXplci5jcHAKQEAgLTMzLDYzICszMyw1OCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgVHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXllckltcGxzVG9NYXBS
ZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmIG1hcCwgQ0NMYXllckltcGwqIGNjTGF5ZXJJbXBsKQor
UGFzc093blB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVl
cyhMYXllckNocm9taXVtKiBsYXllckNocm9taXVtUm9vdCwgUGFzc093blB0cjxDQ0xheWVySW1w
bD4gb2xkQ0NMYXllckltcGxSb290KQogewotICAgIG1hcC5zZXQoY2NMYXllckltcGwtPmlkKCks
IGNjTGF5ZXJJbXBsKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4m
IGNoaWxkcmVuID0gY2NMYXllckltcGwtPmNoaWxkcmVuKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9N
YXBSZWN1cnNpdmUobWFwLCBjaGlsZHJlbltpXS5nZXQoKSk7Ci0KLSAgICBpZiAoQ0NMYXllcklt
cGwqIG1hc2tMYXllciA9IGNjTGF5ZXJJbXBsLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NM
YXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBtYXNrTGF5ZXIpOworICAgIENDTGF5ZXJJbXBs
TWFwIG1hcDsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShtYXAsIG9s
ZENDTGF5ZXJJbXBsUm9vdCk7CiAKLSAgICBpZiAoQ0NMYXllckltcGwqIHJlcGxpY2FMYXllciA9
IGNjTGF5ZXJJbXBsLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9N
YXBSZWN1cnNpdmUobWFwLCByZXBsaWNhTGF5ZXIpOworICAgIHJldHVybiBzeW5jaHJvbml6ZVRy
ZWVSZWN1cnNpdmUobWFwLCBsYXllckNocm9taXVtUm9vdCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShMYXll
ckNocm9taXVtKiBsYXllciwgQ0NMYXllckltcGxNYXAmIG1hcCkKK3ZvaWQgVHJlZVN5bmNocm9u
aXplcjo6Y29sbGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAm
IG1hcCwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcG9wQ0NMYXllckltcGwpCiB7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbDsKLSAgICBDQ0xheWVySW1wbE1hcDo6aXRlcmF0
b3IgaXQgPSBtYXAuZmluZChsYXllci0+aWQoKSk7Ci0gICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkg
ewotICAgICAgICBjY0xheWVySW1wbCA9IGl0LT5zZWNvbmQ7IC8vIFdlIGFscmVhZHkgaGF2ZSBh
biBlbnRyeSBmb3IgdGhpcywgd2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0LgotICAgICAgICBj
Y0xheWVySW1wbC0+Y2xlYXJDaGlsZExpc3QoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjY0xh
eWVySW1wbCA9IGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwotICAgICAgICBtYXAuc2V0KGxh
eWVyLT5pZCgpLCBjY0xheWVySW1wbCk7IC8vIEFkZCBpdCB0byB0aGUgbWFwIHNvIG90aGVyIGxh
eWVycyByZWZlcmVuY2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1cC4KLSAgICB9CisgICAgQ0NM
YXllckltcGwqIGNjTGF5ZXJJbXBsID0gcG9wQ0NMYXllckltcGwuZ2V0KCk7CiAKLSAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNoaWxkcmVuID0gbGF5ZXItPmNoaWxk
cmVuKCk7CisgICAgaWYgKCFjY0xheWVySW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFw
LnNldChjY0xheWVySW1wbC0+aWQoKSwgcG9wQ0NMYXllckltcGwpOworCisgICAgVmVjdG9yPE93
blB0cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRyZW4gPSBjY0xheWVySW1wbC0+bV9jaGlsZHJlbjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAg
ICBjY0xheWVySW1wbC0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKGNoaWxkcmVu
W2ldLmdldCgpLCBtYXApKTsKKyAgICAgICAgY29sbGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1
cnNpdmUobWFwLCBjaGlsZHJlbltpXS5yZWxlYXNlKCkpOworCisgICAgY29sbGVjdEV4aXN0aW5n
Q0NMYXllckltcGxSZWN1cnNpdmUobWFwLCBjY0xheWVySW1wbC0+bV9tYXNrTGF5ZXIucmVsZWFz
ZSgpKTsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShtYXAsIGNjTGF5
ZXJJbXBsLT5tX3JlcGxpY2FMYXllci5yZWxlYXNlKCkpOworfQogCi0gICAgaWYgKExheWVyQ2hy
b21pdW0qIG1hc2tMYXllciA9IGxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgY2NMYXllcklt
cGwtPnNldE1hc2tMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFza0xheWVyLCBtYXAp
KTsKLSAgICBlbHNlCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoMCk7CitQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpyZXVzZU9yQ3JlYXRlQ0NMYXll
ckltcGwoQ0NMYXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbCA9IG1hcC50YWtlKGxheWVyLT5pZCgpKTsK
IAotICAgIGlmIChMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSBsYXllci0+cmVwbGljYUxh
eWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRSZXBsaWNhTGF5ZXIoc3luY2hyb25pemVU
cmVlUmVjdXJzaXZlKHJlcGxpY2FMYXllciwgbWFwKSk7Ci0gICAgZWxzZQotICAgICAgICBjY0xh
eWVySW1wbC0+c2V0UmVwbGljYUxheWVyKDApOworICAgIGlmICghY2NMYXllckltcGwpCisgICAg
ICAgIHJldHVybiBsYXllci0+Y3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdldCgpKTsKICAgICByZXR1cm4gY2NMYXllckltcGwu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVy
OjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW1Sb290LCBQYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVySW1wbFJvb3QpCitQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoQ0NM
YXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCiB7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QgPSBwcnBPbGRDQ0xheWVySW1wbFJvb3Q7Ci0g
ICAgLy8gQnVpbGQgYSBtYXAgZnJvbSBsYXllciBJRHMgdG8gQ0NMYXllckltcGxzIHNvIHdlIGNh
biByZXVzZSBsYXllcnMgZnJvbSB0aGUgb2xkIHRyZWUuCi0gICAgQ0NMYXllckltcGxNYXAgbWFw
OwotICAgIGlmIChvbGRDQ0xheWVySW1wbFJvb3QpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1Rv
TWFwUmVjdXJzaXZlKG1hcCwgb2xkQ0NMYXllckltcGxSb290LmdldCgpKTsKKyAgICBpZiAoIWxh
eWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIFJlY3Vyc2l2ZWx5IGJ1aWxk
IHRoZSBuZXcgbGF5ZXIgdHJlZS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG5ld0NDTGF5ZXJJ
bXBsUm9vdCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShsYXllckNocm9taXVtUm9vdCwgbWFw
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJJbXBsID0gcmV1c2VPckNyZWF0ZUND
TGF5ZXJJbXBsKG1hcCwgbGF5ZXIpOwogCi0gICAgcmV0dXJuIG5ld0NDTGF5ZXJJbXBsUm9vdC5y
ZWxlYXNlKCk7CisgICAgY2NMYXllckltcGwtPmNsZWFyQ2hpbGRMaXN0KCk7CisgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBjaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJl
bigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNjTGF5ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFw
LCBjaGlsZHJlbltpXS5nZXQoKSkpOworCisgICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcihz
eW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFwLCBsYXllci0+bWFza0xheWVyKCkpKTsKKyAgICBj
Y0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXAs
IGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkpOworCisgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
Y2NMYXllckltcGwuZ2V0KCkpOworICAgIHJldHVybiBjY0xheWVySW1wbC5yZWxlYXNlKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaAppbmRleCBh
NGU0OTQyMTczOTVlOGQyZTEyOTZiZDY1NjY2MmUzMmIxMTlhY2ZmLi4xMzQ3MDhjYTQzYmQ4OWVj
YmRmMmZkMjE1OTJmZDA3Mjg2ZGNjMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCkBAIC0y
OCw3ICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDAsMTYgKzQxLDE3IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFRyZWVTeW5j
aHJvbml6ZXIpOwogcHVibGljOgogICAgIC8vIEFjY2VwdHMgYSBMYXllckNocm9taXVtIHRyZWUg
YW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gYSBDQ0xheWVySW1wbCB0cmVlIHRoYXQgZHVwbGlj
YXRlcyB0aGUgc3RydWN0dXJlCiAgICAgLy8gb2YgdGhlIExheWVyQ2hyb21pdW0gdHJlZSwgcmV1
c2luZyB0aGUgQ0NMYXllckltcGxzIGluIHRoZSB0cmVlIHByb3ZpZGVkIGJ5IG9sZENDTGF5ZXJJ
bXBsUm9vdCBpZiBwb3NzaWJsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
c3luY2hyb25pemVUcmVlcyhMYXllckNocm9taXVtKiBsYXllclJvb3QsIFBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IHN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJSb290LCBQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QpOwogCiBwcml2YXRlOgogICAg
IFRyZWVTeW5jaHJvbml6ZXIoKTsgLy8gTm90IGluc3RhbnRpYWJsZS4KIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxpbnQsIFJlZlB0cjxDQ0xheWVySW1wbD4gPiBDQ0xheWVySW1wbE1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NMYXllckltcGw+ID4gQ0NMYXllckltcGxNYXA7
CiAKICAgICAvLyBEZWNsYXJlZCBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBzbyB0aGV5IGNh
biBhY2Nlc3MgZnVuY3Rpb25zIG9uIExheWVyQ2hyb21pdW0gYXMgYSBmcmllbmQgY2xhc3MuCi0g
ICAgc3RhdGljIHZvaWQgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUoQ0NMYXllckltcGxN
YXAmLCBDQ0xheWVySW1wbCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBz
eW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsTWFwJik7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJldXNlT3JDcmVhdGVDQ0xheWVy
SW1wbChDQ0xheWVySW1wbE1hcCYsIExheWVyQ2hyb21pdW0qKTsKKyAgICBzdGF0aWMgdm9pZCBj
b2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYsIFBhc3NP
d25QdHI8Q0NMYXllckltcGw+KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVySW1wbD4g
c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiwgTGF5ZXJDaHJvbWl1bSop
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggYWUyYWU4YzgwZTIyYTE5MzhhZWI0OWE0Njc5M2UyMzBlMjhiODI4YS4uZTY5
MTE5ODFlZDA2MWRjNjdkZTUzNGUzZWI2NzAwNTM0Yjk5ZDQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6flZp
ZGVvTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFZpZGVv
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1w
bD4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJu
IENDVmlkZW9MYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fcHJvdmlkZXIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA4Nzg4MDZlMjZkYjU0NzMwMjI0MTYyMzBlYzEw
NWZhYmY5YjhlNjRhLi4xZjJlOTIwMTI0ZmM0ZjAwNjJlMmQ2NTI2YjYwMmVjY2Q0YWM3YmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoVmlkZW9GcmFt
ZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgpOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBWaWRlb0xheWVyQ2hyb21pdW0oVmlkZW9GcmFtZVBy
b3ZpZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCA5MTI2YTdkNDQ1
MDFlNjMyNWI1ZWZkNGI1N2NiYTllNDZiYzhhNzVhLi5jOTZhZjI0NmVkM2JhNzU4OTViYmVmNTUy
ZDRjOThkNGU4MGI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKQEAgLTM0
LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0NhbnZhc0xheWVySW1w
bCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NDYW52YXNMYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0ND
YW52YXNMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXgg
MmQ2ZjQzZjMxODVmYzQ0NWNhOTk1OWZlODA0ZjYyNGIzYjRlMTMzZi4uNmEwNjJjYWNhN2NjNTg3
NWYyYzkyNTk5ODU2YjZhNWVjOGU1M2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIENDRGFtYWdlVHJhY2tlcjo6fkNDRGFtYWdlVHJhY2tlcigp
CiB7CiB9CiAKLXZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRl
KGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCwgaW50IHRhcmdl
dFN1cmZhY2VMYXllcklELCBDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllcikKK3Zv
aWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3Rv
cjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCwgQ0NM
YXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpCiB7CiAgICAgLy8KICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSAiZGFtYWdlIHJlY3QiIG9mIGEgdGFyZ2V0IHN1cmZhY2Us
IGFuZCB1cGRhdGVzIHRoZSBzdGF0ZQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ0NEYW1hZ2VU
cmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NM
YXllckltcGw+CiAKICAgICAvLyBJZiB0aGUgdGFyZ2V0IHN1cmZhY2UgYWxyZWFkeSBrbm93cyBp
dHMgZW50aXJlIHJlZ2lvbiBpcyBkYW1hZ2VkLCB3ZSBjYW4gcmV0dXJuIGVhcmx5LgogICAgIC8v
IEZJWE1FOiB0aGlzIHNob3VsZCBnbyBhd2F5LCBvciB3aWxsIGJlIGNsZWFuZXIsIGFmdGVyIHJl
ZmFjdG9yaW5nIGludG8gUmVuZGVyUGFzcy9SZW5kZXJTY2hlZHVsZS4KLSAgICBDQ0xheWVySW1w
bCogbGF5ZXIgPSBsYXllckxpc3RbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGxheWVyID0g
bGF5ZXJMaXN0WzBdOwogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSA9IGxheWVy
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7CiAKICAgICBpZiAobV9mb3JjZUZ1bGxEYW1hZ2VOZXh0
VXBkYXRlIHx8IHRhcmdldFN1cmZhY2UtPnN1cmZhY2VQcm9wZXJ0eUNoYW5nZWRPbmx5RnJvbURl
c2NlbmRhbnQoKSkgewpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBDQ0RhbWFnZVRyYWNrZXI6
OnNhdmVSZWN0Rm9yTmV4dEZyYW1lKGludCBsYXllcklELCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFMKICAgICBtX25leHRSZWN0SGlzdG9yeS0+c2V0KGxheWVySUQsIHRhcmdldFNwYWNlUmVjdCk7
CiB9CiAKLUZsb2F0UmVjdCBDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFtYWdlRnJvbUFjdGl2ZUxh
eWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIGludCB0
YXJnZXRTdXJmYWNlTGF5ZXJJRCkKK0Zsb2F0UmVjdCBDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFt
YWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0
LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpCiB7CiAgICAgRmxvYXRSZWN0IGRhbWFnZVJlY3Qg
PSBGbG9hdFJlY3QoKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVy
SW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgQ0NMYXll
ckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBDQ0xh
eWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF07CiAKICAgICAgICAgaWYgKEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8Q0NM
YXllckltcGw+KGxheWVyLCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCkpCiAgICAgICAgICAgICBleHRl
bmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKGxheWVyLCBkYW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJh
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
YW1hZ2VUcmFja2VyLmgKaW5kZXggZDQyOGYyNmQxYTBjMjVjYTBjNDgxYzA5M2ViM2E4ZmZiYTNi
YjgwOS4uN2E2MjljNDc4MTI4MWJlNGRmYTFjNDlkZDEzYjExZTRmOTU1MGY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VU
cmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEYW1hZ2VUcmFja2VyLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgfkND
RGFtYWdlVHJhY2tlcigpOwogCiAgICAgdm9pZCBmb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlKCkg
eyBtX2ZvcmNlRnVsbERhbWFnZU5leHRVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVE
YW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxh
eWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklELCBDQ0xheWVySW1wbCogdGFyZ2V0U3Vy
ZmFjZU1hc2tMYXllcik7CisgICAgdm9pZCB1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0
IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJ
RCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpOwogICAgIGNvbnN0IEZsb2F0
UmVjdCYgY3VycmVudERhbWFnZVJlY3QoKSB7IHJldHVybiBtX2N1cnJlbnREYW1hZ2VSZWN0OyB9
CiAKIHByaXZhdGU6CiAgICAgQ0NEYW1hZ2VUcmFja2VyKCk7CiAKLSAgICBGbG9hdFJlY3QgdHJh
Y2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsKKyAgICBGbG9hdFJlY3Qg
dHJhY2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBs
YXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CiAgICAgRmxvYXRSZWN0IHRyYWNr
RGFtYWdlRnJvbVN1cmZhY2VNYXNrKENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVy
KTsKICAgICBGbG9hdFJlY3QgdHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJSZWN0cygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMGJmYjczNzA3YTRiNWQ3ZTE2ZWYyODk3ZjgyZWQzZjk0
ZmUxMWMwZi4uZTU5NzZhMjFjZjdhY2JjZTIyMDlkYzQ3ZWRiZDE1OTBkOTA5MDA0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNzAsNyArNzAsNyBAQCBDQ0xheWVySW1wbDo6fkNDTGF5
ZXJJbXBsKCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogfQogCi12b2lk
IENDTGF5ZXJJbXBsOjphZGRDaGlsZChQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCkKK3Zv
aWQgQ0NMYXllckltcGw6OmFkZENoaWxkKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkKQog
ewogICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hp
bGQpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXllclByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAgICAgdHMgPDwgImRyYXdz
Q29udGVudDogIiA8PCAobV9kcmF3c0NvbnRlbnQgPyAieWVzIiA6ICJubyIpIDw8ICJcbiI7CiB9
CiAKLXZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRv
ciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZW5kLCBDQ0xh
eWVyU29ydGVyKiBsYXllclNvcnRlcikKK3ZvaWQgc29ydExheWVycyhWZWN0b3I8Q0NMYXllcklt
cGwqPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+OjppdGVyYXRvciBlbmQs
IENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyKQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnNvcnRMYXllcnMiLCAwLCAwKTsKICAgICBsYXllclNvcnRlci0+c29y
dChmaXJzdCwgZW5kKTsKQEAgLTMyMCwyMCArMzIwLDE0IEBAIHZvaWQgQ0NMYXllckltcGw6OnNl
dEJvdW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgICAgIG1fbGF5ZXJQcm9wZXJ0eUNo
YW5nZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoUGFzc1Jl
ZlB0cjxDQ0xheWVySW1wbD4gbWFza0xheWVyKQordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza0xh
eWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKIHsKLSAgICBpZiAobV9tYXNr
TGF5ZXIgPT0gbWFza0xheWVyKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX21hc2tMYXllciA9
IG1hc2tMYXllcjsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9
CiAKLXZvaWQgQ0NMYXllckltcGw6OnNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJ
bXBsPiByZXBsaWNhTGF5ZXIpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFz
c093blB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKQogewotICAgIGlmIChtX3JlcGxpY2FM
YXllciA9PSByZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fcmVwbGljYUxh
eWVyID0gcmVwbGljYUxheWVyOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRy
ZWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDhmYmFiYWU4NmE2YmQ2YWM4ZDY1Y2I3
ZTdlMDZjYTZjOWJlNjkxODAuLjBjNGI2OWI3OWYyZmYxYzM3NzhlZTBjZGQ5OGFmMTZlMTI0ZmYz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDUsMjUgKzQ1LDI1IEBAIGNsYXNzIENDTGF5
ZXJTb3J0ZXI7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOwogCi1jbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJJbXBs
PiB7CitjbGFzcyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENDTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllcklt
cGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NMYXllckltcGwoKTsKIAogICAgIC8vIFRy
ZWUgc3RydWN0dXJlLgogICAgIENDTGF5ZXJJbXBsKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmVudDsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotICAgIHZvaWQgYWRkQ2hpbGQoUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4pOworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q0NMYXllcklt
cGw+ID4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAgIHZvaWQg
YWRkQ2hpbGQoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIHZvaWQgcmVtb3ZlRnJvbVBh
cmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIHZvaWQgc2V0TWFz
a0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKKyAgICB2b2lkIHNldE1hc2tMYXllcihQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgQ0NMYXllckltcGwqIG1hc2tMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFJlcGxpY2FM
YXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIo
UGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgaW50IGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9CkBAIC0yMzAsOSArMjMwLDkgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFByb3BlcnRpZXMgaW50ZXJuYWwgdG8gQ0NMYXllckltcGwKICAgICBDQ0xheWVy
SW1wbCogbV9wYXJlbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBtX2NoaWxk
cmVuOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbV9tYXNrTGF5ZXI7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBtX3JlcGxpY2FMYXllcjsKKyAgICBWZWN0b3I8T3duUHRyPENDTGF5ZXJJbXBs
PiA+IG1fY2hpbGRyZW47CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX21hc2tMYXllcjsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IG1fcmVwbGljYUxheWVyOwogICAgIGludCBtX2xheWVySWQ7
CiAKICAgICAvLyBQcm9wZXJ0aWVzIHN5bmNocm9uaXplZCBmcm9tIHRoZSBhc3NvY2lhdGVkIExh
eWVyQ2hyb21pdW0uCkBAIC0zMTQsNyArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3Qg
bV91cGRhdGVSZWN0OwogfTsKIAotdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+Ojpp
dGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKK3ZvaWQgc29ydExheWVycyhWZWN0b3I8Q0NM
YXllckltcGwqPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+OjppdGVyYXRv
ciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9y
LmNwcAppbmRleCAwNzY3ZmYwZTc2NmM5NjM0MDYzNTdlZGVmMjliYzZkNWE5MDg5MmY4Li5lMmYx
MmRhMWU5OWMwNmUxYWYyMmFmZDMzOGE3YjZkZjY1MThkNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJdGVyYXRvci5jcHAKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5
ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+JiBwb3MpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1l
IFJlbmRlclN1cmZhY2VUeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3Qs
IFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQogewogICAgIHBvcy50YXJnZXRSZW5kZXJTdXJmYWNl
TGF5ZXJJbmRleCA9IDA7CiAgICAgcG9zLmN1cnJlbnRMYXllckluZGV4ID0gQ0NMYXllckl0ZXJh
dG9yUG9zaXRpb25WYWx1ZTo6TGF5ZXJJbmRleFJlcHJlc2VudGluZ1RhcmdldFJlbmRlclN1cmZh
Y2U7CkBAIC00NCwxNSArNDQsMTUgQEAgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNr
VG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXAKICAgICBtX2hp
Z2hlc3RUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIgPSAwOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxhdGUgPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4K
K3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+JiBw
b3MpCiB7CiAgICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb25WYWx1ZTo6SW52YWxpZFRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4
OwogICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRleCA9IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxhdGUgPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4K
K3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlPiYg
cG9zKQogewogICAgIC8vIElmIHRoZSBjdXJyZW50IGxheWVyIGhhcyBhIFJTLCBtb3ZlIHRvIGl0
cyBsYXllciBsaXN0LiBPdGhlcndpc2UsIHZpc2l0IHRoZSBuZXh0IGxheWVyIGluIHRoZSBjdXJy
ZW50IFJTIGxheWVyIGxpc3QuCiAgICAgaWYgKHBvcy5jdXJyZW50TGF5ZXJSZXByZXNlbnRzQ29u
dHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKSB7CkBAIC04NSwyMyArODUsMjMgQEAgdm9pZCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxMYXllclR5cGUKICAgICB9CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUs
IHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5
ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpiZWdpbihDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+JiBwb3MpCiB7CiAg
ICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gMDsKICAgICBwb3MuY3VycmVu
dExheWVySW5kZXggPSBwb3MudGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKCkuc2l6ZSgpIC0g
MTsKICAgICBnb1RvSGlnaGVzdEluU3VidHJlZShwb3MpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxhdGUgPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4K
K3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+JiBw
b3MpCiB7CiAgICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb25WYWx1ZTo6SW52YWxpZFRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4
OwogICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRleCA9IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxhdGUgPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4K
K3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQoQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlPiYg
cG9zKQogewogICAgIC8vIE1vdmVzIHRvIHRoZSBwcmV2aW91cyBsYXllciBpbiB0aGUgY3VycmVu
dCBSUyBsYXllciBsaXN0LiBUaGVuIHdlIGNoZWNrIGlmIHRoZQogICAgIC8vIG5ldyBjdXJyZW50
IGxheWVyIGhhcyBpdHMgb3duIFJTLCBpbiB3aGljaCBjYXNlIHRoZXJlIGFyZSB0aGluZ3MgaW4g
dGhhdCBSUyBsYXllciBsaXN0IHRoYXQgYXJlIGhpZ2hlciwgc28KQEAgLTEyOCw4ICsxMjgsOCBA
QCB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpuZXh0KENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uPExheWVyVHlwZQogICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci12b2lkIENDTGF5ZXJJdGVy
YXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxh
dGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZT4KK3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6
OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwg
TGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKIHsKICAgICBpZiAocG9zLmN1cnJl
bnRMYXllclJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NywyMyArMTQ3LDIzIEBAIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRU
b0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvclBvCiB9CiAKIC8vIERl
Y2xhcmUgZWFjaCBvZiB0aGUgYWJvdmUgZnVuY3Rpb25zIGZvciBMYXllckNocm9taXVtIGFuZCBD
Q0xheWVySW1wbCBjbGFzc2VzIHNvIHRoYXQgdGhleSBhcmUgbGlua2VkLgotdGVtcGxhdGUgdm9p
ZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJh
dG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPiYpOwotdGVt
cGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6ZW5kKENDTGF5
ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4m
KTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5l
eHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtPiYpOwotCi10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tU
b0Zyb250OjpiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5k
ZXJTdXJmYWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNr
VG9Gcm9udDo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tU
b0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+Jik7Ci0KLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJv
bnRUb0JhY2s6Om5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bSwgUmVu
ZGVyU3VyZmFjZUNocm9taXVtPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21p
dW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT4mKTsKLQotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2U+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNr
OjpiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllcklt
cGwsIENDUmVuZGVyU3VyZmFjZT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0
aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hy
b21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9u
dDo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtPiYpOwordGVtcGxhdGUg
dm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKKwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248
Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2U+Jik7Cit0
ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjplbmQoQ0NM
YXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBD
Q1JlbmRlclN1cmZhY2U+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6
OkJhY2tUb0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBW
ZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlPiYpOworCit0ZW1wbGF0ZSB2b2lk
IENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRv
clBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwg
UmVuZGVyU3VyZmFjZUNocm9taXVtPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hy
b21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Cit0ZW1wbGF0
ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdElu
U3VidHJlZShDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKKwordGVtcGxh
dGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVu
ZGVyU3VyZmFjZT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJv
bnRUb0JhY2s6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0
aW9uPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlPiYp
OwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29U
b0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIFZl
Y3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2U+Jik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaAppbmRleCA4ZjQxMmM0NGQzZDE0
MDQ3MGZkMTJhNzI3YjkxNGU0ZDQ2ZmJlYjE0Li4wZDM2M2ExZTc3MGZkNWZlNDM4ZDU0MTg3ZmQw
OTllY2Y4ZDM3MTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaApAQCAtODMsMTUgKzgz
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogLy8gQW4gaXRl
cmF0b3IgY2xhc3MgZm9yIHdhbGtpbmcgb3ZlciBsYXllcnMgaW4gdGhlIFJlbmRlclN1cmZhY2Ut
TGF5ZXIgdHJlZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBJdGVyYXRvckFjdGlvblR5cGU+Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBJdGVyYXRvckFjdGlvblR5cGU+CiBjbGFzcyBDQ0xheWVySXRlcmF0
b3IgewotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGUsIEl0ZXJhdG9yQWN0aW9uVHlwZT4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKKyAgICB0eXBl
ZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5
cGUsIEl0ZXJhdG9yQWN0aW9uVHlwZT4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAogcHVibGljOgog
ICAgIENDTGF5ZXJJdGVyYXRvcigpIHsgfQogCi0gICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5
cGUgYmVnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgdHJ1ZSk7IH0KLSAgICBzdGF0aWMgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgcmV0
dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZmFsc2UpOyB9
CisgICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5cGUgYmVnaW4oY29uc3QgTGF5ZXJMaXN0KiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0b3JUeXBlKHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIHRydWUpOyB9CisgICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5
cGUgZW5kKGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyByZXR1cm4g
Q0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBmYWxzZSk7IH0KIAog
ICAgIENDTGF5ZXJJdGVyYXRvclR5cGUmIG9wZXJhdG9yKysoKSB7IEFTU0VSVChtX2FjdGlvbnMp
OyBtX2FjdGlvbnMtPm5leHQobV9wb3NpdGlvbik7IHJldHVybiAqdGhpczsgfQogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDQ0xheWVySXRlcmF0b3JUeXBlJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOyB9CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHVibGljOgogICAgIExheWVyVHlwZSogdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKTsgfQogCiBwcml2
YXRlOgotICAgIENDTGF5ZXJJdGVyYXRvcihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4g
PiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgYm9vbCBzdGFydCkKKyAgICBDQ0xheWVySXRlcmF0
b3IoY29uc3QgTGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBib29sIHN0YXJ0KQog
ICAgICAgICA6IG1fcG9zaXRpb24ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKICAgICAgICAgLCBt
X2FjdGlvbnMoYWRvcHRQdHIobmV3IEl0ZXJhdG9yQWN0aW9uVHlwZSgpKSkKICAgICB7CkBAIC0x
MTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fYWN0aW9ucy0+ZW5kKG1fcG9z
aXRpb24pOwogICAgIH0KIAotICAgIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+IG1fcG9zaXRpb247CisgICAgQ0NMYXllckl0ZXJhdG9yUG9zaXRp
b248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlPiBtX3Bvc2l0aW9uOwog
ICAgIE93blB0cjxJdGVyYXRvckFjdGlvblR5cGU+IG1fYWN0aW9uczsKIH07CiAKQEAgLTEyNiwx
NCArMTI2LDE0IEBAIHN0cnVjdCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zIHsKICAgICAvLyBXYWxr
cyBsYXllcnMgc29ydGVkIGJ5IHotb3JkZXIgZnJvbSBiYWNrIHRvIGZyb250LgogICAgIGNsYXNz
IEJhY2tUb0Zyb250IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIGJlZ2lu
KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlz
dCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CisgICAgICAgIHZvaWQgYmVnaW4oQ0NMYXll
ckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBl
PiYpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJl
bmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlv
bjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgorICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5
cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci0gICAgICAg
IHZvaWQgbmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorICAgICAgICB2b2lkIG5l
eHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1
cmZhY2VUeXBlPiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IG1faGlnaGVzdFRhcmdl
dFJlbmRlclN1cmZhY2VMYXllcjsKQEAgLTE0MiwxOCArMTQyLDE4IEBAIHN0cnVjdCBDQ0xheWVy
SXRlcmF0b3JBY3Rpb25zIHsKICAgICAvLyBXYWxrcyBsYXllcnMgc29ydGVkIGJ5IHotb3JkZXIg
ZnJvbSBmcm9udCB0byBiYWNrCiAgICAgY2xhc3MgRnJvbnRUb0JhY2sgewogICAgIHB1YmxpYzoK
LSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+Ci0gICAgICAgIHZvaWQgYmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZT4KKyAgICAgICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUs
IExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci0gICAgICAgIHZv
aWQgZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExh
eWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CisgICAgICAgIHZvaWQgZW5kKEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNl
VHlwZT4mKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZT4KLSAgICAgICAgdm9pZCBuZXh0KENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVy
U3VyZmFjZVR5cGU+CisgICAgICAgIHZvaWQgbmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJT
dXJmYWNlVHlwZT4KLSAgICAgICAgdm9pZCBnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOworICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1l
IFJlbmRlclN1cmZhY2VUeXBlPgorICAgICAgICB2b2lkIGdvVG9IaWdoZXN0SW5TdWJ0cmVlKEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNl
VHlwZT4mKTsKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uLmgKaW5kZXggYjFmNjNjNDVmNzQyYzAzYzYwZGVmOWIyMTczODQwYWZiODZjMzI2My4u
OWY2NmFhNjE0YTgxMTVhNTU1OGMyYTM3NDM4YzY4MzlkYTc1N2QwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9y
UG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oCkBAIC01NiwxOSArNTYsMjIgQEAgc3RydWN0
IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWUgewogLy8gb25lIG9mIHRoZXNlIGxheWVycywg
dGhpcyBpcyBhIHZhbHVlIGZyb20gMCB0byBuLTEgKG4gPSBudW1iZXIgb2YgY2hpbGRyZW4pLiBT
aW5jZSB0aGUgaXRlcmF0b3IgbXVzdCBhbHNvIHN0b3AgYXQgdGhlIGxheWVycwogLy8gcmVwcmVz
ZW50aW5nIHRoZSB0YXJnZXQgc3VyZmFjZSwgdGhpcyBpcyBkb25lIGJ5IHNldHRpbmcgdGhlIGN1
cnJlbnRMYXllckluZGV4IHRvIGEgdmFsdWUgb2YKIC8vIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9u
VmFsdWU6OkxheWVyUmVwcmVzZW50aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZS4KLXRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+CiBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24gewogICAgIENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uKCkgOiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KDApIHsgfQotICAgIGV4
cGxpY2l0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJU
eXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSA6IHJlbmRlclN1cmZhY2VMYXllckxpc3Qo
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyB9CisgICAgZXhwbGljaXQgQ0NMYXllckl0ZXJhdG9y
UG9zaXRpb24oY29uc3QgTGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSA6IHJlbmRl
clN1cmZhY2VMYXllckxpc3QocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyB9CiAKLSAgICBpbmxp
bmUgTGF5ZXJUeXBlKiBjdXJyZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJS
ZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpID8gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVy
KCkgOiB0YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKVtjdXJyZW50TGF5ZXJJbmRleF0uZ2V0
KCk7IH0KKyAgICBpbmxpbmUgc3RhdGljIExheWVyQ2hyb21pdW0qIGdldFJhd1B0cihjb25zdCBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9CisgICAgaW5s
aW5lIHN0YXRpYyBDQ0xheWVySW1wbCogZ2V0UmF3UHRyKENDTGF5ZXJJbXBsKiBwdHIpIHsgcmV0
dXJuIHB0cjsgfQorCisgICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVyKCkgY29uc3Qg
eyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSA/IHRh
cmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogZ2V0UmF3UHRyKHRhcmdldFJlbmRlclN1cmZhY2VD
aGlsZHJlbigpW2N1cnJlbnRMYXllckluZGV4XSk7IH0KIAogICAgIGlubGluZSBib29sIGN1cnJl
bnRMYXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1Rhcmdl
dDxMYXllclR5cGU+KGN1cnJlbnRMYXllcigpLCB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+
aWQoKSk7IH0KICAgICBpbmxpbmUgYm9vbCBjdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRMYXllckluZGV4ID09IENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uVmFsdWU6OkxheWVySW5kZXhSZXByZXNlbnRpbmdUYXJnZXRSZW5kZXJT
dXJmYWNlOyB9CiAKLSAgICBpbmxpbmUgTGF5ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAoKnJlbmRlclN1cmZhY2VMYXllckxpc3QpW3RhcmdldFJlbmRl
clN1cmZhY2VMYXllckluZGV4XS5nZXQoKTsgfQorICAgIGlubGluZSBMYXllclR5cGUqIHRhcmdl
dFJlbmRlclN1cmZhY2VMYXllcigpIGNvbnN0IHsgcmV0dXJuIGdldFJhd1B0cigoKnJlbmRlclN1
cmZhY2VMYXllckxpc3QpW3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4XSk7IH0KICAgICBp
bmxpbmUgUmVuZGVyU3VyZmFjZVR5cGUqIHRhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJl
dHVybiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOyB9Ci0gICAg
aW5saW5lIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiB0YXJnZXRSZW5kZXJTdXJm
YWNlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0YXJnZXRSZW5kZXJTdXJmYWNlKCktPmxheWVy
TGlzdCgpOyB9CisgICAgaW5saW5lIGNvbnN0IExheWVyTGlzdCYgdGFyZ2V0UmVuZGVyU3VyZmFj
ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5sYXllckxp
c3QoKTsgfQogCiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNzYsNyArNzksNyBAQCBzdHJ1Y3Qg
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb24gewogICAgICAgICAgICAgJiYgY3VycmVudExheWVySW5k
ZXggPT0gb3RoZXIuY3VycmVudExheWVySW5kZXg7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgY29uc3Qg
TGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIGludCB0YXJnZXRSZW5kZXJT
dXJmYWNlTGF5ZXJJbmRleDsKICAgICBpbnQgY3VycmVudExheWVySW5kZXg7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clNvcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyU29ydGVyLmNwcAppbmRleCA3NTI4NTU0NDcxN2NmZGI1YTlhMmNkM2NhZjdkZmQz
MGNiMjcxOTY0Li5jNDM0YTFkOTUxMjQ2MzU1Mzc3Mjc2NzI4MjA5MDczZWM0OWYwMGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyU29ydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgQ0NMYXll
clNvcnRlcjo6Y3JlYXRlR3JhcGhOb2RlcyhMYXllckxpc3Q6Oml0ZXJhdG9yIGZpcnN0LCBMYXll
ckxpc3Q6Oml0ZXJhCiAgICAgZmxvYXQgbWluWiA9IEZMVF9NQVg7CiAgICAgZmxvYXQgbWF4WiA9
IC1GTFRfTUFYOwogICAgIGZvciAoTGF5ZXJMaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGZpcnN0
OyBpdCA8IGxhc3Q7IGl0KyspIHsKLSAgICAgICAgbV9ub2Rlcy5hcHBlbmQoR3JhcGhOb2RlKGl0
LT5nZXQoKSkpOworICAgICAgICBtX25vZGVzLmFwcGVuZChHcmFwaE5vZGUoKml0KSk7CiAgICAg
ICAgIEdyYXBoTm9kZSYgbm9kZSA9IG1fbm9kZXMuYXQobV9ub2Rlcy5zaXplKCkgLSAxKTsKICAg
ICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gbm9kZS5sYXllci0+cmVuZGVy
U3VyZmFjZSgpOwogICAgICAgICBpZiAoIW5vZGUubGF5ZXItPmRyYXdzQ29udGVudCgpICYmICFy
ZW5kZXJTdXJmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCmluZGV4IDJjMzBkNWRhZTRhMDk5
MGY0YzIxNGUwZWVmZDA2MDM3NGE3MWNiOTYuLjhhYjliNzU4MTRlOGNjNmZhMmVjYmIxY2JkZTg4
NzFkMjEzMGM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAg
Y2xhc3MgQ0NMYXllclNvcnRlciB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclNvcnRlcigpOwogCi0g
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IExheWVyTGlzdDsKKyAgICB0
eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IExheWVyTGlzdDsKIAogICAgIHZvaWQgc29ydChM
YXllckxpc3Q6Oml0ZXJhdG9yIGZpcnN0LCBMYXllckxpc3Q6Oml0ZXJhdG9yIGxhc3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBmODE0NGUxMDJjNWJmZjk1ZWQzNDI4
Yzk2MjIyYmJkMjI5YjY1ZDYyLi5kMmQyMGFlNmQyMGZlYmRlMDUzOTY3Y2M5NWEyZDBmNzAzNGMy
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE3MCwxMiArMTcwLDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOwogCi0gICAgLy8gU3luY2hyb25pemUgdHJlZXMsIGlmIG9uZSBleGlzdHMgYXQgYWxs
Li4uCi0gICAgaWYgKHJvb3RMYXllcigpKQotICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVy
KFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBs
LT5yb290TGF5ZXIoKSkpOwotICAgIGVsc2UKLSAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cigwKTsKLQorICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3lu
Y2hyb25pemVUcmVlcyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJlbGVhc2VSb290TGF5ZXIoKSkp
OwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKICAg
ICBob3N0SW1wbC0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKCkpOwpA
QCAtMzM5LDEzICszMzQsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlz
aWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAvLyBJZiB0
aGUgZnJvbnRidWZmZXIgaXMgY2FjaGVkLCB0aGVuIGNsb2JiZXIgdGhlIGltcGwgdHJlZS4gT3Ro
ZXJ3aXNlLAogICAgIC8vIHB1c2ggb3ZlciB0aGUgdHJlZSBjaGFuZ2VzLgogICAgIGlmIChtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuY29udGV4dEhhc0NhY2hlZEZyb250QnVm
ZmVyKSB7Ci0gICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7CisgICAgICAgIGhvc3RJ
bXBsLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKHJvb3RMYXllcigpKQotICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRyZWVTeW5j
aHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBsLT5yb290TGF5
ZXIoKSkpOwotICAgIGVsc2UKLSAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKKyAg
ICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJl
ZXMocm9vdExheWVyKCksIGhvc3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCkpKTsKIH0KIAogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKQpAQCAtNDQ3LDcgKzQzOSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNl
IGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYg
Q0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7Cisg
ICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFj
dGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCiAgICAgQ0NMYXllckl0
ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7
CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6
YmVnaW4oJm1fdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTMxLDcgKzUyMyw3
IEBAIHN0YXRpYyB2b2lkIGxlYXZlVGFyZ2V0UmVuZGVyU3VyZmFjZShWZWN0b3I8UmVuZGVyU3Vy
ZmFjZVJlZ2lvbj4mIHN0YWNrLCBSZW5kZXJTCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRM
YXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFp
bnRUeXBlIHBhaW50VHlwZSkKIHsKICAgICAvLyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9y
IHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVl
IHdhbGsuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVy
U3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NM
YXllckl0ZXJhdG9yVHlwZTsKKyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9t
aXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5
cGU7CiAKICAgICAvLyBUaGUgc3RhY2sgaG9sZHMgb2NjbHVkZWQgcmVnaW9ucyBmb3Igc3VidHJl
ZXMgaW4gdGhlIFJlbmRlclN1cmZhY2UtTGF5ZXIgdHJlZSwgc28gdGhhdCB3aGVuIHdlIGxlYXZl
IGEgc3VidHJlZSB3ZSBtYXkKICAgICAvLyBhcHBseSBhIG1hc2sgdG8gaXQsIGJ1dCBub3QgdG8g
dGhlIHBhcnRzIG91dHNpZGUgdGhlIHN1YnRyZWUuCkBAIC01NjgsNyArNTYwLDcgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VMYXllckxpc3QKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyKQogewogICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0
aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwg
UmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9u
dD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwogICAgIGZvciAoQ0NMYXll
ckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxp
c3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwCmluZGV4IDg3ZjNiNTFmMzVjYjVjM2M5NGYzMDdmNzY5M2FiYjY4ZmM4MDdiNWYu
LjE2N2EwMzQ2NmQyODYxY2YzODNmMzBkN2IxZGY3YTZhNDE3MDFkYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtMTA2LDExICsxMDYsOSBAQCBib29s
IGxheWVyU2hvdWxkQmVTa2lwcGVkKExheWVyVHlwZSogbGF5ZXIpCiAKIC8vIFJlY3Vyc2l2ZWx5
IHdhbGtzIHRoZSBsYXllciB0cmVlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBub2RlIGFuZCBjb21w
dXRlcyBhbGwgdGhlCiAvLyBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zLCBjbGlwUmVjdHMsIHJl
bmRlciBzdXJmYWNlcywgZXRjLgotdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgTGF5ZXJTb3J0ZXI+Ci1zdGF0aWMgYm9vbCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxh
eWVyLCBMYXllclR5cGUqIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBh
cmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRy
aXgsIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBW
ZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgbGF5ZXJMaXN0LCBMYXllclNvcnRlciogbGF5ZXJT
b3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUg
TGF5ZXJTb3J0ZXI+CitzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXllciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgTGF5ZXJMaXN0JiBsYXllckxpc3QsIExheWVyU29ydGVyKiBsYXllclNvcnRlciwg
aW50IG1heFRleHR1cmVTaXplKQogewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllclR5
cGU+ID4gTGF5ZXJMaXN0OwotCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgbmV3
IG1hdHJpeCB0cmFuc2Zvcm1hdGlvbnMgcmVjdXJzaXZlbHkgZm9yIHRoaXMKICAgICAvLyBsYXll
ciBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4gSXQgYWxzbyBjb21wdXRlcyB0aGUgYXBwcm9wcmlh
dGUgcmVuZGVyIHN1cmZhY2VzLgogICAgIC8vIFNvbWUgaW1wb3J0YW50IHBvaW50cyB0byByZW1l
bWJlcjoKQEAgLTM2NSw3ICszNjMsNyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkgewog
ICAgICAgICBMYXllclR5cGUqIGNoaWxkID0gbGF5ZXItPmNoaWxkcmVuKClbaV0uZ2V0KCk7Ci0g
ICAgICAgIGJvb2wgZHJhd3NDb250ZW50ID0gY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5SW50ZXJuYWw8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgTGF5ZXJTb3J0ZXI+
KGNoaWxkLCByb290TGF5ZXIsIHN1YmxheWVyTWF0cml4LCBuZXh0SGllcmFyY2h5TWF0cml4LCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkZXNjZW5kYW50cywgbGF5ZXJTb3J0ZXIsIG1heFRleHR1
cmVTaXplKTsKKyAgICAgICAgYm9vbCBkcmF3c0NvbnRlbnQgPSBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3Vy
ZmFjZVR5cGUsIExheWVyU29ydGVyPihjaGlsZCwgcm9vdExheWVyLCBzdWJsYXllck1hdHJpeCwg
bmV4dEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZGVzY2VuZGFudHMs
IGxheWVyU29ydGVyLCBtYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAgICAgaWYgKGRyYXdzQ29udGVu
dCkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpIHsKQEAgLTQ3MCwx
MSArNDY4LDExIEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAvLyBGSVhNRTogSW5zdGVhZCBv
ZiB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIHRvIHNldCB2aXNpYmlsaXR5IHJlY3RzIG9u
IGEgc2Vjb25kCiAvLyB0cmVlIHBhc3MsIHJldmlzZSBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0
KCkgc28gdGhhdCB0aGlzIGNhbiBiZSBkb25lIGluIGEgc2luZ2xlCiAvLyBwYXNzIGluc2lkZSBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDw+KCkuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotc3RhdGlj
IHZvaWQgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordGVtcGxhdGU8
dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlPgorc3RhdGljIHZvaWQgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXll
clJlY3RzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICAv
LyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1k
ZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJ
dGVyYXRvclR5cGU7CisgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXll
ckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5k
ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDg3LDE0
ICs0ODUsMTQgQEAgc3RhdGljIHZvaWQgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXll
clJlY3RzKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXAKIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShMYXllckNocm9t
aXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhp
ZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGxheWVyTGlzdCwg
aW50IG1heFRleHR1cmVTaXplKQogewotICAgIFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSwgdm9pZCo+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNo
eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCAwLCBtYXhUZXh0dXJl
U2l6ZSk7Ci0gICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzPExheWVy
Q2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CisgICAgV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJu
YWw8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0sIHZvaWQ+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVs
bEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCAwLCBt
YXhUZXh0dXJlU2l6ZSk7CisgICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJl
Y3RzPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVy
U3VyZmFjZUNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShD
Q0xheWVySW1wbCogbGF5ZXIsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBm
dWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3Qs
IENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KENDTGF5ZXJJbXBsKiBsYXllciwgQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVy
KiBsYXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXplKQogewotICAgIGNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhp
ZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCBsYXllclNv
cnRlciwgbWF4VGV4dHVyZVNpemUpOwotICAgIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxl
TGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPihyZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKKyAgICBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5h
bDxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NM
YXllclNvcnRlcj4obGF5ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsIGxheWVyU29ydGVyLCBt
YXhUZXh0dXJlU2l6ZSk7CisgICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJl
Y3RzPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlPihy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaAppbmRleCAyZTBjYmNmMmM1ODVlODIx
NWQyODZkZWU5YjYxZTUzNTE4MGNmZmFkLi5kZjIzY2QwMWZlYWI1ODRlNWJjOGM2N2FhNTY0MmRm
YTIzN2I2MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBz
dGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0KExheWVyVHlwZSopOwogCiAg
ICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVy
Q2hyb21pdW0qLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGll
cmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBp
bnQgbWF4VGV4dHVyZVNpemUpOwotICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCosIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+
JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0ZXIqLCBpbnQgbWF4VGV4dHVyZVNpemUpOworICAgIHN0
YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1w
bCosIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBw
YXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0
cml4LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciosIGludCBtYXhUZXh0dXJl
U2l6ZSk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBib29sIHJl
bmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0KExheWVyVHlwZSosIGludCB0YXJnZXRTdXJm
YWNlTGF5ZXJJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5k
ZXggZTQ2YWUzMjQ5ZjM4MTVjZDliMDE5MWE5Mjg3MWZhMTdmMmE5ZGI4Ni4uZGY3NWE4MDc0MTk5
NWMwYjIyNDI3NDE2NzM1YmYzMzI4NzZjM2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NM
YXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUK
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAg
ICAgLCBtX2ZyYW1lTnVtYmVyKDApCisgICAgLCBtX3Njcm9sbExheWVySW1wbCgwKQogICAgICwg
bV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV9oYXZl
V2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9v
dERyYXdMYXllciwKICAgICAvLyBkYW1hZ2UgcmVjdC4gVGhlIHJvb3QgZGFtYWdlIHJlY3QgaXMg
dGhlbiB1c2VkIHRvIHNjaXNzb3IgZWFjaCBzdXJmYWNlLgogCiAgICAgZm9yIChpbnQgc3VyZmFj
ZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXgg
Pj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJm
YWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Cisg
ICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0W3N1cmZhY2VJbmRleF07CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3Vy
ZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgICAgICBBU1NF
UlQocmVuZGVyU3VyZmFjZSk7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPmRhbWFnZVRyYWNrZXIo
KS0+dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShyZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwg
cmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigp
KTsKQEAgLTIxMCw3ICsyMTEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0
ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAgICAgbV9yb290RGFtYWdl
UmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3Vy
cmVudERhbWFnZVJlY3QoKTsKIAogICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1
cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJ
bmRleCkgewotICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgICAgICBDQ0xheWVySW1w
bCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5k
ZXhdOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKIAogICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNz
PiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUocmVuZGVyU3VyZmFjZSk7CkBAIC0yMjIsNyAr
MjIzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
Q0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzKQogCiAgICAgICAgIGNvbnN0IENDTGF5ZXJMaXN0JiBs
YXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5
ZXJJbmRleCkgewotICAgICAgICAgICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xh
eWVySW5kZXhdLmdldCgpOworICAgICAgICAgICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJM
aXN0W2xheWVySW5kZXhdOwogICAgICAgICAgICAgaWYgKGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0zMzIsNyArMzMz
LDcgQEAgc3RhdGljIENDTGF5ZXJJbXBsKiBmaW5kU2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIGxh
eWVyKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJv
b3RMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcikKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVyKQogewog
ICAgIG1fcm9vdExheWVySW1wbCA9IGxheWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKaW5kZXggNWVlMDM5OWY1YjQ1NzIyNWE5MWRmZjZiNzc3Y2Q1ZDhhNzZkNmE5Zi4u
ZGIxOTI4MDFjZWYxYjVkNTA1N2M2MWMwMjgwODk0MmE0MGEwMDA1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtOTIsOSArOTIsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgcmVhZGJhY2sodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBDQ0xheWVy
SW1wbCogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9
Ci0gICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOworICAgIHZv
aWQgc2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+KTsKKyAgICBQYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiByZWxlYXNlUm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBs
LnJlbGVhc2UoKTsgfQogCi0gICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxMYXllckltcGwuZ2V0KCk7IH0KKyAgICBDQ0xheWVySW1wbCogc2Nyb2xs
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVySW1wbDsgfQogCiAgICAgYm9vbCB2
aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpOwpAQCAtMTI2LDcgKzEyNyw3IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9mcmFtZU51
bWJlcjsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID4gQ0NMYXllckxpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVy
TGlzdDsKIAogICAgIHZvaWQgc2V0UGFnZVNjYWxlRGVsdGEoZmxvYXQpOwogICAgIHZvaWQgYXBw
bHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xsTGF5ZXIoKTsKQEAgLTEzOCw4ICsxMzksOCBAQCBwcml2
YXRlOgogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKIAogICAgIE93blB0cjxMYXll
clJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IG1fcm9vdExheWVySW1wbDsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fc2Nyb2xsTGF5
ZXJJbXBsOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOworICAgIEND
TGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7
CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1
Z2luTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCmluZGV4IDM5YTk1OTUxZGRmM2JjOWY0NDk3NTQ0Mjcy
MjllNWM1OTNjMjg3YzcuLjlkOWE0ZGQxMDRlOTkyMzgwNDhjYzNjNTZkYjExYzgzOGEwY2NkMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGx1Z2luTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUGx1Z2luTGF5ZXJJbXBsIDogcHVibGljIENDTGF5
ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ1BsdWdpbkxheWVySW1w
bD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1BsdWdpbkxheWVySW1w
bD4gY3JlYXRlKGludCBpZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NQ
bHVnaW5MYXllckltcGwoaWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1BsdWdp
bkxheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1BsdWdpbkxheWVySW1wbCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDQzN2E5MWNjMDM4OTA5ZjkyNTUw
MzZiMDRlMWUxNGQxNmQ5MWNiYzEuLjMxNWM5ZGRjMTkwNGQxYTgwMTgwMzhkZmIzZTllNmI5ODAw
Mjg2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9
CiAKICAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkgeyBtX2xheWVyTGlzdC5jbGVhcigpOyB9Ci0g
ICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0KCkgeyByZXR1cm4gbV9s
YXllckxpc3Q7IH0KKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0KCkgeyByZXR1
cm4gbV9sYXllckxpc3Q7IH0KIAogICAgIHZvaWQgc2V0TWFza0xheWVyKENDTGF5ZXJJbXBsKiBt
YXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IH0KIApAQCAtMTMwLDcgKzEzMCw3
IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07
CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0
OwotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gbV9sYXllckxpc3Q7CisgICAgVmVj
dG9yPENDTGF5ZXJJbXBsKj4gbV9sYXllckxpc3Q7CiAKICAgICBPd25QdHI8Q0NEYW1hZ2VUcmFj
a2VyPiBtX2RhbWFnZVRyYWNrZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgKaW5kZXggYzdlZGMxOGIyYzI4NGMyMjhhOTIxNTdhNmE5N2MxOTM0NWI4ZmI3Zi4uMmU3
NDQxNjY2Zjk5ZjM2OTgxOTI1NGEwYzQ1NzBjN2Q2NmQ2YmNjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOwogCiBjbGFzcyBDQ1NvbGlkQ29sb3JMYXllckltcGwgOiBwdWJsaWMgQ0NM
YXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDU29saWRDb2xvckxh
eWVySW1wbD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NvbGlkQ29s
b3JMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENDU29saWRDb2xvckxheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDU29saWRDb2xvckxheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5D
Q1NvbGlkQ29sb3JMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmlu
ZGV4IDdhZDcxNTk5YjIxMzY1ODU4YTFjNWE1ZjdhOWNmNDI0MWVhMDY4YjAuLjdlNjM3Y2ZmYjRj
YzdiZjdiZGFhZjlkNjA5YmQyYTM1NjE0OWZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgRHJhd2FibGVUaWxlOwogCiBjbGFzcyBDQ1Rp
bGVkTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENDVGlsZWRMYXllckltcGwoaWQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1
YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmlu
ZGV4IDE4MmY3YjU4MjdjOTFjYmZmZWU1ZDNiYWVhZDEwODUxZjZmZmJhOTUuLmZjMWIwZDA4ZjNl
ODlhNWUyZjAxYzRkZTI2YTMyMDVmOTU2OTkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmgKQEAgLTQwLDkgKzQwLDkgQEAgdGVtcGxhdGU8Y2xhc3MgVmVydGV4U2hhZGVyLCBjbGFz
cyBGcmFnbWVudFNoYWRlcj4gY2xhc3MgUHJvZ3JhbUJpbmRpbmc7CiBjbGFzcyBDQ1ZpZGVvTGF5
ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICwgcHVi
bGljIFZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDQ1ZpZGVvTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkLCBWaWRlb0ZyYW1lUHJvdmlk
ZXIqIHByb3ZpZGVyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVmlkZW9MYXllckltcGw+IGNy
ZWF0ZShpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENDVmlkZW9MYXllckltcGwoaWQsIHByb3ZpZGVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbChpZCwgcHJvdmlkZXIp
KTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcAppbmRl
eCBhOWY3YjFjMWExZTg5ZjFkYmNmOWY1MDMzNGMwNWYzYTEzM2UwMzhhLi40NzI0Y2EwYWY5NGYw
MzY0NWQwMGUzYzY2MjE4ZjkzMzNmYjZjMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKQEAgLTM5LDExICszOSwxMSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIG5hbWVzcGFjZSB7CiAKLXZvaWQgZXhl
Y3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogcm9v
dCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkK
K3ZvaWQgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVy
SW1wbCogcm9vdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
CiB7CiAgICAgQ0NMYXllclNvcnRlciBsYXllclNvcnRlcjsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IGR1
bW15TGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0Owog
ICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCiAgICAgLy8gU2FuaXR5IGNoZWNr
OiBUaGUgdGVzdCBpdHNlbGYgc2hvdWxkIGNyZWF0ZSB0aGUgcm9vdCBsYXllcidzIHJlbmRlciBz
dXJmYWNlLCBzbwpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUo
Q0NMYXllckltcGwqIHJvb3QpCiAgICAgLy8gICAyLiB1cGRhdGluZyBhbGwgZGFtYWdlIHRyYWNr
ZXJzIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgICAgLy8gICAzLiByZXNldHRpbmcgYWxsIHVwZGF0
ZVJlY3RzIGFuZCBwcm9wZXJ0eUNoYW5nZWQgZmxhZ3MgZm9yIGFsbCBsYXllcnMgYW5kIHN1cmZh
Y2VzLgogCi0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAogICAgIC8vIEl0ZXJhdGUgYmFjay10by1mcm9udCwg
c28gdGhhdCBkYW1hZ2UgY29ycmVjdGx5IHByb3BhZ2F0ZXMgZnJvbSBkZXNjZW5kYW50IHN1cmZh
Y2VzIHRvIGFuY2VzdG9ycy4KQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIGVtdWxhdGVEcmF3aW5n
T25lRnJhbWUoQ0NMYXllckltcGwqIHJvb3QpCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFj
a2luZ0ZvclN1YnRyZWUoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVz
dFRyZWVXaXRoT25lU3VyZmFjZSgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMik7CiAKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
Ojp6ZXJvKCkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7
CkBAIC05MiwyMiArOTIsMjIgQEAgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRy
ZWVXaXRoT25lU3VyZmFjZSgpCiAgICAgY2hpbGQtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6
Onplcm8oKSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDMwLCAzMCkpOwogICAgIGNo
aWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwor
ICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gcm9vdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCkKIHsKICAgICAvLyBUaGlzIHRlc3QgdHJlZSBoYXMgdHdvIHJlbmRlciBz
dXJmYWNlczogb25lIGZvciB0aGUgcm9vdCwgYW5kIG9uZSBmb3IKICAgICAvLyBjaGlsZDEuIEFk
ZGl0aW9uYWxseSwgdGhlIHJvb3QgaGFzIGEgc2Vjb25kIGNoaWxkIGxheWVyLCBhbmQgY2hpbGQx
IGhhcyB0d28KICAgICAvLyBjaGlsZHJlbiBvZiBpdHMgb3duLgogCi0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGNoaWxkMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQyID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSg1KTsKIAogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAg
ICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKQEAgLTEzNywxNyAr
MTM3LDE3IEBAIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aFR3b1N1
cmZhY2VzKCkKICAgICBncmFuZENoaWxkMi0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwogICAg
IGdyYW5kQ2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKLSAgICBjaGlsZDEtPmFkZENo
aWxkKGdyYW5kQ2hpbGQxKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQyKTsKLSAg
ICByb290LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMik7Cisg
ICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMS5yZWxlYXNlKCkpOworICAgIGNoaWxkMS0+
YWRkQ2hpbGQoZ3JhbmRDaGlsZDIucmVsZWFzZSgpKTsKKyAgICByb290LT5hZGRDaGlsZChjaGls
ZDEucmVsZWFzZSgpKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZDIucmVsZWFzZSgpKTsKIAog
ICAgIHJldHVybiByb290LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKK1Bhc3NPd25QdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiB7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZh
Y2UoKTsKIAogICAgIC8vIFNldHVwIGluY2x1ZGVzIGdvaW5nIHBhc3QgdGhlIGZpcnN0IGZyYW1l
IHdoaWNoIGFsd2F5cyBkYW1hZ2VzIGV2ZXJ5dGhpbmcsIHNvCiAgICAgLy8gdGhhdCB3ZSBjYW4g
YWN0dWFsbHkgcGVyZm9ybSBzcGVjaWZpYyB0ZXN0cy4KQEAgLTE1Niw5ICsxNTYsOSBAQCBQYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2Uo
KQogICAgIHJldHVybiByb290LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCitQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCkKIHsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNl
cygpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0aFR3
b1N1cmZhY2VzKCk7CiAKICAgICAvLyBTZXR1cCBpbmNsdWRlcyBnb2luZyBwYXN0IHRoZSBmaXJz
dCBmcmFtZSB3aGljaCBhbHdheXMgZGFtYWdlcyBldmVyeXRoaW5nLCBzbwogICAgIC8vIHRoYXQg
d2UgY2FuIGFjdHVhbGx5IHBlcmZvcm0gc3BlY2lmaWMgdGVzdHMuCkBAIC0xNzgsNyArMTc4LDcg
QEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHNhbml0eUNoZWNrVGVzdFRyZWVXaXRoT25l
U3VyZmFjZSkKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgc2ltcGxlIHRlc3QgdHJlZSB3
aWxsIGFjdHVhbGx5IHByb2R1Y2UgdGhlIGV4cGVjdGVkIHJlbmRlcgogICAgIC8vIHN1cmZhY2Vz
IGFuZCBsYXllciBsaXN0cy4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwogCiAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMiksIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+
bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMSwgcm9vdC0+cmVuZGVyU3VyZmFj
ZSgpLT5sYXllckxpc3QoKVswXS0+aWQoKSk7CkBAIC0xOTMsMTAgKzE5MywxMCBAQCBURVNUX0Yo
Q0NEYW1hZ2VUcmFja2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJlZVdpdGhUd29TdXJmYWNlcykK
ICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgY29tcGxleCB0ZXN0IHRyZWUgd2lsbCBhY3R1
YWxseSBwcm9kdWNlIHRoZSBleHBlY3RlZCByZW5kZXIKICAgICAvLyBzdXJmYWNlcyBhbmQgbGF5
ZXIgbGlzdHMuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRV
cFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwogCi0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCog
Y2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGRE
YW1hZ2VSZWN0ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3Vy
cmVudERhbWFnZVJlY3QoKTsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3QgPSByb290LT5y
ZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKIApA
QCAtMjEyLDggKzIxMiw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCBzYW5pdHlDaGVj
a1Rlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7
CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAog
ICAgIC8vIENBU0UgMTogU2V0dGluZyB0aGUgdXBkYXRlIHJlY3Qgc2hvdWxkIGNhdXNlIHRoZSBj
b3JyZXNwb25kaW5nIGRhbWFnZSB0byB0aGUgc3VyZmFjZS4KICAgICAvLwpAQCAtMjQzLDggKzI0
Myw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JVcGRhdGVS
ZWN0cykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclByb3Bl
cnR5Q2hhbmdlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNo
aWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCiAgICAgLy8gQ0FTRSAxOiBU
aGUgbGF5ZXIncyBwcm9wZXJ0eSBjaGFuZ2VkIGZsYWcgdGFrZXMgcHJpb3JpdHkgb3ZlciB1cGRh
dGUgcmVjdC4KICAgICAvLwpAQCAtMjg0LDggKzI4NCw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNr
ZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JUcmFuc2Zvcm1lZExheWVyKQogICAgIC8vIElmIGEgbGF5
ZXIgaXMgdHJhbnNmb3JtZWQsIHRoZSBkYW1hZ2UgcmVjdCBzaG91bGQgc3RpbGwgZW5jbG9zZSB0
aGUgZW50aXJlCiAgICAgLy8gdHJhbnNmb3JtZWQgbGF5ZXIuCiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdl
dCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm90YXRpb247CiAgICAgcm90YXRpb24u
cm90YXRlKDQ1KTsKQEAgLTMxNywxMCArMzE3LDExIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JUcmFuc2Zvcm1lZExheWVyKQogCiBURVNUX0YoQ0NEYW1hZ2VU
cmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdMYXllcikKIHsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxk
cmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBU
ZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3Qt
PmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxk
MiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IG9w
Q2hpbGQyLmdldCgpOwogICAgIGNoaWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0MDAsIDM4
MCkpOwogICAgIGNoaWxkMi0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBjaGlsZDItPnNldEJvdW5kcyhJbnRTaXplKDYsIDgpKTsKQEAgLTMyOCw3ICszMjksNyBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3Zp
bmdMYXllcikKIAogICAgIC8vIENBU0UgMTogQWRkaW5nIGEgbmV3IGxheWVyIHNob3VsZCBjYXVz
ZSB0aGUgYXBwcm9wcmlhdGUgZGFtYWdlLgogICAgIC8vCi0gICAgcm9vdC0+YWRkQ2hpbGQoY2hp
bGQyKTsKKyAgICByb290LT5hZGRDaGlsZChvcENoaWxkMi5yZWxlYXNlKCkpOwogICAgIGVtdWxh
dGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgLSBh
bGwgMyBsYXllcnMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIHJlbmRlciBzdXJmYWNlOyByZW5kZXIg
c3VyZmFjZXMgYXJlIHRlc3RlZCBlbHNld2hlcmUuCkBAIC0zNTMsMTUgKzM1NCwxNiBAQCBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdM
YXllcikKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck11bHRp
cGxlTGF5ZXJzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hp
bGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IG9wQ2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBDQ0xheWVy
SW1wbCogY2hpbGQyID0gb3BDaGlsZDIuZ2V0KCk7CiAgICAgY2hpbGQyLT5zZXRQb3NpdGlvbihG
bG9hdFBvaW50KDQwMCwgMzgwKSk7CiAgICAgY2hpbGQyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogICAgIGNoaWxkMi0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwogICAg
IGNoaWxkMi0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxk
Mik7CisgICAgcm9vdC0+YWRkQ2hpbGQob3BDaGlsZDIucmVsZWFzZSgpKTsKIAogICAgIC8vIElu
IHRoaXMgdGVzdCB3ZSBkb24ndCB3YW50IHRoZSBhYm92ZSB0cmVlIG1hbmlwdWxhdGlvbiB0byBi
ZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgZnJhbWUuCiAgICAgZW11bGF0ZURyYXdpbmdP
bmVGcmFtZShyb290LmdldCgpKTsKQEAgLTM3OCwxMCArMzgwLDEwIEBAIFRFU1RfRihDQ0RhbWFn
ZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxheWVycykKIAogVEVTVF9GKEND
RGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck5lc3RlZFN1cmZhY2VzKQogewotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxk
cmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDIgPSByb290LT5jaGlsZHJl
bigpWzFdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGls
ZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCog
Y2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3Jh
bmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAg
IEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0
OwogCkBAIC00MTUsOSArNDE3LDkgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlm
eURhbWFnZUZvclN1cmZhY2VDaGFuZ2VGcm9tRGVzY2VuZGFudExheWVyKQogICAgIC8vIFRoaXMg
aXMgYSB0cmlja3kgY2FzZSwgc2luY2Ugb25seSB0aGUgZmlyc3QgZ3JhbmRDaGlsZCBjaGFuZ2Vz
LCBidXQgdGhlIGVudGlyZQogICAgIC8vIHN1cmZhY2Ugc2hvdWxkIGJlIG1hcmtlZCBkaXJ0eS4K
IAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVX
aXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3Qt
PmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IHJv
b3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIEND
TGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5
ZXJJbXBsKiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0u
Z2V0KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9v
dERhbWFnZVJlY3Q7CiAKQEAgLTQ0Nyw5ICs0NDksOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2Vy
VGVzdCwgdmVyaWZ5RGFtYWdlRm9yU3VyZmFjZUNoYW5nZUZyb21BbmNlc3RvckxheWVyKQogICAg
IC8vICAgICAgICBzaG91bGQgYmUgY29tcGxldGVseSB1bmNoYW5nZWQsIHNpbmNlIHdlIGFyZSBv
bmx5IHRyYW5zZm9ybWluZyBpdCwgd2hpbGUgdGhlCiAgICAgLy8gICAgICAgIHJvb3Qgc3VyZmFj
ZSB3b3VsZCBiZSBkYW1hZ2VkIGFwcHJvcHJpYXRlbHkuCiAKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGls
ZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVw
VGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9v
dC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0Owog
ICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNDY5LDggKzQ3MCw4IEBAIFRFU1Rf
RihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JTdXJmYWNlQ2hhbmdlRnJvbUFu
Y2VzdG9yTGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VG
b3JBZGRpbmdBbmRSZW1vdmluZ1JlbmRlclN1cmZhY2VzKQogewotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29T
dXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBd
LmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJv
b3REYW1hZ2VSZWN0OwogCkBAIC01MTAsOCArNTExLDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tl
clRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5nUmVuZGVyU3VyZmFjZXMpCiAK
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZVdoZW5Ob3RoaW5nQ2hh
bmdlZCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRl
c3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEg
PSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCog
Y2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGRE
YW1hZ2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNTM0LDggKzUz
NSw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZVdoZW5Ob3Ro
aW5nQ2hhbmdlZCkKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeU5vRGFtYWdl
Rm9yVXBkYXRlUmVjdFRoYXREb2VzTm90RHJhd0NvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3
b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClb
MF0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qg
cm9vdERhbWFnZVJlY3Q7CiAKQEAgLTU1MSwxMCArNTUyLDEwIEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZUZvclVwZGF0ZVJlY3RUaGF0RG9lc05vdERyYXdDb250
ZW50KQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGlj
YSkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RU
cmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEg
PSBjaGlsZDEtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENo
aWxkMiA9IGNoaWxkMS0+Y2hpbGRyZW4oKVsxXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXll
ckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CisgICAgQ0NMYXllcklt
cGwqIGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5
ZXJJbXBsKiBncmFuZENoaWxkMiA9IGNoaWxkMS0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKIAogICAg
IC8vIERhbWFnZSBvbiBhIHN1cmZhY2UgdGhhdCBoYXMgYSByZWZsZWN0aW9uIHNob3VsZCBjYXVz
ZSB0aGUgdGFyZ2V0IHN1cmZhY2UgdG8KICAgICAvLyByZWNlaXZlIHRoZSBzdXJmYWNlJ3MgZGFt
YWdlIGFuZCB0aGUgc3VyZmFjZSdzIHJlZmxlY3RlZCBkYW1hZ2UuCkBAIC01NjMsMjQgKzU2NCwy
NiBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkK
ICAgICAvLyBvZiBjaGlsZDEncyBzdXJmYWNlLiBUaGlzIHdheSwgd2UgY2FuIHRlc3QgcmVmbGVj
dGlvbiBjaGFuZ2VzIHdpdGhvdXQgY2hhbmdpbmcKICAgICAvLyBjb250ZW50Qm91bmRzIG9mIHRo
ZSBzdXJmYWNlLgogICAgIGdyYW5kQ2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDE4MCwg
MTgwKSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMyA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoNik7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hpbGQzID0gQ0NM
YXllckltcGw6OmNyZWF0ZSg2KTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDMgPSBvcEdy
YW5kQ2hpbGQzLmdldCgpOwogICAgIGdyYW5kQ2hpbGQzLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KDI0MCwgMjQwKSk7CiAgICAgZ3JhbmRDaGlsZDMtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6
Onplcm8oKSk7CiAgICAgZ3JhbmRDaGlsZDMtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwog
ICAgIGdyYW5kQ2hpbGQzLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgY2hpbGQxLT5zZXRP
cGFjaXR5KDAuNSk7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMyk7CisgICAgY2hp
bGQxLT5hZGRDaGlsZChvcEdyYW5kQ2hpbGQzLnJlbGVhc2UoKSk7CiAgICAgZW11bGF0ZURyYXdp
bmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIENBU0UgMTogYWRkaW5nIGEgcmVmbGVj
dGlvbiBhYm91dCB0aGUgbGVmdCBlZGdlIG9mIGdyYW5kQ2hpbGQxLgogICAgIC8vCi0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDcpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BHcmFuZENoaWxkMVJlcGxpY2EgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDcpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMVJlcGxpY2Eg
PSBvcEdyYW5kQ2hpbGQxUmVwbGljYS5nZXQoKTsKICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHJlZmxlY3Rpb247CiAgICAgcmVmbGVjdGlvbi5zY2FsZTNkKC0xLjAsIDEuMCwgMS4wKTsK
ICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKLSAgICBn
cmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKGdyYW5kQ2hpbGQxUmVwbGljYSk7CisgICAgZ3Jh
bmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihvcEdyYW5kQ2hpbGQxUmVwbGljYS5yZWxlYXNlKCkp
OwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICBGbG9hdFJl
Y3QgZ3JhbmRDaGlsZERhbWFnZVJlY3QgPSBncmFuZENoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5k
YW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBAIC02MTQsNyArNjE3LDcgQEAg
VEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2EpCiAKICAg
ICAvLyBDQVNFIDM6IHJlbW92aW5nIHRoZSByZWZsZWN0aW9uIHNob3VsZCBjYXVzZSB0aGUgZW50
aXJlIHJlZ2lvbiBpbmNsdWRpbmcgcmVmbGVjdGlvbgogICAgIC8vICAgICAgICAgdG8gZGFtYWdl
IHRoZSB0YXJnZXQgc3VyZmFjZS4KLSAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKDAp
OworICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIobnVsbHB0cik7CiAgICAgZW11bGF0
ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKICAgICBBU1NFUlRfRVEob2xkQ29udGVudFJl
Y3Qud2lkdGgoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkud2lkdGgo
KSk7CiAgICAgQVNTRVJUX0VRKG9sZENvbnRlbnRSZWN0LmhlaWdodCgpLCBjaGlsZDEtPnJlbmRl
clN1cmZhY2UoKS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSk7CkBAIC02MjksMjcgKzYzMiwyOSBA
QCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKIAog
VEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck1hc2spCiB7Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVT
dXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVu
KClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hp
bGRyZW4oKVswXS5nZXQoKTsKIAogICAgIC8vIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IG9mIHRoZSBkYW1hZ2UgdHJhY2tlciwgY2hhbmdlcyB0byBtYXNrIGxheWVycyBzaG91bGQKICAg
ICAvLyBkYW1hZ2UgdGhlIGVudGlyZSBjb3JyZXNwb25kaW5nIHN1cmZhY2UuCiAKICAgICAvLyBT
ZXQgdXAgdGhlIG1hc2sgbGF5ZXIuCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BNYXNr
TGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5ZXJJbXBsKiBtYXNrTGF5
ZXIgPSBvcE1hc2tMYXllci5nZXQoKTsKICAgICBtYXNrTGF5ZXItPnNldFBvc2l0aW9uKGNoaWxk
LT5wb3NpdGlvbigpKTsKICAgICBtYXNrTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6
Onplcm8oKSk7CiAgICAgbWFza0xheWVyLT5zZXRCb3VuZHMoY2hpbGQtPmJvdW5kcygpKTsKLSAg
ICBjaGlsZC0+c2V0TWFza0xheWVyKG1hc2tMYXllcik7CisgICAgY2hpbGQtPnNldE1hc2tMYXll
cihvcE1hc2tMYXllci5yZWxlYXNlKCkpOwogCiAgICAgLy8gQWRkIG9wYWNpdHkgYW5kIGEgZ3Jh
bmRDaGlsZCBzbyB0aGF0IHRoZSByZW5kZXIgc3VyZmFjZSBwZXJzaXN0cyBldmVuIGFmdGVyIHdl
IHJlbW92ZSB0aGUgbWFzay4KICAgICBjaGlsZC0+c2V0T3BhY2l0eSgwLjUpOwotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQp
OworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkID0gb3BHcmFuZENoaWxkLmdldCgpOwogICAg
IGdyYW5kQ2hpbGQtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMi4wLCAyLjApKTsKICAgICBncmFu
ZENoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hp
bGQtPnNldEJvdW5kcyhJbnRTaXplKDIsIDIpKTsKICAgICBncmFuZENoaWxkLT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOworICAgIGNoaWxk
LT5hZGRDaGlsZChvcEdyYW5kQ2hpbGQucmVsZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09u
ZUZyYW1lKHJvb3QuZ2V0KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgYSBuZXcgc3Vy
ZmFjZSB3YXMgY3JlYXRlZCBmb3IgdGhlIGNoaWxkLgpAQCAtNjg1LDcgKzY5MCw3IEBAIFRFU1Rf
RihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogICAgIEVYUEVDVF9U
UlVFKGNoaWxkRGFtYWdlUmVjdC5pc0VtcHR5KCkpOwogCiAgICAgLy8gVGhlbiB0ZXN0IG1hc2sg
cmVtb3ZhbC4KLSAgICBjaGlsZC0+c2V0TWFza0xheWVyKDApOworICAgIGNoaWxkLT5zZXRNYXNr
TGF5ZXIobnVsbHB0cik7CiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPmxheWVyUHJvcGVydHlDaGFu
Z2VkKCkpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKQEAgLTY5
OCwyOCArNzAzLDMwIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VG
b3JNYXNrKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVw
bGljYU1hc2spCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hp
bGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5k
Q2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xh
eWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVy
SW1wbCogZ3JhbmRDaGlsZDEgPSBjaGlsZDEtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAv
LyBDaGFuZ2VzIHRvIGEgcmVwbGljYSdzIG1hc2sgc2hvdWxkIG5vdCBkYW1hZ2UgdGhlIG9yaWdp
bmFsIHN1cmZhY2UsIGJlY2F1c2UgaXQgaXMKICAgICAvLyBub3QgbWFza2VkLiBCdXQgaXQgZG9l
cyBkYW1hZ2UgdGhlIGFuY2VzdG9yIHRhcmdldCBzdXJmYWNlLgogCiAgICAgLy8gQ3JlYXRlIGEg
cmVmbGVjdGlvbiBhYm91dCB0aGUgbGVmdCBlZGdlIG9mIGdyYW5kQ2hpbGQxLgotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wR3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSg2KTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDFSZXBsaWNhID0g
b3BHcmFuZENoaWxkMVJlcGxpY2EuZ2V0KCk7CiAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZWZsZWN0aW9uOwogICAgIHJlZmxlY3Rpb24uc2NhbGUzZCgtMS4wLCAxLjAsIDEuMCk7CiAg
ICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRUcmFuc2Zvcm0ocmVmbGVjdGlvbik7Ci0gICAgZ3Jh
bmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihncmFuZENoaWxkMVJlcGxpY2EpOworICAgIGdyYW5k
Q2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIob3BHcmFuZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsK
IAogICAgIC8vIFNldCB1cCB0aGUgbWFzayBsYXllciBvbiB0aGUgcmVwbGljYSBsYXllcgotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYU1hc2tMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoNyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcFJlcGxpY2FNYXNrTGF5ZXIgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDcpOworICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTWFza0xheWVyID0g
b3BSZXBsaWNhTWFza0xheWVyLmdldCgpOwogICAgIHJlcGxpY2FNYXNrTGF5ZXItPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICByZXBsaWNhTWFza0xheWVyLT5zZXRCb3Vu
ZHMoZ3JhbmRDaGlsZDEtPmJvdW5kcygpKTsKLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldE1h
c2tMYXllcihyZXBsaWNhTWFza0xheWVyKTsKKyAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldE1h
c2tMYXllcihvcFJlcGxpY2FNYXNrTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIGVtdWxhdGVEcmF3
aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKQEAgLTczOCw3ICs3NDUsNyBAQCBURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1hc2spCiAKICAgICAvLyBD
QVNFIDI6IHJlbW92aW5nIHRoZSByZXBsaWNhIG1hc2sgZGFtYWdlcyBvbmx5IHRoZSByZWZsZWN0
ZWQgcmVnaW9uIG9uIHRoZSB0YXJnZXQgc3VyZmFjZS4KICAgICAvLwotICAgIGdyYW5kQ2hpbGQx
UmVwbGljYS0+c2V0TWFza0xheWVyKDApOworICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0TWFz
a0xheWVyKG51bGxwdHIpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7
CiAKICAgICBncmFuZENoaWxkRGFtYWdlUmVjdCA9IGdyYW5kQ2hpbGQxLT5yZW5kZXJTdXJmYWNl
KCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKQEAgLTc1MCw4ICs3NTcs
OCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1h
c2spCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VXaGVuUmVzZXQp
CiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJl
ZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3Qt
PmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5k
U2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0g
cm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIC8vIENhc2UgMTogVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCB3aGVuIHRoZSB0cmFja2VyIGlzIGZvcmNlZCB0byBoYXZlIGZ1bGwgZGFtYWdl
LCB0aGF0CiAgICAgLy8gICAgICAgICBpdCB0YWtlcyBwcmlvcml0eSBvdmVyIGFueSBvdGhlciBw
YXJ0aWFsIGRhbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
ckltcGxUZXN0LmNwcAppbmRleCAyNzcyOGNiZWYwZTNiMzE4NzkzZDBkZGMxMGZjMzdhZDYwZjE3
ZDdkLi4wZGNiZTJhN2ViNDdlNmFkYjg1YzA2MWRiZjU1NDA2Y2Y4N2E3ZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC02NSwx
NCArNjUsMTMgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRy
YWNrZWRQcm9wZXJseSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVh
ZDsKIAogICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBDQ0xheWVySW1wbCB0cmVlOgotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBncmFuZENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKLSAgICBy
b290LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOwot
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDQpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlSZXBsaWNhID0gQ0NMYXllckltcGw6
OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6
Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BDaGlsZCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMik7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gb3BDaGlsZC5nZXQoKTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IG9wR3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
Myk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQgPSBvcEdyYW5kQ2hpbGQuZ2V0KCk7Cisg
ICAgcm9vdC0+YWRkQ2hpbGQob3BDaGlsZC5yZWxlYXNlKCkpOworICAgIGNoaWxkLT5hZGRDaGls
ZChvcEdyYW5kQ2hpbGQucmVsZWFzZSgpKTsKIAogICAgIC8vIEFkZGluZyBjaGlsZHJlbiBpcyBh
biBpbnRlcm5hbCBvcGVyYXRpb24gYW5kIHNob3VsZCBub3QgbWFyayBsYXllcnMgYXMgY2hhbmdl
ZC4KICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CkBAIC05
MiwxMSArOTEsMTEgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0Fy
ZVRyYWNrZWRQcm9wZXJseSkKICAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIGFmZmVj
dHMgdGhlIGVudGlyZSBzdWJ0cmVlIG9mIGxheWVycy4KICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hv
clBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9DSEFOR0VEKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tMYXllcihDQ0xheWVySW1wbDo6
Y3JlYXRlKDQpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290
LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9DSEFOR0VEKHJvb3QtPnNldE9wYXF1ZSh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFjaXR5KGFyYml0cmFyeU51bWJlcikpOwotICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UmVwbGljYUxheWVy
KGR1bW15UmVwbGljYSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQo
cm9vdC0+c2V0UmVwbGljYUxheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoNSkpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFBvc2l0aW9uKGFyYml0cmFy
eUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJv
b3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKQEAgLTEz
MSw5ICsxMzAsNyBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJl
VHJhY2tlZFByb3Blcmx5KQogICAgIC8vIG5vdCBjYXVzZSBhbnkgY2hhbmdlLgogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldEFuY2hvclBvaW50
KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9E
SURfTk9UX0NIQU5HRShyb290LT5zZXRBbmNob3JQb2ludFooYXJiaXRyYXJ5TnVtYmVyKSk7Ci0g
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0TWFz
a0xheWVyKGR1bW15TWFzaykpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOwotICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1t
eVJlcGxpY2EpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRQb3NpdGlvbihhcmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UHJlc2VydmVzM0QodHJ1
ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3Qt
PnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3QuY3BwCmluZGV4IGJmZjdlMWJh
OTcxMTQ1NjhjYWJlMzk2Y2ZhZTc3NDZmMDczNDA5OGUuLjJmNWE3YTI1ZDllZDE2ZjJjYzQxOTgx
Y2JjNGEyZTY1NjUyODcxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcApAQCAtNjcsOCArNjcsOCBAQCBwcml2YXRlOgog
ICAgIEVYUEVDVF9FUShjb250cmliLCBsYXllci0+bV9jb3VudFJlcHJlc2VudGluZ0NvbnRyaWJ1
dGluZ1N1cmZhY2UpOyAgIFwKICAgICBFWFBFQ1RfRVEoaXRzZWxmLCBsYXllci0+bV9jb3VudFJl
cHJlc2VudGluZ0l0c2VsZik7CiAKLXR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21p
dW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRU
b0JhY2s+IEZyb250VG9CYWNrOwotdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udD4gQmFja1RvRnJvbnQ7Cit0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVt
LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IEZyb250VG9CYWNrOwordHlwZWRl
ZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJh
Y2tUb0Zyb250PiBCYWNrVG9Gcm9udDsKIAogdm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CkBAIC0xMzcsNyAr
MTM3LDcgQEAgVEVTVChDQ0xheWVySXRlcmF0b3JUZXN0LCBzaW1wbGVUcmVlKQogCiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKHJvb3RMYXllci5nZXQoKSk7CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLmdldCgpLCByb290
TGF5ZXIuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCkBA
IC0xODQsNyArMTg0LDcgQEAgVEVTVChDQ0xheWVySXRlcmF0b3JUZXN0LCBjb21wbGV4VHJlZSkK
IAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBsYXllckxpc3Q7Ci0gICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5n
ZXQoKSwgcm9vdExheWVyLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5
ZXJMaXN0LApAQCAtMjQzLDcgKzI0Myw3IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29t
cGxleFRyZWVNdWx0aVN1cmZhY2UpCiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RM
YXllcik7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyLmdldCgp
KTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShyb290TGF5ZXIuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKaW5kZXggNjkzNDJjZGE3YzYzYjYxNTQ1
MDc0NWVhYmQ4YjFkMWNkYmVmY2U1ZS4uYTUzM2M5MzczODhlZWE1NmI3YTRhMWJjNjFjMWYyODIx
YWJmZWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
U29ydGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
U29ydGVyVGVzdC5jcHAKQEAgLTE3NCwxMSArMTc0LDExIEBAIFRFU1QoQ0NMYXllclNvcnRlclRl
c3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQcmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICAvLyAg
ICAtIDMgYW5kIDQgZG8gbm90IGhhdmUgYSAzZCB6IGRpZmZlcmVuY2UsIGFuZCB0aGVyZWZvcmUg
dGhlaXIgcmVsYXRpdmUgb3JkZXJpbmcgc2hvdWxkIGJlIHJldGFpbmVkLgogICAgIC8vICAgIC0g
MyBhbmQgNCBzaG91bGQgYmUgcmUtc29ydGVkIHNvIHRoZXkgYXJlIGluIGZyb250IG9mIDEsIDIs
IGFuZCA1LgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcjEgPSBDQ0xheWVySW1wbDo6
Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXIyID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyMyA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMyk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcjQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDQpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXI1ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyMSA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjIgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDIpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXIzID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSgzKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyNCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjUgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDUpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggQmVoaW5kTWF0
cml4OwogICAgIEJlaGluZE1hdHJpeC50cmFuc2xhdGUzZCgwLCAwLCAyKTsKQEAgLTIwNSwxMiAr
MjA1LDEyIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQ
cmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBsYXllcjUtPnNldERyYXdUcmFuc2Zvcm0oQmVoaW5k
TWF0cml4KTsKICAgICBsYXllcjUtPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8Q0NMYXllckltcGw+ID4gbGF5ZXJMaXN0OwotICAgIGxheWVyTGlzdC5hcHBlbmQo
bGF5ZXIxKTsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMik7Ci0gICAgbGF5ZXJMaXN0LmFw
cGVuZChsYXllcjMpOwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXI0KTsKLSAgICBsYXllckxp
c3QuYXBwZW5kKGxheWVyNSk7CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbGF5ZXJMaXN0Owor
ICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIxLmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5k
KGxheWVyMi5nZXQoKSk7CisgICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjMuZ2V0KCkpOworICAg
IGxheWVyTGlzdC5hcHBlbmQobGF5ZXI0LmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxh
eWVyNS5nZXQoKSk7CiAKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig1KSwgbGF5
ZXJMaXN0LnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyTGlzdFswXS0+aWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RDb21tb25UZXN0LmNwcAppbmRleCBiMWZhNzI5MTg0MDFlMzI0MGU0MWQxM2QyZTBjMjdkMGM1
NmFkN2M1Li4zMTJmYTkxM2M4ZGQ1NGQzN2VmODAwMGVhMGE3NDJjNWE2Yzk5ZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3VsbHNSZW5kZXJTdXJmYWNlcykKIAogICAgIC8vIEZJ
WE1FOiB3aGVuIHdlIGZpeCB0aGlzICJyb290LWxheWVyIHNwZWNpYWwgY2FzZSIgYmVoYXZpb3Ig
aW4gQ0NMYXllclRyZWVIb3N0LCB3ZSB3aWxsIGhhdmUgdG8gZml4IGl0IGhlcmUsIHRvby4KICAg
ICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Cisg
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKIApAQCAtNjI0LDcgKzYyNCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gRklYTUU6IHdoZW4g
d2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVy
VHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15
TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNjYxLDcgKzY2MSw3IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdp
b25XaXRoUm90YXRpb24pCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5
ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2
ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRD
b250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsK
ICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50
LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7
CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAg
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRl
eHR1cmVTaXplKTsKIApAQCAtNjk2LDcgKzY5Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCiAg
ICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBi
ZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwg
dG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwg
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAt
NzM3LDcgKzczNyw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRz
U2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpCiAgICAgLy8gRklYTUU6IHdo
ZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xh
eWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1
bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRl
eCBmNTk4OTNkZTkwNjQxOGY4Y2JkNzU3NDBhZTI5MzllMjNjYzIzNTBhLi44NWNjN2I5NGJkYzM3
ZGViYjdkOTkyMTc5NTM4NTMzZDE5ZGUxZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNzYsMTYg
Kzc2LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVy
cyhjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgICAgIHJvb3Qt
PnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKElu
dFBvaW50KDAsIDApKTsKICAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oY29udGVu
dFNpemUpOwotICAgICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNvbnRlbnRzID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjb250ZW50cyA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXRCb3VuZHMoY29udGVudFNpemUpOwogICAgICAg
ICBjb250ZW50cy0+c2V0Q29udGVudEJvdW5kcyhjb250ZW50U2l6ZSk7Ci0gICAgICAgIHJvb3Qt
PmFkZENoaWxkKGNvbnRlbnRzKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJv
b3QpOworICAgICAgICByb290LT5hZGRDaGlsZChjb250ZW50cy5yZWxlYXNlKCkpOworICAgICAg
ICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAgIH0KIAogcHJv
dGVjdGVkOgpAQCAtMTA1LDM3ICsxMDUsMzkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBzY3JvbGxEZWx0YU5vTGF5ZXJzKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHNjcm9sbERlbHRhVHJlZUJ1dE5vQ2hhbmdlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gb3BSb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBDQ0xheWVySW1wbCogcm9v
dCA9IG9wUm9vdC5nZXQoKTsKICAgICByb290LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRl
KDEpKTsKICAgICByb290LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDIpKTsKICAgICBy
b290LT5jaGlsZHJlbigpWzFdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDMpKTsKICAg
ICByb290LT5jaGlsZHJlbigpWzFdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDQpKTsK
ICAgICByb290LT5jaGlsZHJlbigpWzFdLT5jaGlsZHJlbigpWzBdLT5hZGRDaGlsZChDQ0xheWVy
SW1wbDo6Y3JlYXRlKDUpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7Cisg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKG9wUm9vdC5yZWxlYXNlKCkpOwogCi0gICAgZXhw
ZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBleHBlY3RD
bGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogCiAgICAgT3duUHRyPENDU2Nyb2xs
QW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKICAgICBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+
cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShzY3JvbGxJbmZvLT5zY3JvbGxz
LnNpemUoKSwgMHUpOwotICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUocm9v
dC5nZXQoKSk7CisgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290KTsK
IAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAg
ICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAwdSk7Ci0gICAgZXhwZWN0
Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBleHBlY3RDbGVh
cmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogewogICAgIEludFBvaW50
IHNjcm9sbFBvc2l0aW9uKDIwLCAzMCk7CiAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgxMSwgLTE1
KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEw
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wUm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
MTApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gb3BSb290LmdldCgpOwogICAgIHJvb3QtPnNl
dFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxl
KHRydWUpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDAp
KTsKICAgICByb290LT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0
Um9vdExheWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJvb3QucmVs
ZWFzZSgpKTsKIAogICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvOwog
CkBAIC0xNTgsMTEgKzE2MCwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNj
cm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJhdykKIHsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xs
YWJsZSh0cnVlKTsKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7
CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwotICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290
TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxC
ZWdpbihJbnRQb2ludCgwLCAwKSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
KTsKICAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShJbnRTaXplKDAsIDEwKSk7CiAgICAgbV9ob3N0
SW1wbC0+c2Nyb2xsRW5kKCk7CkBAIC0zMDIsNyArMzA0LDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKQEAgLTM1MiwxNCArMzU0LDE2IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
IAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7
CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcFJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDAp
OworICAgIENDTGF5ZXJJbXBsKiByb290ID0gb3BSb290LmdldCgpOwogICAgIHJvb3QtPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXpl
KDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihv
cFJvb3QucmVsZWFzZSgpKTsKIAotICAgIFJlZlB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gbGF5
ZXIxID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKTsKLSAgICByb290LT5hZGRDaGls
ZChsYXllcjEpOworICAgIE93blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gb3BMYXllcjEgPSBC
bGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVy
KiBsYXllcjEgPSBvcExheWVyMS5nZXQoKTsKKyAgICByb290LT5hZGRDaGlsZChvcExheWVyMS5y
ZWxlYXNlKCkpOwogCiAgICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5n
LgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtMzk4LDggKzQwMiw5IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxh
eWVycykKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVy
PiBsYXllcjIgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpOwotICAgIGxheWVyMS0+
YWRkQ2hpbGQobGF5ZXIyKTsKKyAgICBPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IG9wTGF5
ZXIyID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgyKTsKKyAgICBCbGVuZFN0YXRlQ2hl
Y2tMYXllciogbGF5ZXIyID0gb3BMYXllcjIuZ2V0KCk7CisgICAgbGF5ZXIxLT5hZGRDaGlsZChv
cExheWVyMi5yZWxlYXNlKCkpOwogCiAgICAgLy8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3biB3aXRo
b3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtNTIxLDExICs1
MjYsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVk
VW50aWxEcmF3KQogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRl
eHQpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwog
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJs
ZUNDTGF5ZXJJbXBsKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFB0
cihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwogICAgIHJvb3QtPnNldEFuY2hvclBv
aW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBtX2hvc3RJbXBsLT5z
ZXRSb290TGF5ZXIocm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVs
ZWFzZSgpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQo
KSk7CiAKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC01NzEsOCArNTc2LDEwIEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFn
ZVJlY3QpCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNv
bnRleHQpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1
MDAsIDUwMCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3
IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNo
aWxkID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDIpKTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IG9wUm9vdCA9IGFkb3B0UHRyKG5ldyBGYWtlRHJhd2FibGVDQ0xheWVy
SW1wbCgxKSk7CisgICAgQ0NMYXllckltcGwqIHJvb3QgPSBvcFJvb3QuZ2V0KCk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkID0gYWRvcHRQdHIobmV3IEZha2VEcmF3YWJsZUNDTGF5
ZXJJbXBsKDIpKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSBvcENoaWxkLmdldCgpOwogICAg
IGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEyLCAxMykpOwogICAgIGNoaWxkLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNp
emUoMTQsIDE1KSk7CkBAIC01ODAsOCArNTg3LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICByb290LT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSg1
MDAsIDUwMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICByb290LT5h
ZGRDaGlsZChjaGlsZCk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihyb290
KTsKKyAgICByb290LT5hZGRDaGlsZChvcENoaWxkLnJlbGVhc2UoKSk7CisgICAgbGF5ZXJUcmVl
SG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJvb3QucmVsZWFzZSgpKTsKIAogICAgIC8vIEZpcnN0
IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBzaG91bGQgZ2V0IHN3YXBwZWQuCiAgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGMzYjM2NmRkYTMyMzc0Njg2
ODZmYmY4M2VkNGZlMzM5MGY4MmYzMzQuLjEyMDE1ODdjNzhkZjdiNTg0MDI3NzRkZjBjNjkzZjRl
ZWRkZGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5k
ZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jl
bmRlclN1cmZhY2VUZXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFj
ZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIC8vIFRo
aXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBmb3IgdGVzdGlu
ZyBwdXJwb3Nlcy4KICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsK
IAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDApOwogICAgIG93bmluZ0xheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAg
ICAgQVNTRVJUX1RSVUUob3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQ0NSZW5k
ZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gb3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsK
QEAgLTc0LDcgKzc0LDcgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlTdXJmYWNl
Q2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFD
RV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5zZXRDbGlwUmVjdCh0ZXN0UmVjdCkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZh
Y2UtPnNldENvbnRlbnRSZWN0KHRlc3RSZWN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGR1bW15TWF0cml4OwogICAgIGR1bW15TWF0cml4LnRyYW5zbGF0ZSgxLjAsIDIu
MCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29s
aWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDA1OWVmMmFkY2Y1NWVkM2JmYWE1MDc5MTRh
NDEzMzQ3ODg2ZWVjNTQuLjAyZGM5MDhhYmRhNzc0NTNhNGZhNjlkZTJiOTZkM2RiOTA3OTdmMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlk
Q29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBURVNUKENDU29saWRDb2xv
ckxheWVySW1wbFRlc3QsIHZlcmlmeVRpbGluZ0NvbXBsZXRlQW5kTm9PdmVybGFwKQogICAgIElu
dFNpemUgbGF5ZXJTaXplID0gSW50U2l6ZSg4MDAsIDYwMCk7CiAgICAgSW50UmVjdCB2aXNpYmxl
TGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogCi0gICAgUmVmUHRy
PENDU29saWRDb2xvckxheWVySW1wbD4gbGF5ZXIgPSBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29s
aWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsK
IApAQCAtNjYsNyArNjYsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlm
eUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgSW50U2l6ZSBsYXllclNpemUgPSBJ
bnRTaXplKDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAKLSAgICBSZWZQdHI8Q0NTb2xpZENvbG9yTGF5ZXJJ
bXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0
cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxheWVyID0gQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpj
cmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVj
dCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IodGVzdENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggZDU1YzBiYzE2NDRlMmE4OTA3
NGYyYjg5ZjYxZWRmMjIwZjc4NmZjMy4uZmY3ZGFhM2M5YjI3NmY1YTJkYTdhMzkzZGIxOGI1NWFk
NDU4ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVk
TGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIHsKIAogLy8g
Q3JlYXRlIGEgZGVmYXVsdCB0aWxlZCBsYXllciB3aXRoIHRleHR1cmVzIGZvciBhbGwgdGlsZXMg
YW5kIGEgZGVmYXVsdAogLy8gdmlzaWJpbGl0eSBvZiB0aGUgZW50aXJlIGxheWVyIHNpemUuCi1z
dGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0
YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxzKQorc3RhdGljIFBhc3NPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGNvbnN0
IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9u
IGJvcmRlclRleGVscykKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBD
Q1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIE93blB0cjxDQ0xheWVy
VGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKHRpbGVTaXplLCBi
b3JkZXJUZXhlbHMpOwogICAgIHRpbGVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKICAgICBsYXll
ci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwpAQCAtNjgsNyArNjgsNyBAQCBURVNUKENDVGlsZWRM
YXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gVmVyaWZ5IGRlZmF1bHQgbGF5
ZXIgZG9lcyBjcmVhdGVzIHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxlZExheWVy
SW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGls
aW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5n
RGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBDQ1F1YWRMaXN0IHF1YWRzOwogICAgICAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVh
dGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRzLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwpAQCAtNzgsNyArNzgsNyBAQCBURVNUKENDVGlsZWRMYXll
ckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBlbXB0eSB2aXNp
YmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUs
IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIEND
TGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgQ0NRdWFkTGlzdCBxdWFkczsKQEAg
LTg5LDcgKzg5LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkK
IAogICAgIC8vIExheWVyIHdpdGggbm9uLWludGVyc2VjdGluZyB2aXNpYmxlIGxheWVyIHJlY3Qg
cHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRh
OjpOb0JvcmRlclRleGVscyk7CiAKICAgICAgICAgSW50UmVjdCBvdXRzaWRlQm91bmRzKEludFBv
aW50KC0xMDAsIC0xMDApLCBJbnRTaXplKDUwLCA1MCkpOwogICAgICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChvdXRzaWRlQm91bmRzKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBURVNUKEND
VGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBz
a2lwcyBkcmF3IHByb2R1Y2VzIG5vIHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxl
ZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBsYXllci0+c2V0U2tpcHNEcmF3
KHRydWUpOwogCiAgICAgICAgIENDUXVhZExpc3QgcXVhZHM7CkBAIC0xMjEsNyArMTIxLDcgQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIGNvbnN0IGlu
dCBudW1UaWxlc1kgPSAyOwogICAgIGNvbnN0IEludFNpemUgbGF5ZXJTaXplKHRpbGVTaXplLndp
ZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXplLmhlaWdodCgpICogbnVtVGlsZXNZKTsKIAotICAg
IFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6
ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3Rh
dGUoKTsKIAogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwpAQCAtMTUwLDcgKzE1MCw3IEBAIFRF
U1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAogc3RhdGljIFBhc3NP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRT
aXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRh
OjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlz
aWJsZUxheWVyUmVjdCkKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBj
cmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxh
eWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsK
IApAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91
bmRDb3ZlcnNWaWV3cG9ydCkKICAgICBjb25zdCBpbnQgbnVtVGlsZXNZID0gMjsKICAgICBjb25z
dCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKICAgICBjb25zdCBJ
bnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6ZS5o
ZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVy
ID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVh
dGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwogICAg
IGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDRiM2RkMjdkMzFkODgyMTA0YzcwY2ZmZjUwMjRmYjgwNDQ3ZWExNDEuLmM1
ZTk4M2VlYWFlZTFjZTU0M2U5NWEzMmRhOGFlZjU3NjNhM2YyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAgICAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CiAKLSAgICAgICAg
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVy
SW1wbCgpOworICAgICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52
YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRp
Y19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkp
OwogCiAgICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENv
bnRleHQuZ2V0KCksIHVwZGF0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZmNkMzg3OGE2NmE2M2I4
Zjk2MDZiOTU0M2FmNzExMjY5MjFjNWU0YS4uN2VkNDIyZGI4MDRkNTk4NDM4OTVkZDNlOGVkYWE1
ZjM0MDgyODViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0g
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAog
ICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBh
ZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMyMyw3
ICszMjMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVt
b3J5KQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOwogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwor
ICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKQEAgLTM1OSw3ICszNTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRM
YXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBs
ID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggMTU1N2E3ZDkzMjJjYzZiZTIw
NmJmNTBiMDBjMGY0NzA2M2M1NDc4Yi4uMDIxNTFiOGU2ZTczYjY5ODMxMGY1YjExMDM4NWFjZjE4
M2E4NzYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVl
U3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIHsKIAogY2xh
c3MgTW9ja0NDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja0NDTGF5ZXJJbXBsKGxheWVy
SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrQ0NMYXllckltcGwobGF5ZXJJ
ZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Nb2NrQ0NMYXllckltcGwoKQogICAgIHsKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW9ja0xheWVyQ2hyb21pdW0oKSB7
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllcklt
cGwoKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllcklt
cGwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5
ZXJJZCk7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgZXhwZWN0VHJlZXNBcmVJZGVu
dGljYWwoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsKiBjY0xheWVyKQogICAgICAg
ICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllci0+cmVwbGljYUxheWVyKCksIGNjTGF5ZXIt
PnJlcGxpY2FMYXllcigpKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiYgbGF5ZXJDaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNjTGF5ZXJDaGlsZHJlbiA9IGNjTGF5ZXItPmNoaWxk
cmVuKCk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiYgY2NMYXllckNo
aWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4oKTsKIAogICAgIEFTU0VSVF9FUShsYXllckNoaWxk
cmVuLnNpemUoKSwgY2NMYXllckNoaWxkcmVuLnNpemUoKSk7CiAKQEAgLTEyMyw3ICsxMjMsNyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKICAg
ICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiAgICAg
bGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogCi0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVU
cmVlcyhsYXllclRyZWVSb290LmdldCgpLCBudWxscHRyKTsKIAogICAgIGV4cGVjdFRyZWVzQXJl
SWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiB9
CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXll
ckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKICAgICBsYXllclRy
ZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1
Y3Rpb25MaXN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9
IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwg
MCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hy
b25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwog
ICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJU
cmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBBZGQgYSBuZXcgbGF5ZXIgdG8gdGhlIExheWVyQ2hy
b21pdW0gc2lkZQpAQCAtMTcyLDcgKzE3Miw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3Qs
IHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGllcykKICAgICBJbnRTaXplIHNlY29uZENoaWxkQm91
bmRzID0gSW50U2l6ZSgyNSwgNTMpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0t
PnNldEJvdW5kcyhzZWNvbmRDaGlsZEJvdW5kcyk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJl
ZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3Qu
Z2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJv
b3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZXMgd2Ugc2V0IG9uIHRoZSBMYXllckNocm9taXVtIHRyZWUgYXJlIHJl
ZmxlY3RlZCBpbiB0aGUgQ0NMYXllckltcGwgdHJlZS4KQEAgLTIwOSw3ICsyMDksNyBAQCBURVNU
KFRyZWVTeW5jaHJvbml6ZXJUZXN0LCByZXVzZUNDTGF5ZXJzQWZ0ZXJTdHJ1Y3R1cmFsQ2hhbmdl
KQogICAgIGxheWVyQi0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXll
ckRlc3RydWN0aW9uTGlzdCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllckQgPSBs
YXllckItPmNoaWxkcmVuKClbMV0uZ2V0KCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNj
TGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJU
cmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJv
b3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0
KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3Qu
Z2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBOb3cgcmVzdHJ1Y3R1cmUg
dGhlIHRyZWUgdG8gbG9vayBsaWtlIHRoaXM6CkBAIC0yNDcsNyArMjQ3LDcgQEAgVEVTVChUcmVl
U3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBpbnQgb2xk
VHJlZUZpcnN0Q2hpbGRMYXllcklkID0gb2xkTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+
aWQoKTsKICAgICBpbnQgb2xkVHJlZVNlY29uZENoaWxkTGF5ZXJJZCA9IG9sZExheWVyVHJlZVJv
b3QtPmNoaWxkcmVuKClbMV0tPmlkKCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5
ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMob2xkTGF5ZXJU
cmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJv
b3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKG9sZExheWVyVHJlZVJvb3Qu
Z2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKG9sZExheWVyVHJl
ZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBSZW1vdmUgYWxs
IGNoaWxkcmVuIG9uIHRoZSBMYXllckNocm9taXVtIHNpZGUuCkBAIC0yODcsMjMgKzI4NywyMyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBsaWNhTWFz
a0xheWVycykKICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFza0xheWVyKHJlcGxpY2FN
YXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMl0tPnNldFJl
cGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBj
Y0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVy
VHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwo
bGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJl
bW92ZSB0aGUgbWFzayBsYXllci4KICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5z
ZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6
c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0
KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAg
ICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRy
ZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBsYXllci4KICAgICBs
YXllclRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5ZXIoMCk7Ci0gICAgY2NM
YXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRy
ZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9v
dCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQo
KSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGlj
YWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8v
IFJlbW92ZSB0aGUgcmVwbGljYSBtYXNrLgogICAgIHJlcGxpY2FMYXllcldpdGhNYXNrLT5zZXRN
YXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3lu
Y2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkp
OworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJl
ZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAg
ZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVS
b290LmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127271</attachid>
            <date>2012-02-15 16:31:10 -0800</date>
            <delta_ts>2012-02-24 18:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120215163109.patch</filename>
            <type>text/plain</type>
            <size>126929</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJmMzNjMjRjMjYxYjVh
MTc2YjdmODI5NmUxZjk1ZjJmMGY3NGFkNy4uMTExOGIzZTE0YTljY2UyYzA5ZTcyOGNmNGI5ZDE2
OWNhNTM2ODQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMi0wMi0xNSAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU29saWRDb2xvckxheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnJldXNlT3JDcmVhdGVDQ0xheWVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5j
aHJvbml6ZXIuaDoKKyAgICAgICAgKFRyZWVTeW5jaHJvbml6ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFZpZGVvTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFz
TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGFtYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNr
ZXI6OnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEYW1h
Z2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oOgorICAgICAgICAoQ0NE
YW1hZ2VUcmFja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6c29ydExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpz
ZXRSZXBsaWNhTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjaGlsZHJlbik6CisgICAgICAgIChDQ0xh
eWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJv
bnQ6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNr
VG9Gcm9udDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjazo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySXRlcmF0b3I6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6
OkNDTGF5ZXJJdGVyYXRvcik6CisgICAgICAgIChCYWNrVG9Gcm9udCk6CisgICAgICAgIChGcm9u
dFRvQmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckl0ZXJhdG9yUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpnZXRSYXdQdHIpOgorICAg
ICAgICAoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckl0ZXJhdG9yUG9zaXRpb246OmN1cnJlbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySXRlcmF0b3JQb3NpdGlvbjo6dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjp0YXJnZXRSZW5kZXJTdXJmYWNlQ2hp
bGRyZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJT
b3J0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhO
b2Rlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5oOgorICAgICAgICAoQ0NMYXllclNvcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENvbW1vbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVy
VHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnRy
YWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxl
YXNlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5MYXllckltcGw6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmxheWVyTGlzdCk6
CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6Y3JlYXRlKToKKwogMjAxMi0wMi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBUaWxlQ2FjaGUgb2JqZWN0IHNob3VsZCBiZSBk
ZWFsbG9jYXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggNTdmM2JlNTY3ZGQ5OTNjYTc4NDNiMmNhOTkyNTU4NmIwODc4MTIzMS4uYmVhODQzMzk3NDVh
YTEzNDJlNzY5ZjAxNmU0OWMxMzlkNTgyM2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NyBAQAorMjAxMi0wMi0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0
ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjplbXVsYXRlRHJhd2luZ09uZUZyYW1l
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcyk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1
cmZhY2VzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
U29ydGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OnNldHVwU2Nyb2xsQW5kQ29udGVudHNM
YXllcnMpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0OjpCbGVu
ZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZh
Y2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0ND
U29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246
OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAg
ICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjcmVhdGVMYXllcik6CisgICAgICAgIChDQ0xheWVyVGVz
dENvbW1vbjo6VEVTVCk6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Z2V0UXVhZHMpOgor
ICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgor
ICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RG
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0NMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhwZWN0VHJlZXNBcmVJZGVudGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisK
IDIwMTItMDItMTUgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gUm9sbCBERVBTIHRvIHIxMjIxMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggMTgxYmE0ZTU4MTJjZTg4NzhhMTc5MjAyNThmOGVkZThkZmI0NjIx
ZS4uZDUzMzY5OWFmOWYxZjdhYTA4NTI4ZDQxZjhiNmJjYzI2MGIwMzUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQ2FudmFzTGF5ZXJDaHJv
bWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IENhbnZhc0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8
Q0NMYXllckltcGw+IENhbnZhc0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsK
ICAgICByZXR1cm4gQ0NDYW52YXNMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDllOGNlN2Q4Y2M4MmFhODgzYzM2YTg1ODYz
MDk0NDhmMzM2MjAyNzEuLjcyMmNjMWE2NjczODliMzU3MTA1ODI1MjhiNmQxY2M3NjNhMzU3NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gQmFzZSBjbGFzcyBmb3IgV2ViR0wgYW5kIGFjY2VsZXJhdGVkIDJk
IGNhbnZhc2VzLgogY2xhc3MgQ2FudmFzTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9t
aXVtIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0
ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVDQ0xheWVySW1wbCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0YmNmMjk3ZmY5MjQ2OGM5ODRmNWI0ZmNjMTJi
ZmY1M2IyNjZkNjc0Li5hYmIyNWJkM2QzNTVmMTM4YzkzNmRlOWVlM2U3MDMxZWU5Zjc3MjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IExheWVyQ2hy
b21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IExheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NMYXllckltcGw6
OmNyZWF0ZShtX2xheWVySWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDNhMWU5NmM1ZmRh
NDllODFiNDVkZTdjNmM0MTE5ZWQyYjM5ODYzZjEuLjk5ODExYTAxZGVmOGU2MzdhNzUyMzY0MmRh
YTg3MWZkYjEyZGM1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTIzNiw3ICsyMzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTeW5j
aHJvbml6ZXI7CiAgICAgZnJpZW5kIGNsYXNzIENDTGF5ZXJJbXBsOwogICAgIC8vIENvbnN0cnVj
dHMgYSBDQ0xheWVySW1wbCBvZiB0aGUgY29ycmVjdCBydW50aW1lIHR5cGUgZm9yIHRoaXMgTGF5
ZXJDaHJvbWl1bSB0eXBlLgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3Jl
YXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDc5YWQyZWRlOTU0NzU1ODJiODcwNzI5
YTcxYTVkNjFiZDI4YWI0Yi4uNjI1ZjRiMjFkZmI4YTUxZDNjOWU3YWYwOTJlNGEwMjliY2IzNjZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
dm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiByZW5kZXJlckMKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwog
fQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVD
Q0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVt
OjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDUGx1Z2luTGF5ZXJJbXBsOjpj
cmVhdGUobV9sYXllcklkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4
NDM2NTY5NWJiMWRkYzY1MjMxYWRkMDRmNmYwZDgzMDAwOTFlMGQwLi5jMzBmNzdhYzVkMWI3YmE1
YTc0ZGFkYjA4ZmRlNGExM2IzZWE0NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5M
YXllckNocm9taXVtPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAK
ICAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWlyIG93biB0ZXh0
dXJlIElELgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWQxMzU0NmJhZTg3ZjQw
NTFiMzBlMzQ5NGMwZjJmZGU4NTNmMWUzMy4uMGRjNzdhZGE4MjI2MDIzMjVlNjc5ZTMxNTQ4ODMz
Njg5M2I5NGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IFNvbGlkQ29sb3JMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllckltcGwoKQogewogICAgIHJldHVybiBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZShp
ZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFkMTQ4
OTBiZDBlMWYwYzIwYzYzYzZkMjMxNzE1OTQ4ZDIxODk0ZmMuLjk0YTU0YTBhYzVhZGUxMTk3ODZk
ZDA2YmQzNDlkYmIyMTdiYmQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21p
dW0uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiAvLyBzZXRC
YWNrZ3JvdW5kQ29sb3IoKSBvbiB0aGUgYmFzZSBjbGFzcy4KIGNsYXNzIFNvbGlkQ29sb3JMYXll
ckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U29saWRDb2xvckxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwogCiAgICAgdmly
dHVhbCB+U29saWRDb2xvckxheWVyQ2hyb21pdW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDkwZDFkOTU3YmQ1MGFiMWZiZjFjMDVkZDZmY2U4NWMyNjhhNGM3NGYuLjkz
MDU5YmRlM2NkYTJjYTJkMDVmYTkwMzBkMDJkNGJlMDQxODlmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcApAQCAtOTcsNyArOTcsNyBAQCBUaWxlZExheWVyQ2hyb21pdW06On5U
aWxlZExheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUaWxl
ZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXllcklt
cGw+IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVy
biBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoaWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDJkOTk5NTM2N2FkMjQzNmFmZmFmZTZkY2MzMjNhZjk1M2FlZDMwNzIuLmE2
YzIxMTk1MWQ3ODUxNDM0MGY1NjdiZGYzNjBlYTY3NDEwOTRlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
VGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAg
IHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAog
ICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0aW9u
KFRpbGluZ09wdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCmluZGV4IGQwZmQwY2U1
MjNkNjM4ODRiZTkzMmUxYmQ0MTY1ODJmMjU3NjJlNDAuLjUzNzQ5NWFhMTFiMzU5Y2NjNGZhYjEw
YWYxYmMzZDJkYjg1NjEwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCkBAIC0zMyw2
MyArMzMsNTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFRyZWVTeW5jaHJvbml6
ZXI6OmFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIEND
TGF5ZXJJbXBsKiBjY0xheWVySW1wbCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFRyZWVTeW5j
aHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJDaHJvbWl1bVJv
b3QsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCkKIHsKLSAgICBt
YXAuc2V0KGNjTGF5ZXJJbXBsLT5pZCgpLCBjY0xheWVySW1wbCk7Ci0KLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5jaGlsZHJl
bigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgY2hpbGRyZW5baV0uZ2V0
KCkpOwotCi0gICAgaWYgKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIgPSBjY0xheWVySW1wbC0+bWFz
a0xheWVyKCkpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgbWFz
a0xheWVyKTsKKyAgICBDQ0xheWVySW1wbE1hcCBtYXA7CisgICAgY29sbGVjdEV4aXN0aW5nQ0NM
YXllckltcGxSZWN1cnNpdmUobWFwLCBvbGRDQ0xheWVySW1wbFJvb3QpOwogCi0gICAgaWYgKEND
TGF5ZXJJbXBsKiByZXBsaWNhTGF5ZXIgPSBjY0xheWVySW1wbC0+cmVwbGljYUxheWVyKCkpCi0g
ICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgcmVwbGljYUxheWVyKTsK
KyAgICByZXR1cm4gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKG1hcCwgbGF5ZXJDaHJvbWl1bVJv
b3QpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5j
aHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsTWFw
JiBtYXApCit2b2lkIFRyZWVTeW5jaHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBs
UmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHBv
cENDTGF5ZXJJbXBsKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGw7Ci0g
ICAgQ0NMYXllckltcGxNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobGF5ZXItPmlkKCkpOwot
ICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2NMYXllckltcGwgPSBpdC0+c2Vj
b25kOyAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZW50cnkgZm9yIHRoaXMsIHdlIGp1c3QgbmVlZCB0
byByZXBhcmVudCBpdC4KLSAgICAgICAgY2NMYXllckltcGwtPmNsZWFyQ2hpbGRMaXN0KCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgY2NMYXllckltcGwgPSBsYXllci0+Y3JlYXRlQ0NMYXllcklt
cGwoKTsKLSAgICAgICAgbWFwLnNldChsYXllci0+aWQoKSwgY2NMYXllckltcGwpOyAvLyBBZGQg
aXQgdG8gdGhlIG1hcCBzbyBvdGhlciBsYXllcnMgcmVmZXJlbmNpbmcgdGhpcyBvbmUgY2FuIHBp
Y2sgaXQgdXAuCi0gICAgfQorICAgIENDTGF5ZXJJbXBsKiBjY0xheWVySW1wbCA9IHBvcENDTGF5
ZXJJbXBsLmdldCgpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
JiBjaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOworICAgIGlmICghY2NMYXllckltcGwpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1hcC5zZXQoY2NMYXllckltcGwtPmlkKCksIHBvcENDTGF5
ZXJJbXBsKTsKKworICAgIFZlY3RvcjxPd25QdHI8Q0NMYXllckltcGw+ID4mIGNoaWxkcmVuID0g
Y2NMYXllckltcGwtPm1fY2hpbGRyZW47CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgY2NMYXllckltcGwtPmFkZENoaWxkKHN5bmNocm9u
aXplVHJlZVJlY3Vyc2l2ZShjaGlsZHJlbltpXS5nZXQoKSwgbWFwKSk7CisgICAgICAgIGNvbGxl
Y3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKG1hcCwgY2hpbGRyZW5baV0ucmVsZWFzZSgp
KTsKKworICAgIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKG1hcCwgY2NMYXll
ckltcGwtPm1fbWFza0xheWVyLnJlbGVhc2UoKSk7CisgICAgY29sbGVjdEV4aXN0aW5nQ0NMYXll
ckltcGxSZWN1cnNpdmUobWFwLCBjY0xheWVySW1wbC0+bV9yZXBsaWNhTGF5ZXIucmVsZWFzZSgp
KTsKK30KIAotICAgIGlmIChMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSBsYXllci0+bWFza0xh
eWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVl
UmVjdXJzaXZlKG1hc2tMYXllciwgbWFwKSk7Ci0gICAgZWxzZQotICAgICAgICBjY0xheWVySW1w
bC0+c2V0TWFza0xheWVyKDApOworUGFzc093blB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9u
aXplcjo6cmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKENDTGF5ZXJJbXBsTWFwJiBtYXAsIExheWVy
Q2hyb21pdW0qIGxheWVyKQoreworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGwg
PSBtYXAudGFrZShsYXllci0+aWQoKSk7CiAKLSAgICBpZiAoTGF5ZXJDaHJvbWl1bSogcmVwbGlj
YUxheWVyID0gbGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICBjY0xheWVySW1wbC0+c2V0
UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIsIG1hcCkp
OwotICAgIGVsc2UKLSAgICAgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXllcigwKTsKKyAg
ICBpZiAoIWNjTGF5ZXJJbXBsKQorICAgICAgICByZXR1cm4gbGF5ZXItPmNyZWF0ZUNDTGF5ZXJJ
bXBsKCk7CiAKLSAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhjY0xheWVySW1wbC5nZXQoKSk7
CiAgICAgcmV0dXJuIGNjTGF5ZXJJbXBsLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xh
eWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhMYXllckNocm9taXVt
KiBsYXllckNocm9taXVtUm9vdCwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gcHJwT2xkQ0NMYXll
ckltcGxSb290KQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3lu
Y2hyb25pemVUcmVlUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIExheWVyQ2hyb21pdW0q
IGxheWVyKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290ID0g
cHJwT2xkQ0NMYXllckltcGxSb290OwotICAgIC8vIEJ1aWxkIGEgbWFwIGZyb20gbGF5ZXIgSURz
IHRvIENDTGF5ZXJJbXBscyBzbyB3ZSBjYW4gcmV1c2UgbGF5ZXJzIGZyb20gdGhlIG9sZCB0cmVl
LgotICAgIENDTGF5ZXJJbXBsTWFwIG1hcDsKLSAgICBpZiAob2xkQ0NMYXllckltcGxSb290KQot
ICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIG9sZENDTGF5ZXJJbXBs
Um9vdC5nZXQoKSk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICAvLyBSZWN1cnNpdmVseSBidWlsZCB0aGUgbmV3IGxheWVyIHRyZWUuCi0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBuZXdDQ0xheWVySW1wbFJvb3QgPSBzeW5jaHJvbml6ZVRyZWVSZWN1cnNp
dmUobGF5ZXJDaHJvbWl1bVJvb3QsIG1hcCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xh
eWVySW1wbCA9IHJldXNlT3JDcmVhdGVDQ0xheWVySW1wbChtYXAsIGxheWVyKTsKIAotICAgIHJl
dHVybiBuZXdDQ0xheWVySW1wbFJvb3QucmVsZWFzZSgpOworICAgIGNjTGF5ZXJJbXBsLT5jbGVh
ckNoaWxkTGlzdCgpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYg
Y2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBjY0xheWVySW1wbC0+YWRkQ2hpbGQoc3lu
Y2hyb25pemVUcmVlUmVjdXJzaXZlKG1hcCwgY2hpbGRyZW5baV0uZ2V0KCkpKTsKKworICAgIGNj
TGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKG1hcCwgbGF5
ZXItPm1hc2tMYXllcigpKSk7CisgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXllcihzeW5j
aHJvbml6ZVRyZWVSZWN1cnNpdmUobWFwLCBsYXllci0+cmVwbGljYUxheWVyKCkpKTsKKworICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdldCgpKTsKKyAgICByZXR1cm4g
Y2NMYXllckltcGwucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
cmVlU3luY2hyb25pemVyLmgKaW5kZXggYTRlNDk0MjE3Mzk1ZThkMmUxMjk2YmQ2NTY2NjJlMzJi
MTE5YWNmZi4uMTM0NzA4Y2E0M2JkODllY2JkZjJmZDIxNTkyZmQwNzI4NmRjYzE3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNo
cm9uaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RyZWVTeW5jaHJvbml6ZXIuaApAQCAtMjgsNyArMjgsOCBAQAogCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDE2ICs0MSwxNyBAQCBXVEZf
TUFLRV9OT05DT1BZQUJMRShUcmVlU3luY2hyb25pemVyKTsKIHB1YmxpYzoKICAgICAvLyBBY2Nl
cHRzIGEgTGF5ZXJDaHJvbWl1bSB0cmVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGEgQ0NM
YXllckltcGwgdHJlZSB0aGF0IGR1cGxpY2F0ZXMgdGhlIHN0cnVjdHVyZQogICAgIC8vIG9mIHRo
ZSBMYXllckNocm9taXVtIHRyZWUsIHJldXNpbmcgdGhlIENDTGF5ZXJJbXBscyBpbiB0aGUgdHJl
ZSBwcm92aWRlZCBieSBvbGRDQ0xheWVySW1wbFJvb3QgaWYgcG9zc2libGUuCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSog
bGF5ZXJSb290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBzeW5jaHJvbml6ZVRyZWVzKExheWVy
Q2hyb21pdW0qIGxheWVyUm9vdCwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXllcklt
cGxSb290KTsKIAogcHJpdmF0ZToKICAgICBUcmVlU3luY2hyb25pemVyKCk7IC8vIE5vdCBpbnN0
YW50aWFibGUuCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q0NMYXllckltcGw+
ID4gQ0NMYXllckltcGxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgT3duUHRyPENDTGF5
ZXJJbXBsPiA+IENDTGF5ZXJJbXBsTWFwOwogCiAgICAgLy8gRGVjbGFyZWQgYXMgc3RhdGljIG1l
bWJlciBmdW5jdGlvbnMgc28gdGhleSBjYW4gYWNjZXNzIGZ1bmN0aW9ucyBvbiBMYXllckNocm9t
aXVtIGFzIGEgZnJpZW5kIGNsYXNzLgotICAgIHN0YXRpYyB2b2lkIGFkZENDTGF5ZXJJbXBsc1Rv
TWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiwgQ0NMYXllckltcGwqKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyQ2hy
b21pdW0qLCBDQ0xheWVySW1wbE1hcCYpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJ
bXBsPiByZXVzZU9yQ3JlYXRlQ0NMYXllckltcGwoQ0NMYXllckltcGxNYXAmLCBMYXllckNocm9t
aXVtKik7CisgICAgc3RhdGljIHZvaWQgY29sbGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNp
dmUoQ0NMYXllckltcGxNYXAmLCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPik7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShDQ0xheWVy
SW1wbE1hcCYsIExheWVyQ2hyb21pdW0qKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFlMmFlOGM4MGUyMmExOTM4YWVi
NDlhNDY3OTNlMjMwZTI4YjgyOGEuLmU2OTExOTgxZWQwNjFkYzY3ZGU1MzRlM2ViNjcwMDUzNGI5
OWQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBWaWRlb0xheWVyQ2hyb21pdW06On5WaWRlb0xheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBs
KCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllckltcGwoKQogewogICAgIHJldHVybiBDQ1ZpZGVvTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXll
cklkLCBtX3Byb3ZpZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggODc4
ODA2ZTI2ZGI1NDczMDIyNDE2MjMwZWMxMDVmYWJmOWI4ZTY0YS4uMWYyZTkyMDEyNGZjNGYwMDYy
ZTJkNjUyNmI2MDJlY2NkNGFjN2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsKICAgICB2aXJ0dWFsIH5W
aWRlb0xheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllcklt
cGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVmlkZW9M
YXllckNocm9taXVtKFZpZGVvRnJhbWVQcm92aWRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5
ZXJJbXBsLmgKaW5kZXggOTEyNmE3ZDQ0NTAxZTYzMjViNWVmZDRiNTdjYmE5ZTQ2YmM4YTc1YS4u
Yzk2YWYyNDZlZDNiYTc1ODk1YmJlZjU1MmQ0Yzk4ZDRlODBiNWJjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0xheWVySW1wbC5oCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NDYW52YXNMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDQ2FudmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlk
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0NhbnZhc0xheWVySW1wbChp
ZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7
CiAgICAgfQogICAgIHZpcnR1YWwgfkNDQ2FudmFzTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuY3BwCmluZGV4IDJkNmY0M2YzMTg1ZmM0NDVjYTk5NTlmZTgwNGY2MjRi
M2I0ZTEzM2YuLjZhMDYyY2FjYTdjYzU4NzVmMmM5MjU5OTg1NmI2YTVlYzhlNTNjNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFt
YWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBDQ0RhbWFnZVRy
YWNrZXI6On5DQ0RhbWFnZVRyYWNrZXIoKQogewogfQogCi12b2lkIENDRGFtYWdlVHJhY2tlcjo6
dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRh
cmdldFN1cmZhY2VNYXNrTGF5ZXIpCit2b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdl
VHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQg
dGFyZ2V0U3VyZmFjZUxheWVySUQsIENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVy
KQogewogICAgIC8vCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgImRhbWFnZSBy
ZWN0IiBvZiBhIHRhcmdldCBzdXJmYWNlLCBhbmQgdXBkYXRlcyB0aGUgc3RhdGUKQEAgLTEzMCw3
ICsxMzAsNyBAQCB2b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0
ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPgogCiAgICAgLy8gSWYgdGhlIHRhcmdl
dCBzdXJmYWNlIGFscmVhZHkga25vd3MgaXRzIGVudGlyZSByZWdpb24gaXMgZGFtYWdlZCwgd2Ug
Y2FuIHJldHVybiBlYXJseS4KICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgZ28gYXdheSwgb3Ig
d2lsbCBiZSBjbGVhbmVyLCBhZnRlciByZWZhY3RvcmluZyBpbnRvIFJlbmRlclBhc3MvUmVuZGVy
U2NoZWR1bGUuCi0gICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0WzBdLmdldCgpOwor
ICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IGxheWVyTGlzdFswXTsKICAgICBDQ1JlbmRlclN1cmZh
Y2UqIHRhcmdldFN1cmZhY2UgPSBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpOwogCiAgICAg
aWYgKG1fZm9yY2VGdWxsRGFtYWdlTmV4dFVwZGF0ZSB8fCB0YXJnZXRTdXJmYWNlLT5zdXJmYWNl
UHJvcGVydHlDaGFuZ2VkT25seUZyb21EZXNjZW5kYW50KCkpIHsKQEAgLTE2MSwxMiArMTYxLDEy
IEBAIHZvaWQgQ0NEYW1hZ2VUcmFja2VyOjpzYXZlUmVjdEZvck5leHRGcmFtZShpbnQgbGF5ZXJJ
RCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRTCiAgICAgbV9uZXh0UmVjdEhpc3RvcnktPnNldChs
YXllcklELCB0YXJnZXRTcGFjZVJlY3QpOwogfQogCi1GbG9hdFJlY3QgQ0NEYW1hZ2VUcmFja2Vy
Ojp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVy
SW1wbD4gPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpCitGbG9hdFJlY3Qg
Q0NEYW1hZ2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMoY29uc3QgVmVjdG9y
PENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKQogewog
ICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0gRmxvYXRSZWN0KCk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXll
ckluZGV4KSB7Ci0gICAgICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKKyAgICAgICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVy
SW5kZXhdOwogCiAgICAgICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZh
Y2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5ZXJJbXBsPihsYXllciwgdGFyZ2V0U3VyZmFjZUxh
eWVySUQpKQogICAgICAgICAgICAgZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZShsYXllciwg
ZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oCmluZGV4IGQ0MjhmMjZkMWEw
YzI1Y2EwYzQ4MWMwOTNlYjNhOGZmYmEzYmI4MDkuLjdhNjI5YzQ3ODEyODFiZTRkZmExYzQ5ZGQx
M2IxMWU0Zjk1NTBmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oCkBAIC00NCwxMyAr
NDQsMTMgQEAgcHVibGljOgogICAgIH5DQ0RhbWFnZVRyYWNrZXIoKTsKIAogICAgIHZvaWQgZm9y
Y2VGdWxsRGFtYWdlTmV4dFVwZGF0ZSgpIHsgbV9mb3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlID0g
dHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8
UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJ
RCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpOworICAgIHZvaWQgdXBkYXRl
RGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0
LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIENDTGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFz
a0xheWVyKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnREYW1hZ2VSZWN0KCkgeyByZXR1
cm4gbV9jdXJyZW50RGFtYWdlUmVjdDsgfQogCiBwcml2YXRlOgogICAgIENDRGFtYWdlVHJhY2tl
cigpOwogCi0gICAgRmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBW
ZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNl
TGF5ZXJJRCk7CisgICAgRmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25z
dCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVy
SUQpOwogICAgIEZsb2F0UmVjdCB0cmFja0RhbWFnZUZyb21TdXJmYWNlTWFzayhDQ0xheWVySW1w
bCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllcik7CiAgICAgRmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJv
bUxlZnRvdmVyUmVjdHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGExMzYxNjdk
N2FmZWM0YTY3MWU3YTY5ODA4NWQ0ZGQ2NjBlZGEzMTEuLmY2NGZkMTQ2YTk3NmU3Mjk4NmQ1NGNk
YzJlM2Q5MDVjNDY5ZDc5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgQ0NMYXllckltcGw6On5DQ0xheWVySW1wbCgpCiAgICAgQVNTRVJUKENDUHJveHk6Omlz
SW1wbFRocmVhZCgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6YWRkQ2hpbGQoUGFzc1JlZlB0
cjxDQ0xheWVySW1wbD4gY2hpbGQpCit2b2lkIENDTGF5ZXJJbXBsOjphZGRDaGlsZChQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBjaGlsZCkKIHsKICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwog
ICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEND
TGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50
KSBjb25zdAogICAgIHRzIDw8ICJkcmF3c0NvbnRlbnQ6ICIgPDwgKG1fZHJhd3NDb250ZW50ID8g
InllcyIgOiAibm8iKSA8PCAiXG4iOwogfQogCi12b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0
cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllcklt
cGw+ID46Oml0ZXJhdG9yIGVuZCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIpCit2b2lkIHNv
cnRMYXllcnMoVmVjdG9yPENDTGF5ZXJJbXBsKj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8Q0NM
YXllckltcGwqPjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKIHsK
ICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb3J0TGF5ZXJzIiwgMCwg
MCk7CiAgICAgbGF5ZXJTb3J0ZXItPnNvcnQoZmlyc3QsIGVuZCk7CkBAIC0zMjAsMjAgKzMyMCwx
NCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgYm91bmRzKQog
ICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVy
SW1wbDo6c2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3Zv
aWQgQ0NMYXllckltcGw6OnNldE1hc2tMYXllcihQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBtYXNr
TGF5ZXIpCiB7Ci0gICAgaWYgKG1fbWFza0xheWVyID09IG1hc2tMYXllcikKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7CiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNh
TGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKQordm9pZCBDQ0xheWVy
SW1wbDo6c2V0UmVwbGljYUxheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJlcGxpY2FMYXll
cikKIHsKLSAgICBpZiAobV9yZXBsaWNhTGF5ZXIgPT0gcmVwbGljYUxheWVyKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBtX3JlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKICAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRl
eCA4ZmJhYmFlODZhNmJkNmFjOGQ2NWNiN2U3ZTA2Y2E2YzliZTY5MTgwLi4wYzRiNjliNzlmMmZm
MWMzNzc4ZWUwY2RkOThhZjE2ZTEyNGZmMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTQ1
LDI1ICs0NSwyNSBAQCBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsK
IGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAotY2xhc3MgQ0NMYXllckltcGwgOiBwdWJs
aWMgUmVmQ291bnRlZDxDQ0xheWVySW1wbD4geworY2xhc3MgQ0NMYXllckltcGwgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0xheWVySW1wbChpZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkND
TGF5ZXJJbXBsKCk7CiAKICAgICAvLyBUcmVlIHN0cnVjdHVyZS4KICAgICBDQ0xheWVySW1wbCog
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47
IH0KLSAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKKyAgICBjb25z
dCBWZWN0b3I8T3duUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW47IH0KKyAgICB2b2lkIGFkZENoaWxkKFBhc3NPd25QdHI8Q0NMYXllckltcGw+
KTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxk
cmVuKCk7CiAKLSAgICB2b2lkIHNldE1hc2tMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7
CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIEND
TGF5ZXJJbXBsKiBtYXNrTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tMYXllci5nZXQoKTsg
fQogCi0gICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOwor
ICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+KTsKICAgICBD
Q0xheWVySW1wbCogcmVwbGljYUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIu
Z2V0KCk7IH0KIAogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQpAQCAt
MjMwLDkgKzIzMCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9wZXJ0aWVzIGludGVybmFsIHRv
IENDTGF5ZXJJbXBsCiAgICAgQ0NMYXllckltcGwqIG1fcGFyZW50OwotICAgIFZlY3RvcjxSZWZQ
dHI8Q0NMYXllckltcGw+ID4gbV9jaGlsZHJlbjsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1f
bWFza0xheWVyOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbV9yZXBsaWNhTGF5ZXI7CisgICAg
VmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiBtX2NoaWxkcmVuOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gbV9tYXNrTGF5ZXI7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3JlcGxpY2FM
YXllcjsKICAgICBpbnQgbV9sYXllcklkOwogCiAgICAgLy8gUHJvcGVydGllcyBzeW5jaHJvbml6
ZWQgZnJvbSB0aGUgYXNzb2NpYXRlZCBMYXllckNocm9taXVtLgpAQCAtMzE0LDcgKzMxNCw3IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fdXBkYXRlUmVjdDsKIH07CiAKLXZvaWQgc29ydExh
eWVycyhWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRvciBmaXJzdCwgVmVjdG9y
PFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKik7Cit2
b2lkIHNvcnRMYXllcnMoVmVjdG9yPENDTGF5ZXJJbXBsKj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0
b3I8Q0NMYXllckltcGwqPjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKik7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5jcHAKaW5kZXggMDc2N2ZmMGU3NjZjOTYzNDA2MzU3
ZWRlZjI5YmM2ZDVhOTA4OTJmOC4uZTJmMTJkYTFlOTljMDZlMWFmMjJhZmQzMzhhN2I2ZGY2NTE4
ZDY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwCkBAIC0zNSw4ICszNSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6
OkJhY2tUb0Zyb250OjpiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPiYgcG9zKQordGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK3ZvaWQgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0
aW9uPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKIHsKICAg
ICBwb3MudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXggPSAwOwogICAgIHBvcy5jdXJyZW50
TGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkxheWVySW5kZXhSZXBy
ZXNlbnRpbmdUYXJnZXRSZW5kZXJTdXJmYWNlOwpAQCAtNDQsMTUgKzQ0LDE1IEBAIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPExheWVyVHlwCiAgICAgbV9oaWdoZXN0VGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyID0g
MDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjplbmQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBv
cykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJh
Y2tUb0Zyb250OjplbmQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxp
c3QsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQogewogICAgIHBvcy50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkludmFsaWRUYXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleDsKICAgICBwb3MuY3VycmVudExheWVySW5kZXggPSAw
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBv
cykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJh
Y2tUb0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5ZXJM
aXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKIHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBs
YXllciBoYXMgYSBSUywgbW92ZSB0byBpdHMgbGF5ZXIgbGlzdC4gT3RoZXJ3aXNlLCB2aXNpdCB0
aGUgbmV4dCBsYXllciBpbiB0aGUgY3VycmVudCBSUyBsYXllciBsaXN0LgogICAgIGlmIChwb3Mu
Y3VycmVudExheWVyUmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewpAQCAt
ODUsMjMgKzg1LDIzIEBAIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6
Om5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlCiAgICAgfQogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZv
aWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVy
YXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+JiBwb3MpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6
YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRl
clN1cmZhY2VUeXBlPiYgcG9zKQogewogICAgIHBvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJ
bmRleCA9IDA7CiAgICAgcG9zLmN1cnJlbnRMYXllckluZGV4ID0gcG9zLnRhcmdldFJlbmRlclN1
cmZhY2VDaGlsZHJlbigpLnNpemUoKSAtIDE7CiAgICAgZ29Ub0hpZ2hlc3RJblN1YnRyZWUocG9z
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBv
cykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZy
b250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxp
c3QsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQogewogICAgIHBvcy50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkludmFsaWRUYXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleDsKICAgICBwb3MuY3VycmVudExheWVySW5kZXggPSAw
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBv
cykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZy
b250VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5ZXJM
aXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKIHsKICAgICAvLyBNb3ZlcyB0byB0aGUgcHJl
dmlvdXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgUlMgbGF5ZXIgbGlzdC4gVGhlbiB3ZSBjaGVjayBp
ZiB0aGUKICAgICAvLyBuZXcgY3VycmVudCBsYXllciBoYXMgaXRzIG93biBSUywgaW4gd2hpY2gg
Y2FzZSB0aGVyZSBhcmUgdGhpbmdzIGluIHRoYXQgUlMgbGF5ZXIgbGlzdCB0aGF0IGFyZSBoaWdo
ZXIsIHNvCkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpG
cm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUKICAgICB9
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hp
Z2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT4mIHBvcykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1l
IExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDTGF5ZXJJdGVy
YXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+JiBw
b3MpCiB7CiAgICAgaWYgKHBvcy5jdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNDcsMjMgKzE0NywyMyBAQCB2b2lkIENDTGF5
ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xh
eWVySXRlcmF0b3JQbwogfQogCiAvLyBEZWNsYXJlIGVhY2ggb2YgdGhlIGFib3ZlIGZ1bmN0aW9u
cyBmb3IgTGF5ZXJDaHJvbWl1bSBhbmQgQ0NMYXllckltcGwgY2xhc3NlcyBzbyB0aGF0IHRoZXkg
YXJlIGxpbmtlZC4KLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1Rv
RnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9u
czo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRv
ckFjdGlvbnM6OkJhY2tUb0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVy
Q2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKLQotdGVtcGxhdGUgdm9pZCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9z
aXRpb248Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiYpOwotCi10ZW1wbGF0ZSB2b2lkIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRl
IHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci10
ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpiZWdpbihD
Q0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNr
Ojpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9t
aXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci0KLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248
Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Jik7Cit0ZW1wbGF0
ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpiZWdpbihDQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFj
a1RvRnJvbnQ6Om5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bSwgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7CisK
K3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2lu
KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwq
PiwgQ0NSZW5kZXJTdXJmYWNlPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpCYWNrVG9Gcm9udDo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBs
LCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlPiYpOwordGVtcGxhdGUgdm9p
ZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3Vy
ZmFjZT4mKTsKKwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRv
QmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKK3RlbXBs
YXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9u
PExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpG
cm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248
TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0+Jik7CisKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
RnJvbnRUb0JhY2s6Om5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIFZl
Y3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2U+Jik7Cit0ZW1wbGF0ZSB2b2lkIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9yUG9z
aXRpb248Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2U+
Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpi
ZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4sIENDUmVuZGVyU3VyZmFjZT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRv
clBvc2l0aW9uPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJm
YWNlPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJh
dG9yLmgKaW5kZXggOGY0MTJjNDRkM2QxNDA0NzBmZDEyYTcyN2I5MTRlNGQ0NmZiZWIxNC4uMGQz
NjNhMWU3NzBmZDVmZTQzOGQ1NDE4N2ZkMDk5ZWNmOGQzNzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckl0ZXJhdG9yLmgKQEAgLTgzLDE1ICs4MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAKIC8vIEFuIGl0ZXJhdG9yIGNsYXNzIGZvciB3YWxraW5nIG92ZXIgbGF5
ZXJzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgSXRlcmF0b3JB
Y3Rpb25UeXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJM
aXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgSXRlcmF0b3JBY3Rpb25U
eXBlPgogY2xhc3MgQ0NMYXllckl0ZXJhdG9yIHsKLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRv
cjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBJdGVyYXRvckFjdGlvblR5cGU+IENDTGF5
ZXJJdGVyYXRvclR5cGU7CisgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBM
YXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBJdGVyYXRvckFjdGlvblR5cGU+IENDTGF5ZXJJ
dGVyYXRvclR5cGU7CiAKIHB1YmxpYzoKICAgICBDQ0xheWVySXRlcmF0b3IoKSB7IH0KIAotICAg
IHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGJlZ2luKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5
ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0
b3JUeXBlKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHRydWUpOyB9Ci0gICAgc3RhdGljIENDTGF5
ZXJJdGVyYXRvclR5cGUgZW5kKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0b3JUeXBlKHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGZhbHNlKTsgfQorICAgIHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBl
IGJlZ2luKGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyByZXR1cm4g
Q0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCB0cnVlKTsgfQorICAg
IHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZChjb25zdCBMYXllckxpc3QqIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZmFsc2UpOyB9CiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlJiBvcGVyYXRv
cisrKCkgeyBBU1NFUlQobV9hY3Rpb25zKTsgbV9hY3Rpb25zLT5uZXh0KG1fcG9zaXRpb24pOyBy
ZXR1cm4gKnRoaXM7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ0NMYXllckl0ZXJhdG9y
VHlwZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24gPT0gb3RoZXIubV9wb3NpdGlv
bjsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBMYXllclR5cGUqIHRhcmdldFJl
bmRlclN1cmZhY2VMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24udGFyZ2V0UmVuZGVy
U3VyZmFjZUxheWVyKCk7IH0KIAogcHJpdmF0ZToKLSAgICBDQ0xheWVySXRlcmF0b3IoY29uc3Qg
VmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGJvb2wg
c3RhcnQpCisgICAgQ0NMYXllckl0ZXJhdG9yKGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgYm9vbCBzdGFydCkKICAgICAgICAgOiBtX3Bvc2l0aW9uKHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpCiAgICAgICAgICwgbV9hY3Rpb25zKGFkb3B0UHRyKG5ldyBJdGVyYXRvckFj
dGlvblR5cGUoKSkpCiAgICAgewpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX2FjdGlvbnMtPmVuZChtX3Bvc2l0aW9uKTsKICAgICB9CiAKLSAgICBDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBtX3Bvc2l0aW9uOwor
ICAgIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJT
dXJmYWNlVHlwZT4gbV9wb3NpdGlvbjsKICAgICBPd25QdHI8SXRlcmF0b3JBY3Rpb25UeXBlPiBt
X2FjdGlvbnM7CiB9OwogCkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBzdHJ1Y3QgQ0NMYXllckl0ZXJh
dG9yQWN0aW9ucyB7CiAgICAgLy8gV2Fsa3MgbGF5ZXJzIHNvcnRlZCBieSB6LW9yZGVyIGZyb20g
YmFjayB0byBmcm9udC4KICAgICBjbGFzcyBCYWNrVG9Gcm9udCB7CiAgICAgcHVibGljOgotICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZT4KLSAgICAgICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgor
ICAgICAgICB2b2lkIGJlZ2luKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgTGF5
ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLSAgICAgICAgdm9pZCBl
bmQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4m
KTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJM
aXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KKyAgICAgICAgdm9pZCBlbmQoQ0NMYXll
ckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBl
PiYpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJl
bmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRp
b248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KKyAgICAgICAgdm9pZCBuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVy
VHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZT4mKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGludCBtX2hpZ2hlc3RUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXI7CkBAIC0xNDIsMTgg
KzE0MiwxOCBAQCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucyB7CiAgICAgLy8gV2Fsa3Mg
bGF5ZXJzIHNvcnRlZCBieSB6LW9yZGVyIGZyb20gZnJvbnQgdG8gYmFjawogICAgIGNsYXNzIEZy
b250VG9CYWNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXll
clR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIGJlZ2luKEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7Cisg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CisgICAgICAgIHZvaWQgYmVnaW4oQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlPiYp
OwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlPgorICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUs
IExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci0gICAgICAgIHZv
aWQgbmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBM
YXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorICAgICAgICB2b2lkIG5leHQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZh
Y2VUeXBlPiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci0gICAgICAgIHZvaWQgZ29Ub0hp
Z2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT4mKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KKyAgICAgICAgdm9p
ZCBnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUs
IExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGU+Jik7CiAgICAgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oCmluZGV4IGIxZjYzYzQ1Zjc0MmMwM2M2
MGRlZjliMjE3Mzg0MGFmYjg2YzMyNjMuLjlmNjZhYTYxNGE4MTE1YTU1NThjMmEzNzQzOGM2ODM5
ZGE3NTdkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvclBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaApA
QCAtNTYsMTkgKzU2LDIyIEBAIHN0cnVjdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlIHsK
IC8vIG9uZSBvZiB0aGVzZSBsYXllcnMsIHRoaXMgaXMgYSB2YWx1ZSBmcm9tIDAgdG8gbi0xIChu
ID0gbnVtYmVyIG9mIGNoaWxkcmVuKS4gU2luY2UgdGhlIGl0ZXJhdG9yIG11c3QgYWxzbyBzdG9w
IGF0IHRoZSBsYXllcnMKIC8vIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHN1cmZhY2UsIHRoaXMg
aXMgZG9uZSBieSBzZXR0aW5nIHRoZSBjdXJyZW50TGF5ZXJJbmRleCB0byBhIHZhbHVlIG9mCiAv
LyBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlOjpMYXllclJlcHJlc2VudGluZ1RhcmdldFJl
bmRlclN1cmZhY2UuCi10ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXll
ckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgogc3RydWN0IENDTGF5ZXJJdGVyYXRv
clBvc2l0aW9uIHsKICAgICBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbigpIDogcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCgwKSB7IH0KLSAgICBleHBsaWNpdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbihj
b25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkg
OiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgfQorICAg
IGV4cGxpY2l0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uKGNvbnN0IExheWVyTGlzdCogcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCkgOiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZhY2VM
YXllckxpc3QpIHsgfQogCi0gICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVyKCkgY29u
c3QgeyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSA/
IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogdGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVu
KClbY3VycmVudExheWVySW5kZXhdLmdldCgpOyB9CisgICAgaW5saW5lIHN0YXRpYyBMYXllckNo
cm9taXVtKiBnZXRSYXdQdHIoY29uc3QgUmVmUHRyPExheWVyQ2hyb21pdW0+JiBwdHIpIHsgcmV0
dXJuIHB0ci5nZXQoKTsgfQorICAgIGlubGluZSBzdGF0aWMgQ0NMYXllckltcGwqIGdldFJhd1B0
cihDQ0xheWVySW1wbCogcHRyKSB7IHJldHVybiBwdHI7IH0KKworICAgIGlubGluZSBMYXllclR5
cGUqIGN1cnJlbnRMYXllcigpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRMYXllclJlcHJlc2VudHNU
YXJnZXRSZW5kZXJTdXJmYWNlKCkgPyB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSA6IGdldFJh
d1B0cih0YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKVtjdXJyZW50TGF5ZXJJbmRleF0pOyB9
CiAKICAgICBpbmxpbmUgYm9vbCBjdXJyZW50TGF5ZXJSZXByZXNlbnRzQ29udHJpYnV0aW5nUmVu
ZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVy
U3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8TGF5ZXJUeXBlPihjdXJyZW50TGF5ZXIoKSwgdGFy
Z2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPmlkKCkpOyB9CiAgICAgaW5saW5lIGJvb2wgY3VycmVu
dExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50TGF5ZXJJbmRleCA9PSBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlOjpMYXllckluZGV4
UmVwcmVzZW50aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQogCi0gICAgaW5saW5lIExheWVyVHlw
ZSogdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkgY29uc3QgeyByZXR1cm4gKCpyZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KVt0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleF0uZ2V0KCk7IH0KKyAg
ICBpbmxpbmUgTGF5ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBnZXRSYXdQdHIoKCpyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KVt0YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleF0pOyB9CiAgICAgaW5saW5lIFJlbmRlclN1cmZhY2VUeXBlKiB0YXJnZXRS
ZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkt
PnJlbmRlclN1cmZhY2UoKTsgfQotICAgIGlubGluZSBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVy
VHlwZT4gPiYgdGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdGFy
Z2V0UmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKTsgfQorICAgIGlubGluZSBjb25zdCBMYXll
ckxpc3QmIHRhcmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRhcmdl
dFJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KCk7IH0KIAogICAgIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgIHsK
QEAgLTc2LDcgKzc5LDcgQEAgc3RydWN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uIHsKICAgICAg
ICAgICAgICYmIGN1cnJlbnRMYXllckluZGV4ID09IG90aGVyLmN1cnJlbnRMYXllckluZGV4Owog
ICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OworICAgIGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKICAgICBpbnQgdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXg7CiAgICAgaW50IGN1cnJl
bnRMYXllckluZGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKaW5kZXggNzUyODU1
NDQ3MTdjZmRiNWE5YTJjZDNjYWY3ZGZkMzBjYjI3MTk2NC4uYzQzNGExZDk1MTI0NjM1NTM3NzI3
NjcyODIwOTA3M2VjNDlmMDBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKQEAgLTI5
NSw3ICsyOTUsNyBAQCB2b2lkIENDTGF5ZXJTb3J0ZXI6OmNyZWF0ZUdyYXBoTm9kZXMoTGF5ZXJM
aXN0OjppdGVyYXRvciBmaXJzdCwgTGF5ZXJMaXN0OjppdGVyYQogICAgIGZsb2F0IG1pblogPSBG
TFRfTUFYOwogICAgIGZsb2F0IG1heFogPSAtRkxUX01BWDsKICAgICBmb3IgKExheWVyTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBmaXJzdDsgaXQgPCBsYXN0OyBpdCsrKSB7Ci0gICAgICAgIG1f
bm9kZXMuYXBwZW5kKEdyYXBoTm9kZShpdC0+Z2V0KCkpKTsKKyAgICAgICAgbV9ub2Rlcy5hcHBl
bmQoR3JhcGhOb2RlKCppdCkpOwogICAgICAgICBHcmFwaE5vZGUmIG5vZGUgPSBtX25vZGVzLmF0
KG1fbm9kZXMuc2l6ZSgpIC0gMSk7CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3Vy
ZmFjZSA9IG5vZGUubGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgaWYgKCFub2RlLmxh
eWVyLT5kcmF3c0NvbnRlbnQoKSAmJiAhcmVuZGVyU3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0
ZXIuaAppbmRleCAyYzMwZDVkYWU0YTA5OTBmNGMyMTRlMGVlZmQwNjAzNzRhNzFjYjk2Li44YWI5
Yjc1ODE0ZThjYzZmYTJlY2JiMWNiZGU4ODcxZDIxMzBjOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXIgewogcHVibGljOgog
ICAgIENDTGF5ZXJTb3J0ZXIoKTsKIAotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDQ0xheWVy
SW1wbD4gPiBMYXllckxpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBMYXll
ckxpc3Q7CiAKICAgICB2b2lkIHNvcnQoTGF5ZXJMaXN0OjppdGVyYXRvciBmaXJzdCwgTGF5ZXJM
aXN0OjppdGVyYXRvciBsYXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5k
ZXggZjgxNDRlMTAyYzViZmY5NWVkMzQyOGM5NjIyMmJiZDIyOWI2NWQ2Mi4uZDJkMjBhZTZkMjBm
ZWJkZTA1Mzk2N2NjOTVhMmQwZjcwMzRjMjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCkBAIC0xNzAsMTIgKzE3MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hD
b21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAotICAgIC8vIFN5bmNocm9uaXplIHRy
ZWVzLCBpZiBvbmUgZXhpc3RzIGF0IGFsbC4uLgotICAgIGlmIChyb290TGF5ZXIoKSkKLSAgICAg
ICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRy
ZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cm9vdExheWVyKCkpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7Ci0KKyAgICBob3N0SW1wbC0+c2V0Um9vdExh
eWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJ
bXBsLT5yZWxlYXNlUm9vdExheWVyKCkpKTsKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVO
dW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldEhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMobV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBob3N0SW1wbC0+c2V0Vmlld3Bv
cnRTaXplKHZpZXdwb3J0U2l6ZSgpKTsKQEAgLTMzOSwxMyArMzM0LDEwIEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaG9zdEltCiAgICAgLy8gSWYgdGhlIGZyb250YnVmZmVyIGlzIGNhY2hlZCwgdGhlbiBj
bG9iYmVyIHRoZSBpbXBsIHRyZWUuIE90aGVyd2lzZSwKICAgICAvLyBwdXNoIG92ZXIgdGhlIHRy
ZWUgY2hhbmdlcy4KICAgICBpZiAobV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LmNvbnRleHRIYXNDYWNoZWRGcm9udEJ1ZmZlcikgewotICAgICAgICBob3N0SW1wbC0+c2V0Um9v
dExheWVyKDApOworICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChyb290TGF5ZXIoKSkKLSAgICAgICAgaG9zdElt
cGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJvb3RM
YXllcigpLCBob3N0SW1wbC0+cm9vdExheWVyKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGhvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoMCk7CisgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3lu
Y2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cmVsZWFz
ZVJvb3RMYXllcigpKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKQEAgLTQ0Nyw3ICs0Mzks
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJv
b3RMYXllcikKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQogewogICAg
IC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVy
LWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250
PiBDQ0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVy
Q2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJh
dG9yVHlwZTsKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9y
VHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBp
dCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKQEAgLTUzMSw3ICs1MjMsNyBAQCBzdGF0aWMgdm9pZCBsZWF2ZVRhcmdldFJlbmRl
clN1cmZhY2UoVmVjdG9yPFJlbmRlclN1cmZhY2VSZWdpb24+JiBzdGFjaywgUmVuZGVyUwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIFBhaW50VHlwZSBwYWludFR5cGUpCiB7CiAgICAgLy8gVXNl
IEZyb250VG9CYWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWlu
ZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJh
dG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CisgICAgdHlwZWRlZiBD
Q0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250
VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCiAgICAgLy8gVGhlIHN0YWNrIGhvbGRzIG9j
Y2x1ZGVkIHJlZ2lvbnMgZm9yIHN1YnRyZWVzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRy
ZWUsIHNvIHRoYXQgd2hlbiB3ZSBsZWF2ZSBhIHN1YnRyZWUgd2UgbWF5CiAgICAgLy8gYXBwbHkg
YSBtYXNrIHRvIGl0LCBidXQgbm90IHRvIHRoZSBwYXJ0cyBvdXRzaWRlIHRoZSBzdWJ0cmVlLgpA
QCAtNTY4LDcgKzU2MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBVc2UgQmFja1RvRnJv
bnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAg
dHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9y
VHlwZTsKKyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAgICBD
Q0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRh
dGVMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0
b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCA4N2YzYjUxZjM1Y2I1YzNj
OTRmMzA3Zjc2OTNhYmI2OGZjODA3YjVmLi4xNjdhMDM0NjZkMjg2MWNmMzgzZjMwZDdiMWRmN2E2
YTQxNzAxZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAK
QEAgLTEwNiwxMSArMTA2LDkgQEAgYm9vbCBsYXllclNob3VsZEJlU2tpcHBlZChMYXllclR5cGUq
IGxheWVyKQogCiAvLyBSZWN1cnNpdmVseSB3YWxrcyB0aGUgbGF5ZXIgdHJlZSBzdGFydGluZyBh
dCB0aGUgZ2l2ZW4gbm9kZSBhbmQgY29tcHV0ZXMgYWxsIHRoZQogLy8gbmVjZXNzYXJ5IHRyYW5z
Zm9ybWF0aW9ucywgY2xpcFJlY3RzLCByZW5kZXIgc3VyZmFjZXMsIGV0Yy4KLXRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIExh
eWVyU29ydGVyPgotc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIGxheWVy
TGlzdCwgTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIExheWVyU29ydGVyPgorc3RhdGljIGJvb2wgY2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwg
TGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRN
YXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIExheWVyTGlzdCYgbGF5ZXJMaXN0LCBM
YXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKLSAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+IExheWVyTGlzdDsKLQogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gY29tcHV0ZXMgdGhlIG5ldyBtYXRyaXggdHJhbnNmb3JtYXRpb25zIHJlY3Vyc2l2
ZWx5IGZvciB0aGlzCiAgICAgLy8gbGF5ZXIgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMuIEl0IGFs
c28gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIHJlbmRlciBzdXJmYWNlcy4KICAgICAvLyBTb21l
IGltcG9ydGFudCBwb2ludHMgdG8gcmVtZW1iZXI6CkBAIC0zNjUsNyArMzYzLDcgQEAgc3RhdGlj
IGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJU
eXBlKiBsYXllciwgTGF5ZXIKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNo
aWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IGxheWVy
LT5jaGlsZHJlbigpW2ldLmdldCgpOwotICAgICAgICBib29sIGRyYXdzQ29udGVudCA9IGNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGUsIExheWVyU29ydGVyPihjaGlsZCwgcm9vdExheWVyLCBzdWJsYXllck1hdHJp
eCwgbmV4dEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZGVzY2VuZGFu
dHMsIGxheWVyU29ydGVyLCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIGJvb2wgZHJhd3NDb250
ZW50ID0gY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJU
eXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBMYXllclNvcnRlcj4oY2hpbGQsIHJv
b3RMYXllciwgc3VibGF5ZXJNYXRyaXgsIG5leHRIaWVyYXJjaHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGRlc2NlbmRhbnRzLCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOwog
CiAgICAgICAgIGlmIChkcmF3c0NvbnRlbnQpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpKSB7CkBAIC00NzAsMTEgKzQ2OCwxMSBAQCBzdGF0aWMgYm9vbCBjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBM
YXllcgogLy8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiB0
byBzZXQgdmlzaWJpbGl0eSByZWN0cyBvbiBhIHNlY29uZAogLy8gdHJlZSBwYXNzLCByZXZpc2Ug
Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdCgpIHNvIHRoYXQgdGhpcyBjYW4gYmUgZG9uZSBpbiBh
IHNpbmdsZQogLy8gcGFzcyBpbnNpZGUgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWw8PigpLgotdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZT4KLXN0YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNp
YmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5
ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK3N0YXRpYyB2b2lkIHdhbGtMYXll
cnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hl
YXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYgQ0NMYXllckl0
ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKQEAgLTQ4NywxNCArNDg1LDE0IEBAIHN0YXRpYyB2b2lkIHdhbGtMYXll
cnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVy
VHlwCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyQ2hyb21pdW0qIHJvb3RM
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+JiBsYXllckxpc3QsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKLSAgICBXZWJD
b3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIHZvaWQqPihsYXllciwgcm9vdExheWVyLCBw
YXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGxheWVyTGlzdCwgMCwgbWF4VGV4dHVyZVNpemUpOwotICAgIHdhbGtMYXllcnNBbmRDYWxjdWxh
dGVWaXNpYmxlTGF5ZXJSZWN0czxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+
KHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCB2b2lkPihsYXllciwgcm9v
dExheWVyLCBwYXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGxheWVyTGlzdCwgMCwgbWF4VGV4dHVyZVNpemUpOworICAgIHdhbGtMYXllcnNB
bmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4ocmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxheWVyLCBDQ0xheWVySW1wbCog
cm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0
cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxD
Q0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlciwgaW50
IG1heFRleHR1cmVTaXplKQordm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGF5ZXIsIENDTGF5ZXJJbXBs
KiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8Q0NM
YXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4m
IGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6
ZSkKIHsKLSAgICBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVyU29ydGVyPihsYXllciwgcm9vdExh
eWVyLCBwYXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGxheWVyTGlzdCwgbGF5ZXJTb3J0ZXIsIG1heFRleHR1cmVTaXplKTsKLSAgICB3YWxr
TGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8Q0NMYXllckltcGwsIENDUmVuZGVy
U3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1w
bCo+LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIsIHBh
cmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
bGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOworICAgIHdhbGtMYXllcnNB
bmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4sIENDUmVuZGVyU3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmgKaW5kZXggMmUwY2JjZjJjNTg1ZTgyMTVkMjg2ZGVlOWI2MWU1MzUxODBjZmZhZC4uZGYyM2Nk
MDFmZWFiNTg0ZTViYzhjNjdhYTU2NDJkZmEyMzdiNjA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJsZUxh
eWVyUmVjdChMYXllclR5cGUqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShMYXllckNocm9taXVtKiwgTGF5ZXJDaHJvbWl1bSogcm9vdExh
eWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4mIGxheWVyTGlzdCwgaW50IG1heFRleHR1cmVTaXplKTsKLSAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBD
Q0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50
TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwg
VmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVj
dG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVyKiwgaW50
IG1heFRleHR1cmVTaXplKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIENDTGF5
ZXJTb3J0ZXIqLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlPiBzdGF0aWMgYm9vbCByZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldChM
YXllclR5cGUqLCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGU0NmFlMzI0OWYzODE1Y2Q5YjAxOTFhOTI4NzFm
YTE3ZjJhOWRiODYuLmRmNzVhODA3NDE5OTVjMGIyMjQyNzQxNjczNWJmMzMyODc2YzNkNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00OSw2ICs0OSw3IEBA
IENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3NvdXJjZUZyYW1lTnVtYmVyKC0xKQogICAgICwgbV9mcmFtZU51bWJlcigwKQorICAgICwgbV9z
Y3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zp
c2libGUodHJ1ZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKQEAgLTE0
NSw3ICsxNDYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYWNrRGFtYWdlRm9yQWxs
U3VyZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsCiAgICAgLy8gZGFtYWdlIHJlY3Qu
IFRoZSByb290IGRhbWFnZSByZWN0IGlzIHRoZW4gdXNlZCB0byBzY2lzc29yIGVhY2ggc3VyZmFj
ZS4KIAogICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAg
ICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFj
ZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdOwogICAgICAgICBD
Q1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRl
clN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICByZW5k
ZXJTdXJmYWNlLT5kYW1hZ2VUcmFja2VyKCktPnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUocmVu
ZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIHJlbmRlclN1cmZhY2VMYXllci0+aWQoKSwgcmVuZGVy
U3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSk7CkBAIC0yMTAsNyArMjExLDcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYg
cGFzc2VzKQogICAgIG1fcm9vdERhbWFnZVJlY3QgPSByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFj
ZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAKICAgICBmb3IgKGlu
dCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZh
Y2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgQ0NMYXllckltcGwqIHJl
bmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XS5n
ZXQoKTsKKyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1
cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XTsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiBy
ZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKICAg
ICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJl
bmRlclN1cmZhY2UpOwpAQCAtMjIyLDcgKzIyMyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcykKIAogICAg
ICAgICBjb25zdCBDQ0xheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXgg
PCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIENDTGF5ZXJJ
bXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEND
TGF5ZXJJbXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XTsKICAgICAgICAgICAgIGlm
IChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIApAQCAtMzMyLDcgKzMzMyw3IEBAIHN0YXRpYyBDQ0xheWVySW1wbCogZmluZFNj
cm9sbExheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
bGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcihQYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllckltcGwgPSBsYXllcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDVlZTAzOTlmNWI0NTcyMjVh
OTFkZmY2Yjc3N2NkNWQ4YTc2ZDZhOWYuLmRiMTkyODAxY2VmMWI1ZDUwNTdjNjFjMDI4MDg5NDJh
NDBhMDAwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTkyLDkg
KzkyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3Qg
SW50UmVjdCYpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdExheWVySW1wbC5nZXQoKTsgfQotICAgIHZvaWQgc2V0Um9vdExheWVyKFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+KTsKKyAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPik7CisgICAgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcmVsZWFzZVJvb3RMYXllcigp
IHsgcmV0dXJuIG1fcm9vdExheWVySW1wbC5yZWxlYXNlKCk7IH0KIAotICAgIENDTGF5ZXJJbXBs
KiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXJJbXBsLmdldCgpOyB9
CisgICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxM
YXllckltcGw7IH0KIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJs
ZTsgfQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKQEAgLTEyNiw3ICsxMjcsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IENDTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVj
dG9yPENDTGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZURl
bHRhKGZsb2F0KTsKICAgICB2b2lkIGFwcGx5UGFnZVNjYWxlRGVsdGFUb1Njcm9sbExheWVyKCk7
CkBAIC0xMzgsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkg
Y29uc3Q7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVy
ZXI7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBtX3Njcm9sbExheWVySW1wbDsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IG1fcm9vdExheWVySW1wbDsKKyAgICBDQ0xheWVySW1wbCogbV9zY3JvbGxMYXllckltcGw7CiAg
ICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAg
ICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAppbmRleCAz
OWE5NTk1MWRkZjNiYzlmNDQ5NzU0NDI3MjI5ZTVjNTkzYzI4N2M3Li45ZDlhNGRkMTA0ZTk5MjM4
MDQ4Y2MzYzU2ZGIxMWM4MzhhMGNjZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBs
LmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1BsdWdp
bkxheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q0NQbHVnaW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NQbHVnaW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENDUGx1Z2luTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+Q0NQbHVnaW5MYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApp
bmRleCA0MzdhOTFjYzAzODkwOWY5MjU1MDM2YjA0ZTFlMTRkMTZkOTFjYmMxLi4zMTVjOWRkYzE5
MDRkMWE4MDE4MDM4ZGZiM2U5ZTZiOTgwMDI4NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25z
dCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogCiAgICAgdm9pZCBjbGVhckxheWVyTGlzdCgpIHsg
bV9sYXllckxpc3QuY2xlYXIoKTsgfQotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4m
IGxheWVyTGlzdCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CisgICAgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4mIGxheWVyTGlzdCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CiAKICAgICB2b2lkIHNl
dE1hc2tMYXllcihDQ0xheWVySW1wbCogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFza0xh
eWVyOyB9CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fb3JpZ2luVHJhbnNmb3JtOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJz
OwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+IG1fbGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJMaXN0Owog
CiAgICAgT3duUHRyPENDRGFtYWdlVHJhY2tlcj4gbV9kYW1hZ2VUcmFja2VyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IGM3ZWRjMThiMmMyODRjMjI4YTky
MTU3YTZhOTdjMTkzNDViOGZiN2YuLjJlNzQ0MTY2NmY5OWYzNjk4MTkyNTRhMGM0NTcwYzdkNjZk
NmJjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0zNSw5
ICszNSw5IEBAIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1NvbGlkQ29sb3JMYXllckltcGwoaWQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29sb3JMYXllckltcGwoaWQp
KTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA3YWQ3MTU5OWIyMTM2NTg1OGExYzVhNWY3YTlj
ZjQyNDFlYTA2OGIwLi43ZTYzN2NmZmI0Y2M3YmY3YmRhYWY5ZDYwOWJkMmEzNTYxNDlmZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC0zNyw5ICszNyw5IEBAIGNsYXNzIERy
YXdhYmxlVGlsZTsKIAogY2xhc3MgQ0NUaWxlZExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1w
bCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gY3Jl
YXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVh
dGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1RpbGVkTGF5
ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1w
bChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCAxODJmN2I1ODI3YzkxY2JmZmVlNWQzYmFlYWQx
MDg1MWY2ZmZiYTk1Li5mYzFiMGQwOGYzZTg5YTVlMmYwMWM0ZGUyNmEzMjA1Zjk1Njk5MmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC00MCw5ICs0MCw5IEBAIHRlbXBsYXRl
PGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+IGNsYXNzIFByb2dyYW1C
aW5kaW5nOwogY2xhc3MgQ0NWaWRlb0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NWaWRlb0xheWVySW1wbD4gY3JlYXRl
KGludCBpZCwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkLCBWaWRlb0ZyYW1lUHJvdmlkZXIq
IHByb3ZpZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ1ZpZGVvTGF5
ZXJJbXBsKGlkLCBwcm92aWRlcikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVmlk
ZW9MYXllckltcGwoaWQsIHByb3ZpZGVyKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9M
YXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0RhbWFnZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NE
YW1hZ2VUcmFja2VyVGVzdC5jcHAKaW5kZXggYTlmN2IxYzFhMWU4OWYxZGJjZjlmNTAzMzRjMDVm
M2ExMzNlMDM4YS4uNDcyNGNhMGFmOTRmMDM2NDVkMDBlM2M2NjIxOGY5MzMzZmI2YzI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRl
c3QuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwog
CiBuYW1lc3BhY2UgewogCi12b2lkIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkoQ0NMYXllckltcGwqIHJvb3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4m
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit2b2lkIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIHJvb3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+
JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIENDTGF5ZXJTb3J0ZXIgbGF5ZXJTb3J0
ZXI7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDQ0xheWVySW1wbD4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXll
ckltcGwqPiBkdW1teUxheWVyTGlzdDsKICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKIAogICAgIC8vIFNhbml0eSBjaGVjazogVGhlIHRlc3QgaXRzZWxmIHNob3VsZCBjcmVhdGUg
dGhlIHJvb3QgbGF5ZXIncyByZW5kZXIgc3VyZmFjZSwgc28KQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKENDTGF5ZXJJbXBsKiByb290KQogICAgIC8vICAgMi4g
dXBkYXRpbmcgYWxsIGRhbWFnZSB0cmFja2VycyBpbiB0aGUgY29ycmVjdCBvcmRlcgogICAgIC8v
ICAgMy4gcmVzZXR0aW5nIGFsbCB1cGRhdGVSZWN0cyBhbmQgcHJvcGVydHlDaGFuZ2VkIGZsYWdz
IGZvciBhbGwgbGF5ZXJzIGFuZCBzdXJmYWNlcy4KIAotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwq
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkocm9vdCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKICAgICAv
LyBJdGVyYXRlIGJhY2stdG8tZnJvbnQsIHNvIHRoYXQgZGFtYWdlIGNvcnJlY3RseSBwcm9wYWdh
dGVzIGZyb20gZGVzY2VuZGFudCBzdXJmYWNlcyB0byBhbmNlc3RvcnMuCkBAIC03NiwxMCArNzYs
MTAgQEAgdm9pZCBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKENDTGF5ZXJJbXBsKiByb290KQogICAg
IHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQorUGFzc093blB0
cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiB7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwogCiAgICAgcm9v
dC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICByb290LT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtOTIsMjIgKzkyLDIyIEBAIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQogICAgIGNoaWxkLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGNoaWxkLT5zZXRCb3VuZHMo
SW50U2l6ZSgzMCwgMzApKTsKICAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAg
IHJvb3QtPmFkZENoaWxkKGNoaWxkKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNl
KCkpOwogCiAgICAgcmV0dXJuIHJvb3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCitQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiB7CiAgICAgLy8gVGhpcyB0
ZXN0IHRyZWUgaGFzIHR3byByZW5kZXIgc3VyZmFjZXM6IG9uZSBmb3IgdGhlIHJvb3QsIGFuZCBv
bmUgZm9yCiAgICAgLy8gY2hpbGQxLiBBZGRpdGlvbmFsbHksIHRoZSByb290IGhhcyBhIHNlY29u
ZCBjaGlsZCBsYXllciwgYW5kIGNoaWxkMSBoYXMgdHdvCiAgICAgLy8gY2hpbGRyZW4gb2YgaXRz
IG93bi4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDIpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgzKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQyID0gQ0NM
YXllckltcGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxk
MSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFu
ZENoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CiAKICAgICByb290LT5zZXRQb3NpdGlv
bihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQ6Onplcm8oKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiAgICAgZ3JhbmRDaGlsZDItPnNldEJv
dW5kcyhJbnRTaXplKDYsIDgpKTsKICAgICBncmFuZENoaWxkMi0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogCi0gICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMSk7Ci0gICAgY2hpbGQxLT5h
ZGRDaGlsZChncmFuZENoaWxkMik7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICBy
b290LT5hZGRDaGlsZChjaGlsZDIpOworICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDEu
cmVsZWFzZSgpKTsKKyAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQyLnJlbGVhc2UoKSk7
CisgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQxLnJlbGVhc2UoKSk7CisgICAgcm9vdC0+YWRkQ2hp
bGQoY2hpbGQyLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gcm9vdC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3Vy
ZmFjZSgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aE9uZVN1cmZhY2UoKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRl
c3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBj
cmVhdGVUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CiAKICAgICAvLyBTZXR1cCBpbmNsdWRlcyBn
b2luZyBwYXN0IHRoZSBmaXJzdCBmcmFtZSB3aGljaCBhbHdheXMgZGFtYWdlcyBldmVyeXRoaW5n
LCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGFjdHVhbGx5IHBlcmZvcm0gc3BlY2lmaWMgdGVzdHMu
CkBAIC0xNTYsOSArMTU2LDkgQEAgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKICAgICByZXR1cm4gcm9vdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJl
ZVdpdGhUd29TdXJmYWNlcygpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3Jl
YXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwogCiAgICAgLy8gU2V0dXAgaW5j
bHVkZXMgZ29pbmcgcGFzdCB0aGUgZmlyc3QgZnJhbWUgd2hpY2ggYWx3YXlzIGRhbWFnZXMgZXZl
cnl0aGluZywgc28KICAgICAvLyB0aGF0IHdlIGNhbiBhY3R1YWxseSBwZXJmb3JtIHNwZWNpZmlj
IHRlc3RzLgpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCBz
YW5pdHlDaGVja1Rlc3RUcmVlV2l0aE9uZVN1cmZhY2UpCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRo
YXQgdGhlIHNpbXBsZSB0ZXN0IHRyZWUgd2lsbCBhY3R1YWxseSBwcm9kdWNlIHRoZSBleHBlY3Rl
ZCByZW5kZXIKICAgICAvLyBzdXJmYWNlcyBhbmQgbGF5ZXIgbGlzdHMuCiAKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2Uo
KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVl
V2l0aE9uZVN1cmZhY2UoKTsKIAogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDIp
LCByb290LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLnNpemUoKSk7CiAgICAgRVhQRUNU
X0VRKDEsIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KClbMF0tPmlkKCkpOwpAQCAt
MTkzLDEwICsxOTMsMTAgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHNhbml0eUNoZWNr
VGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMpCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgdGhlIGNv
bXBsZXggdGVzdCB0cmVlIHdpbGwgYWN0dWFsbHkgcHJvZHVjZSB0aGUgZXhwZWN0ZWQgcmVuZGVy
CiAgICAgLy8gc3VyZmFjZXMgYW5kIGxheWVyIGxpc3RzLgogCi0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hp
bGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IHJvb3QtPmNoaWxk
cmVuKClbMV07CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV0uZ2V0
KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdCA9IGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAgICAgRmxvYXRSZWN0
IHJvb3REYW1hZ2VSZWN0ID0gcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCkt
PmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAKQEAgLTIxMiw4ICsyMTIsOCBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJlZVdpdGhUd29TdXJmYWNlcykKIAogVEVT
VF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclVwZGF0ZVJlY3RzKQogewot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRo
T25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSByb290LT5jaGls
ZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVw
VGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3Qt
PmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBDQVNFIDE6IFNldHRpbmcgdGhlIHVwZGF0
ZSByZWN0IHNob3VsZCBjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBkYW1hZ2UgdG8gdGhlIHN1cmZh
Y2UuCiAgICAgLy8KQEAgLTI0Myw4ICsyNDMsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JQcm9wZXJ0eUNoYW5nZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0g
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVT
dXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5n
ZXQoKTsKIAogICAgIC8vIENBU0UgMTogVGhlIGxheWVyJ3MgcHJvcGVydHkgY2hhbmdlZCBmbGFn
IHRha2VzIHByaW9yaXR5IG92ZXIgdXBkYXRlIHJlY3QuCiAgICAgLy8KQEAgLTI4NCw4ICsyODQs
OCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3Jt
ZWRMYXllcikKICAgICAvLyBJZiBhIGxheWVyIGlzIHRyYW5zZm9ybWVkLCB0aGUgZGFtYWdlIHJl
Y3Qgc2hvdWxkIHN0aWxsIGVuY2xvc2UgdGhlIGVudGlyZQogICAgIC8vIHRyYW5zZm9ybWVkIGxh
eWVyLgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJv
b3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRl
QW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxk
ID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHJvdGF0aW9uOwogICAgIHJvdGF0aW9uLnJvdGF0ZSg0NSk7CkBAIC0zMTcsMTAgKzMxNywxMSBA
QCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRM
YXllcikKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGlu
Z0FuZFJlbW92aW5nTGF5ZXIpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3Jl
YXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIEND
TGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIE93
blB0cjxDQ0xheWVySW1wbD4gb3BDaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAg
IENDTGF5ZXJJbXBsKiBjaGlsZDIgPSBvcENoaWxkMi5nZXQoKTsKICAgICBjaGlsZDItPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoNDAwLCAzODApKTsKICAgICBjaGlsZDItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgY2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4
KSk7CkBAIC0zMjgsNyArMzI5LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlm
eURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiAKICAgICAvLyBDQVNFIDE6IEFkZGlu
ZyBhIG5ldyBsYXllciBzaG91bGQgY2F1c2UgdGhlIGFwcHJvcHJpYXRlIGRhbWFnZS4KICAgICAv
LwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMik7CisgICAgcm9vdC0+YWRkQ2hpbGQob3BDaGls
ZDIucmVsZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwog
CiAgICAgLy8gU2FuaXR5IGNoZWNrIC0gYWxsIDMgbGF5ZXJzIHNob3VsZCBiZSBvbiB0aGUgc2Ft
ZSByZW5kZXIgc3VyZmFjZTsgcmVuZGVyIHN1cmZhY2VzIGFyZSB0ZXN0ZWQgZWxzZXdoZXJlLgpA
QCAtMzUzLDE1ICszNTQsMTYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURh
bWFnZUZvckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxheWVycykKIHsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVT
dXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMyk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkMiA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMyk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IG9wQ2hpbGQyLmdldCgpOwog
ICAgIGNoaWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0MDAsIDM4MCkpOwogICAgIGNoaWxk
Mi0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICBjaGlsZDItPnNldEJv
dW5kcyhJbnRTaXplKDYsIDgpKTsKICAgICBjaGlsZDItPnNldERyYXdzQ29udGVudCh0cnVlKTsK
LSAgICByb290LT5hZGRDaGlsZChjaGlsZDIpOworICAgIHJvb3QtPmFkZENoaWxkKG9wQ2hpbGQy
LnJlbGVhc2UoKSk7CiAKICAgICAvLyBJbiB0aGlzIHRlc3Qgd2UgZG9uJ3Qgd2FudCB0aGUgYWJv
dmUgdHJlZSBtYW5pcHVsYXRpb24gdG8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzYW1lIGZy
YW1lLgogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CkBAIC0zNzgsMTAg
KzM4MCwxMCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTXVs
dGlwbGVMYXllcnMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VG
b3JOZXN0ZWRTdXJmYWNlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVh
dGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGdyYW5kQ2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1
cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV0uZ2V0
KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS0+
Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAg
IEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNDE1LDkgKzQxNyw5IEBAIFRFU1RfRihD
Q0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JTdXJmYWNlQ2hhbmdlRnJvbURlc2Nl
bmRhbnRMYXllcikKICAgICAvLyBUaGlzIGlzIGEgdHJpY2t5IGNhc2UsIHNpbmNlIG9ubHkgdGhl
IGZpcnN0IGdyYW5kQ2hpbGQgY2hhbmdlcywgYnV0IHRoZSBlbnRpcmUKICAgICAvLyBzdXJmYWNl
IHNob3VsZCBiZSBtYXJrZWQgZGlydHkuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBd
OworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVX
aXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRy
ZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDEgPSByb290LT5jaGls
ZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFn
ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC00NDcsOSArNDQ5LDgg
QEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclN1cmZhY2VDaGFu
Z2VGcm9tQW5jZXN0b3JMYXllcikKICAgICAvLyAgICAgICAgc2hvdWxkIGJlIGNvbXBsZXRlbHkg
dW5jaGFuZ2VkLCBzaW5jZSB3ZSBhcmUgb25seSB0cmFuc2Zvcm1pbmcgaXQsIHdoaWxlIHRoZQog
ICAgIC8vICAgICAgICByb290IHN1cmZhY2Ugd291bGQgYmUgZGFtYWdlZCBhcHByb3ByaWF0ZWx5
LgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJl
ZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9v
dC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0g
cm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllcklt
cGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAg
Q0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAgRmxv
YXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7CiAK
QEAgLTQ2OSw4ICs0NzAsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFt
YWdlRm9yU3VyZmFjZUNoYW5nZUZyb21BbmNlc3RvckxheWVyKQogCiBURVNUX0YoQ0NEYW1hZ2VU
cmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdSZW5kZXJTdXJmYWNl
cykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RU
cmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hp
bGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1h
Z2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNTEwLDggKzUxMSw4
IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRS
ZW1vdmluZ1JlbmRlclN1cmZhY2VzKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5Tm9EYW1hZ2VXaGVuTm90aGluZ0NoYW5nZWQpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZh
Y2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0
KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERh
bWFnZVJlY3Q7CiAKQEAgLTUzNCw4ICs1MzUsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5Tm9EYW1hZ2VXaGVuTm90aGluZ0NoYW5nZWQpCiAKIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZUZvclVwZGF0ZVJlY3RUaGF0RG9lc05vdERyYXdDb250
ZW50KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVz
dFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9
IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3Jl
YXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBj
aGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERh
bWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC01NTEsMTAgKzU1
MiwxMCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5Tm9EYW1hZ2VGb3JVcGRh
dGVSZWN0VGhhdERvZXNOb3REcmF3Q29udGVudCkKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRl
c3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2EpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDIgPSBjaGlsZDEtPmNoaWxkcmVuKClbMV07Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhU
d29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigp
WzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hpbGRy
ZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDIgPSBjaGlsZDEtPmNo
aWxkcmVuKClbMV0uZ2V0KCk7CiAKICAgICAvLyBEYW1hZ2Ugb24gYSBzdXJmYWNlIHRoYXQgaGFz
IGEgcmVmbGVjdGlvbiBzaG91bGQgY2F1c2UgdGhlIHRhcmdldCBzdXJmYWNlIHRvCiAgICAgLy8g
cmVjZWl2ZSB0aGUgc3VyZmFjZSdzIGRhbWFnZSBhbmQgdGhlIHN1cmZhY2UncyByZWZsZWN0ZWQg
ZGFtYWdlLgpAQCAtNTYzLDI0ICs1NjQsMjYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvclJlcGxpY2EpCiAgICAgLy8gb2YgY2hpbGQxJ3Mgc3VyZmFjZS4gVGhp
cyB3YXksIHdlIGNhbiB0ZXN0IHJlZmxlY3Rpb24gY2hhbmdlcyB3aXRob3V0IGNoYW5naW5nCiAg
ICAgLy8gY29udGVudEJvdW5kcyBvZiB0aGUgc3VyZmFjZS4KICAgICBncmFuZENoaWxkMi0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgxODAsIDE4MCkpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
Z3JhbmRDaGlsZDMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDYpOworICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gb3BHcmFuZENoaWxkMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXll
ckltcGwqIGdyYW5kQ2hpbGQzID0gb3BHcmFuZENoaWxkMy5nZXQoKTsKICAgICBncmFuZENoaWxk
My0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyNDAsIDI0MCkpOwogICAgIGdyYW5kQ2hpbGQzLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hpbGQzLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICBncmFuZENoaWxkMy0+c2V0RHJhd3NDb250ZW50
KHRydWUpOwogICAgIGNoaWxkMS0+c2V0T3BhY2l0eSgwLjUpOwotICAgIGNoaWxkMS0+YWRkQ2hp
bGQoZ3JhbmRDaGlsZDMpOworICAgIGNoaWxkMS0+YWRkQ2hpbGQob3BHcmFuZENoaWxkMy5yZWxl
YXNlKCkpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAv
LyBDQVNFIDE6IGFkZGluZyBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBncmFu
ZENoaWxkMS4KICAgICAvLwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBs
aWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9w
R3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBDQ0xheWVy
SW1wbCogZ3JhbmRDaGlsZDFSZXBsaWNhID0gb3BHcmFuZENoaWxkMVJlcGxpY2EuZ2V0KCk7CiAg
ICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwog
ICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygp
KTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOwogICAgIHJlZmxlY3Rpb24u
c2NhbGUzZCgtMS4wLCAxLjAsIDEuMCk7CiAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRUcmFu
c2Zvcm0ocmVmbGVjdGlvbik7Ci0gICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihncmFu
ZENoaWxkMVJlcGxpY2EpOworICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIob3BHcmFu
ZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJv
b3QuZ2V0KCkpOwogCiAgICAgRmxvYXRSZWN0IGdyYW5kQ2hpbGREYW1hZ2VSZWN0ID0gZ3JhbmRD
aGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVj
dCgpOwpAQCAtNjE0LDcgKzYxNyw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJp
ZnlEYW1hZ2VGb3JSZXBsaWNhKQogCiAgICAgLy8gQ0FTRSAzOiByZW1vdmluZyB0aGUgcmVmbGVj
dGlvbiBzaG91bGQgY2F1c2UgdGhlIGVudGlyZSByZWdpb24gaW5jbHVkaW5nIHJlZmxlY3Rpb24K
ICAgICAvLyAgICAgICAgIHRvIGRhbWFnZSB0aGUgdGFyZ2V0IHN1cmZhY2UuCi0gICAgZ3JhbmRD
aGlsZDEtPnNldFJlcGxpY2FMYXllcigwKTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxh
eWVyKG51bGxwdHIpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAg
ICAgQVNTRVJUX0VRKG9sZENvbnRlbnRSZWN0LndpZHRoKCksIGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpLT5jb250ZW50UmVjdCgpLndpZHRoKCkpOwogICAgIEFTU0VSVF9FUShvbGRDb250ZW50UmVj
dC5oZWlnaHQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkuaGVpZ2h0
KCkpOwpAQCAtNjI5LDI3ICs2MzIsMjkgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZl
cmlmeURhbWFnZUZvclJlcGxpY2EpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJp
ZnlEYW1hZ2VGb3JNYXNrKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5
ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBJbiB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGFtYWdlIHRyYWNrZXIsIGNoYW5nZXMg
dG8gbWFzayBsYXllcnMgc2hvdWxkCiAgICAgLy8gZGFtYWdlIHRoZSBlbnRpcmUgY29ycmVzcG9u
ZGluZyBzdXJmYWNlLgogCiAgICAgLy8gU2V0IHVwIHRoZSBtYXNrIGxheWVyLgotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gbWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IG9wTWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsK
KyAgICBDQ0xheWVySW1wbCogbWFza0xheWVyID0gb3BNYXNrTGF5ZXIuZ2V0KCk7CiAgICAgbWFz
a0xheWVyLT5zZXRQb3NpdGlvbihjaGlsZC0+cG9zaXRpb24oKSk7CiAgICAgbWFza0xheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIG1hc2tMYXllci0+c2V0Qm91
bmRzKGNoaWxkLT5ib3VuZHMoKSk7Ci0gICAgY2hpbGQtPnNldE1hc2tMYXllcihtYXNrTGF5ZXIp
OworICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIob3BNYXNrTGF5ZXIucmVsZWFzZSgpKTsKIAogICAg
IC8vIEFkZCBvcGFjaXR5IGFuZCBhIGdyYW5kQ2hpbGQgc28gdGhhdCB0aGUgcmVuZGVyIHN1cmZh
Y2UgcGVyc2lzdHMgZXZlbiBhZnRlciB3ZSByZW1vdmUgdGhlIG1hc2suCiAgICAgY2hpbGQtPnNl
dE9wYWNpdHkoMC41KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDQpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BHcmFuZENoaWxk
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZCA9
IG9wR3JhbmRDaGlsZC5nZXQoKTsKICAgICBncmFuZENoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDIuMCwgMi4wKSk7CiAgICAgZ3JhbmRDaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDo6emVybygpKTsKICAgICBncmFuZENoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgyLCAyKSk7CiAg
ICAgZ3JhbmRDaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIGNoaWxkLT5hZGRDaGls
ZChncmFuZENoaWxkKTsKKyAgICBjaGlsZC0+YWRkQ2hpbGQob3BHcmFuZENoaWxkLnJlbGVhc2Uo
KSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIFNh
bml0eSBjaGVjayB0aGF0IGEgbmV3IHN1cmZhY2Ugd2FzIGNyZWF0ZWQgZm9yIHRoZSBjaGlsZC4K
QEAgLTY4NSw3ICs2OTAsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFt
YWdlRm9yTWFzaykKICAgICBFWFBFQ1RfVFJVRShjaGlsZERhbWFnZVJlY3QuaXNFbXB0eSgpKTsK
IAogICAgIC8vIFRoZW4gdGVzdCBtYXNrIHJlbW92YWwuCi0gICAgY2hpbGQtPnNldE1hc2tMYXll
cigwKTsKKyAgICBjaGlsZC0+c2V0TWFza0xheWVyKG51bGxwdHIpOwogICAgIEFTU0VSVF9UUlVF
KGNoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZy
YW1lKHJvb3QuZ2V0KCkpOwogCkBAIC02OTgsMjggKzcwMywzMCBAQCBURVNUX0YoQ0NEYW1hZ2VU
cmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tl
clRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogewotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hpbGRyZW4oKVswXTsK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVu
KClbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGls
ZHJlbigpWzBdLmdldCgpOwogCiAgICAgLy8gQ2hhbmdlcyB0byBhIHJlcGxpY2EncyBtYXNrIHNo
b3VsZCBub3QgZGFtYWdlIHRoZSBvcmlnaW5hbCBzdXJmYWNlLCBiZWNhdXNlIGl0IGlzCiAgICAg
Ly8gbm90IG1hc2tlZC4gQnV0IGl0IGRvZXMgZGFtYWdlIHRoZSBhbmNlc3RvciB0YXJnZXQgc3Vy
ZmFjZS4KIAogICAgIC8vIENyZWF0ZSBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBv
ZiBncmFuZENoaWxkMS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGlj
YSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcEdy
YW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXllcklt
cGwqIGdyYW5kQ2hpbGQxUmVwbGljYSA9IG9wR3JhbmRDaGlsZDFSZXBsaWNhLmdldCgpOwogICAg
IGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBncmFuZENoaWxkMVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVmbGVjdGlvbjsKICAgICByZWZsZWN0aW9uLnNj
YWxlM2QoLTEuMCwgMS4wLCAxLjApOwogICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0VHJhbnNm
b3JtKHJlZmxlY3Rpb24pOwotICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIoZ3JhbmRD
aGlsZDFSZXBsaWNhKTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKG9wR3JhbmRD
aGlsZDFSZXBsaWNhLnJlbGVhc2UoKSk7CiAKICAgICAvLyBTZXQgdXAgdGhlIG1hc2sgbGF5ZXIg
b24gdGhlIHJlcGxpY2EgbGF5ZXIKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FNYXNr
TGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDcpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
b3BSZXBsaWNhTWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICBDQ0xheWVy
SW1wbCogcmVwbGljYU1hc2tMYXllciA9IG9wUmVwbGljYU1hc2tMYXllci5nZXQoKTsKICAgICBy
ZXBsaWNhTWFza0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIHJl
cGxpY2FNYXNrTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAg
cmVwbGljYU1hc2tMYXllci0+c2V0Qm91bmRzKGdyYW5kQ2hpbGQxLT5ib3VuZHMoKSk7Ci0gICAg
Z3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIocmVwbGljYU1hc2tMYXllcik7CisgICAg
Z3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIob3BSZXBsaWNhTWFza0xheWVyLnJlbGVh
c2UoKSk7CiAKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCkBAIC03
MzgsNyArNzQ1LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZv
clJlcGxpY2FNYXNrKQogCiAgICAgLy8gQ0FTRSAyOiByZW1vdmluZyB0aGUgcmVwbGljYSBtYXNr
IGRhbWFnZXMgb25seSB0aGUgcmVmbGVjdGVkIHJlZ2lvbiBvbiB0aGUgdGFyZ2V0IHN1cmZhY2Uu
CiAgICAgLy8KLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcigwKTsKKyAgICBn
cmFuZENoaWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcihudWxscHRyKTsKICAgICBlbXVsYXRlRHJh
d2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCiAgICAgZ3JhbmRDaGlsZERhbWFnZVJlY3QgPSBn
cmFuZENoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1h
Z2VSZWN0KCk7CkBAIC03NTAsOCArNzU3LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlV2hlblJlc2V0KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9v
dCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwor
ICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAg
ICAvLyBDYXNlIDE6IFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgdHJhY2tlciBpcyBm
b3JjZWQgdG8gaGF2ZSBmdWxsIGRhbWFnZSwgdGhhdAogICAgIC8vICAgICAgICAgaXQgdGFrZXMg
cHJpb3JpdHkgb3ZlciBhbnkgb3RoZXIgcGFydGlhbCBkYW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMTZhMjVlMTJlOTc5
ZGQ2MDEyYzU2ODFhOWRlNGE0ZDg2ZDE2NDNkYi4uMjlkNzY1NTExYjE4Yzc2NzUwMDYyMzgwNmZh
NDM0Mjc0ZGQ1MzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllckltcGxUZXN0LmNwcApAQCAtNjUsMTQgKzY1LDEzIEBAIFRFU1QoQ0NMYXllckltcGxUZXN0
LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIHNldEltcGxUaHJlYWQ7CiAKICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgQ0NM
YXllckltcGwgdHJlZToKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDIpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMyk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxk
LT5hZGRDaGlsZChncmFuZENoaWxkKTsKLQotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlN
YXNrID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1
bW15UmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CisgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXllcklt
cGw+IG9wQ2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIENDTGF5ZXJJbXBsKiBj
aGlsZCA9IG9wQ2hpbGQuZ2V0KCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcEdyYW5kQ2hp
bGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxk
ID0gb3BHcmFuZENoaWxkLmdldCgpOworICAgIHJvb3QtPmFkZENoaWxkKG9wQ2hpbGQucmVsZWFz
ZSgpKTsKKyAgICBjaGlsZC0+YWRkQ2hpbGQob3BHcmFuZENoaWxkLnJlbGVhc2UoKSk7CiAKICAg
ICAvLyBBZGRpbmcgY2hpbGRyZW4gaXMgYW4gaW50ZXJuYWwgb3BlcmF0aW9uIGFuZCBzaG91bGQg
bm90IG1hcmsgbGF5ZXJzIGFzIGNoYW5nZWQuCiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVy
UHJvcGVydHlDaGFuZ2VkKCkpOwpAQCAtOTUsMTEgKzk0LDExIEBAIFRFU1QoQ0NMYXllckltcGxU
ZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlG
bG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290
LT5zZXRBbmNob3JQb2ludFooYXJiaXRyYXJ5TnVtYmVyKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRGaWx0ZXJzKGFyYml0cmFyeUZpbHRlcnMpKTsK
LSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tMYXll
cihkdW1teU1hc2spKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJv
b3QtPnNldE1hc2tMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDQpKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE9wYXF1ZSh0
cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRP
cGFjaXR5KGFyYml0cmFyeU51bWJlcikpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0UmVwbGljYUxheWVyKGR1bW15UmVwbGljYSkpOworICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UmVwbGljYUxheWVyKENDTGF5
ZXJJbXBsOjpjcmVhdGUoNSkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldFBvc2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9y
bShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKQEAgLTEzNCw5ICsxMzMsNyBAQCBURVNUKENDTGF5ZXJJ
bXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIC8vIG5v
dCBjYXVzZSBhbnkgY2hhbmdlLgogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRBbmNo
b3JQb2ludFooYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOwogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tzVG9C
b3VuZHModHJ1ZSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJlcGxpY2EpKTsKICAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRQb3NpdGlvbihhcmJpdHJh
cnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9D
SEFOR0Uocm9vdC0+c2V0UHJlc2VydmVzM0QodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFu
c2Zvcm0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
ckl0ZXJhdG9yVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJ
dGVyYXRvclRlc3QuY3BwCmluZGV4IGJmZjdlMWJhOTcxMTQ1NjhjYWJlMzk2Y2ZhZTc3NDZmMDcz
NDA5OGUuLjJmNWE3YTI1ZDllZDE2ZjJjYzQxOTgxY2JjNGEyZTY1NjUyODcxMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNw
cApAQCAtNjcsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIEVYUEVDVF9FUShjb250cmliLCBsYXll
ci0+bV9jb3VudFJlcHJlc2VudGluZ0NvbnRyaWJ1dGluZ1N1cmZhY2UpOyAgIFwKICAgICBFWFBF
Q1RfRVEoaXRzZWxmLCBsYXllci0+bV9jb3VudFJlcHJlc2VudGluZ0l0c2VsZik7CiAKLXR5cGVk
ZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IEZyb250VG9CYWNrOwotdHlwZWRl
ZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQmFja1RvRnJvbnQ7Cit0eXBlZGVm
IENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJv
bnRUb0JhY2s+IEZyb250VG9CYWNrOwordHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJv
bWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBCYWNrVG9Gcm9udDsKIAog
dm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpCiB7CkBAIC0xMzcsNyArMTM3LDcgQEAgVEVTVChDQ0xheWVySXRlcmF0
b3JUZXN0LCBzaW1wbGVUcmVlKQogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGxheWVyTGlzdDsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5
ZXIpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllci5nZXQoKSk7
CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocm9vdExheWVyLmdldCgpLCByb290TGF5ZXIuZ2V0KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCkBAIC0xODQsNyArMTg0LDcgQEAgVEVTVChDQ0xh
eWVySXRlcmF0b3JUZXN0LCBjb21wbGV4VHJlZSkKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBsYXllckxpc3Q7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocm9vdExheWVyKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5
ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LApAQCAtMjQzLDcgKzI0Myw3IEBA
IFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxleFRyZWVNdWx0aVN1cmZhY2UpCiAKICAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
ICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdC5hcHBlbmQocm9vdExheWVyLmdldCgpKTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIuZ2V0KCks
IHJvb3RMYXllci5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlz
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVz
dC5jcHAKaW5kZXggNjkzNDJjZGE3YzYzYjYxNTQ1MDc0NWVhYmQ4YjFkMWNkYmVmY2U1ZS4uYTUz
M2M5MzczODhlZWE1NmI3YTRhMWJjNjFjMWYyODIxYWJmZWNiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKQEAgLTE3NCwxMSAr
MTc0LDExIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQ
cmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICAvLyAgICAtIDMgYW5kIDQgZG8gbm90IGhhdmUgYSAz
ZCB6IGRpZmZlcmVuY2UsIGFuZCB0aGVyZWZvcmUgdGhlaXIgcmVsYXRpdmUgb3JkZXJpbmcgc2hv
dWxkIGJlIHJldGFpbmVkLgogICAgIC8vICAgIC0gMyBhbmQgNCBzaG91bGQgYmUgcmUtc29ydGVk
IHNvIHRoZXkgYXJlIGluIGZyb250IG9mIDEsIDIsIGFuZCA1LgogCi0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBsYXllcjEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gbGF5ZXIyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGxheWVyMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBsYXllcjQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gbGF5ZXI1ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IGxheWVyMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBsYXllcjIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gbGF5ZXIzID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IGxheWVyNCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBsYXllcjUgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwogCiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggQmVoaW5kTWF0cml4OwogICAgIEJlaGluZE1hdHJpeC50cmFu
c2xhdGUzZCgwLCAwLCAyKTsKQEAgLTIwNSwxMiArMjA1LDEyIEBAIFRFU1QoQ0NMYXllclNvcnRl
clRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQcmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBs
YXllcjUtPnNldERyYXdUcmFuc2Zvcm0oQmVoaW5kTWF0cml4KTsKICAgICBsYXllcjUtPnNldERy
YXdzQ29udGVudCh0cnVlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gbGF5
ZXJMaXN0OwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIxKTsKLSAgICBsYXllckxpc3QuYXBw
ZW5kKGxheWVyMik7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjMpOwotICAgIGxheWVyTGlz
dC5hcHBlbmQobGF5ZXI0KTsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyNSk7CisgICAgVmVj
dG9yPENDTGF5ZXJJbXBsKj4gbGF5ZXJMaXN0OworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIx
LmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMi5nZXQoKSk7CisgICAgbGF5ZXJM
aXN0LmFwcGVuZChsYXllcjMuZ2V0KCkpOworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXI0Lmdl
dCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyNS5nZXQoKSk7CiAKICAgICBBU1NFUlRf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig1KSwgbGF5ZXJMaXN0LnNpemUoKSk7CiAgICAgRVhQRUNU
X0VRKDEsIGxheWVyTGlzdFswXS0+aWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAppbmRleCBiMWZh
NzI5MTg0MDFlMzI0MGU0MWQxM2QyZTBjMjdkMGM1NmFkN2M1Li4zMTJmYTkxM2M4ZGQ1NGQzN2Vm
ODAwMGVhMGE3NDJjNWE2Yzk5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAgLTU4MCw3ICs1
ODAsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3Vs
bHNSZW5kZXJTdXJmYWNlcykKIAogICAgIC8vIEZJWE1FOiB3aGVuIHdlIGZpeCB0aGlzICJyb290
LWxheWVyIHNwZWNpYWwgY2FzZSIgYmVoYXZpb3IgaW4gQ0NMYXllclRyZWVIb3N0LCB3ZSB3aWxs
IGhhdmUgdG8gZml4IGl0IGhlcmUsIHRvby4KICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5h
cHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNjI0LDcgKzYyNCw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVk
ZWRSZWdpb24pCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3Bl
Y2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBm
aXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKIApAQCAtNjYxLDcgKzY2MSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24pCiAgICAgLy8gRklY
TUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBp
biBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAg
IHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1
cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNjk2LDcgKzY5
Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRo
aXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3Qs
IHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKICAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50Lmdl
dCgpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0
LCBkdW1teU1heFRleHR1cmVTaXplKTsKIApAQCAtNzM3LDcgKzczNyw3IEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoUm90
YXRlZFN1cmZhY2UpCiAgICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIg
c3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0
byBmaXggaXQgaGVyZSwgdG9vLgogICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250
ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKICAg
ICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Cisg
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50LmdldCgpKTsKIAogICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmNTk4OTNkZTkwNjQxOGY4Y2JkNzU3NDBh
ZTI5MzllMjNjYzIzNTBhLi44NWNjN2I5NGJkYzM3ZGViYjdkOTkyMTc5NTM4NTMzZDE5ZGUxZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNzYsMTYgKzc2LDE2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyhjb25zdCBJbnRTaXplJiBjb250ZW50U2l6
ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMCk7CisgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMCk7CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAg
ICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICAgICAgcm9v
dC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oY29udGVudFNpemUpOwotICAgICAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNvbnRlbnRzID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBjb250ZW50cyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAg
ICAgIGNvbnRlbnRzLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgICAgIGNvbnRlbnRzLT5z
ZXRCb3VuZHMoY29udGVudFNpemUpOwogICAgICAgICBjb250ZW50cy0+c2V0Q29udGVudEJvdW5k
cyhjb250ZW50U2l6ZSk7Ci0gICAgICAgIHJvb3QtPmFkZENoaWxkKGNvbnRlbnRzKTsKLSAgICAg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgICAgICByb290LT5hZGRDaGls
ZChjb250ZW50cy5yZWxlYXNlKCkpOworICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdC5yZWxlYXNlKCkpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtMTA1LDM3ICsxMDUsMzkg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YU5vTGF5ZXJzKQog
CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhVHJlZUJ1dE5vQ2hh
bmdlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3BSb290ID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICBDQ0xheWVySW1wbCogcm9vdCA9IG9wUm9vdC5nZXQoKTsKICAgICByb290
LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKTsKICAgICByb290LT5hZGRDaGlsZChD
Q0xheWVySW1wbDo6Y3JlYXRlKDIpKTsKICAgICByb290LT5jaGlsZHJlbigpWzFdLT5hZGRDaGls
ZChDQ0xheWVySW1wbDo6Y3JlYXRlKDMpKTsKICAgICByb290LT5jaGlsZHJlbigpWzFdLT5hZGRD
aGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDQpKTsKICAgICByb290LT5jaGlsZHJlbigpWzFdLT5j
aGlsZHJlbigpWzBdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDUpKTsKLSAgICBtX2hv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVy
KG9wUm9vdC5yZWxlYXNlKCkpOwogCi0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vy
c2l2ZShyb290LmdldCgpKTsKKyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZl
KHJvb3QpOwogCiAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAK
ICAgICBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAg
IEFTU0VSVF9FUShzY3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwgMHUpOwotICAgIGV4cGVjdENs
ZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0Q2xlYXJl
ZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290KTsKIAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJ
bXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNj
cm9sbHMuc2l6ZSgpLCAwdSk7Ci0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2
ZShyb290LmdldCgpKTsKKyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJv
b3QpOwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVw
ZWF0ZWRTY3JvbGxzKQogewogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKDIwLCAzMCk7CiAg
ICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgxMSwgLTE1KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEwKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IG9wUm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMTApOworICAgIENDTGF5ZXJJbXBsKiByb290
ID0gb3BSb290LmdldCgpOwogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0
aW9uKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldE1heFNj
cm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKICAgICByb290LT5zY3JvbGxCeShzY3Jv
bGxEZWx0YSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1faG9z
dEltcGwtPnNldFJvb3RMYXllcihvcFJvb3QucmVsZWFzZSgpKTsKIAogICAgIE93blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvOwogCkBAIC0xNTgsMTEgKzE2MCwxMSBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQog
CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFu
ZFJlZHJhdykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6
Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICByb290LT5zZXRT
Y3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9z
aXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihy
b290KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAg
IEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSksIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKICAgICBtX2hvc3RJbXBsLT5zY3JvbGxC
eShJbnRTaXplKDAsIDEwKSk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7CkBAIC0zMDIs
NyArMzA0LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJs
aWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsZW5kU3Rh
dGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmxlbmRT
dGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVD
aGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0
ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
KQogICAgIHsKQEAgLTM1MiwxNCArMzU0LDE2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBv
cFJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0g
b3BSb290LmdldCgpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkp
OwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERy
YXdzQ29udGVudChmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOwor
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJvb3QucmVsZWFzZSgpKTsKIAotICAgIFJl
ZlB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gbGF5ZXIxID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6
OmNyZWF0ZSgxKTsKLSAgICByb290LT5hZGRDaGlsZChsYXllcjEpOworICAgIE93blB0cjxCbGVu
ZFN0YXRlQ2hlY2tMYXllcj4gb3BMYXllcjEgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRl
KDEpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjEgPSBvcExheWVyMS5nZXQoKTsK
KyAgICByb290LT5hZGRDaGlsZChvcExheWVyMS5yZWxlYXNlKCkpOwogCiAgICAgLy8gT3BhcXVl
IGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRy
dWUpOwpAQCAtMzk4LDggKzQwMiw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
YmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0g
ICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBsYXllcjIgPSBCbGVuZFN0YXRlQ2hlY2tM
YXllcjo6Y3JlYXRlKDIpOwotICAgIGxheWVyMS0+YWRkQ2hpbGQobGF5ZXIyKTsKKyAgICBPd25Q
dHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IG9wTGF5ZXIyID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6
OmNyZWF0ZSgyKTsKKyAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogbGF5ZXIyID0gb3BMYXllcjIu
Z2V0KCk7CisgICAgbGF5ZXIxLT5hZGRDaGlsZChvcExheWVyMi5yZWxlYXNlKCkpOwogCiAgICAg
Ly8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+
c2V0T3BhcXVlKHRydWUpOwpAQCAtNTIxLDExICs1MjYsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFB0cihuZXcgRmFrZURyYXdhYmxlQ0NMYXllcklt
cGwoMSkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
IHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
cmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiAKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CkBAIC01NzEsOCArNTc2LDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgbGF5ZXJUcmVlSG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIGxheWVyVHJlZUhvc3RJ
bXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwogCi0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEp
KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gYWRvcHRSZWYobmV3IEZha2VEcmF3
YWJsZUNDTGF5ZXJJbXBsKDIpKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG9wUm9vdCA9IGFk
b3B0UHRyKG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKSk7CisgICAgQ0NMYXllckltcGwq
IHJvb3QgPSBvcFJvb3QuZ2V0KCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBvcENoaWxkID0g
YWRvcHRQdHIobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDIpKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQgPSBvcENoaWxkLmdldCgpOwogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDEyLCAxMykpOwogICAgIGNoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDAp
KTsKICAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUoMTQsIDE1KSk7CkBAIC01ODAsOCArNTg3
LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVz
RGFtYWdlUmVjdCkKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsK
ICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkpOwogICAgIHJvb3QtPnNldERy
YXdzQ29udGVudCh0cnVlKTsKLSAgICByb290LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgbGF5ZXJU
cmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICByb290LT5hZGRDaGlsZChvcENo
aWxkLnJlbGVhc2UoKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihvcFJv
b3QucmVsZWFzZSgpKTsKIAogICAgIC8vIEZpcnN0IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBz
aG91bGQgZ2V0IHN3YXBwZWQuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRl
c3QuY3BwCmluZGV4IGMzYjM2NmRkYTMyMzc0Njg2ODZmYmY4M2VkNGZlMzM5MGY4MmYzMzQuLjEy
MDE1ODdjNzhkZjdiNTg0MDI3NzRkZjBjNjkzZjRlZWRkZGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtNTQs
NyArNTQsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2Vz
QXJlVHJhY2tlZFByb3Blcmx5KQogICAgIC8vIFRoaXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9u
IHRoZSBjb3JyZWN0IHRocmVhZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
b3duaW5nTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIG93bmluZ0xh
eWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgQVNTRVJUX1RSVUUob3duaW5nTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0g
b3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKQEAgLTc0LDcgKzc0LDcgQEAgVEVTVChDQ1Jl
bmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlTdXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJm
YWNlLT5zZXRDbGlwUmVjdCh0ZXN0UmVjdCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJG
QUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KHRlc3RSZWN0
KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDEpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGR1bW15TWF0cml4OwogICAg
IGR1bW15TWF0cml4LnRyYW5zbGF0ZSgxLjAsIDIuMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmlu
ZGV4IDA1OWVmMmFkY2Y1NWVkM2JmYWE1MDc5MTRhNDEzMzQ3ODg2ZWVjNTQuLjAyZGM5MDhhYmRh
Nzc0NTNhNGZhNjlkZTJiOTZkM2RiOTA3OTdmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAt
NDYsNyArNDYsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeVRpbGlu
Z0NvbXBsZXRlQW5kTm9PdmVybGFwKQogICAgIEludFNpemUgbGF5ZXJTaXplID0gSW50U2l6ZSg4
MDAsIDYwMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclNpemUpOwogCi0gICAgUmVmUHRyPENDU29saWRDb2xvckxheWVySW1wbD4gbGF5
ZXIgPSBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NTb2xp
ZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDAp
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAg
IGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIApAQCAtNjYsNyArNjYsNyBAQCBURVNUKEND
U29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1
YWQpCiAgICAgSW50U2l6ZSBsYXllclNpemUgPSBJbnRTaXplKDEwMCwgMTAwKTsKICAgICBJbnRS
ZWN0IHZpc2libGVMYXllclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAK
LSAgICBSZWZQdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRDb2xvckxh
eWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxh
eWVyID0gQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhs
YXllclNpemUpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IodGVzdENvbG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHAKaW5kZXggZDU1YzBiYzE2NDRlMmE4OTA3NGYyYjg5ZjYxZWRmMjIwZjc4NmZjMy4uZmY3
ZGFhM2M5YjI3NmY1YTJkYTdhMzkzZGIxOGI1NWFkNDU4ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTM5
LDkgKzM5LDkgQEAgbmFtZXNwYWNlIHsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB0aWxlZCBsYXll
ciB3aXRoIHRleHR1cmVzIGZvciBhbGwgdGlsZXMgYW5kIGEgZGVmYXVsdAogLy8gdmlzaWJpbGl0
eSBvZiB0aGUgZW50aXJlIGxheWVyIHNpemUuCi1zdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVy
VGV4ZWxzKQorc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIo
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXll
clRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRleGVscykKIHsKLSAgICBSZWZQ
dHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoMCk7
CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6
Y3JlYXRlKDApOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVy
VGlsaW5nRGF0YTo6Y3JlYXRlKHRpbGVTaXplLCBib3JkZXJUZXhlbHMpOwogICAgIHRpbGVyLT5z
ZXRCb3VuZHMobGF5ZXJTaXplKTsKICAgICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwpA
QCAtNjgsNyArNjgsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0
KQogCiAgICAgLy8gVmVyaWZ5IGRlZmF1bHQgbGF5ZXIgZG9lcyBjcmVhdGVzIHF1YWRzCiAgICAg
ewotICAgICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0
aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwor
ICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAg
ICAgICBDQ1F1YWRMaXN0IHF1YWRzOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwpAQCAt
NzgsNyArNzgsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQog
CiAgICAgLy8gTGF5ZXIgd2l0aCBlbXB0eSB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8g
cXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNy
ZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRl
clRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0
ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyk7CiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7CiAK
ICAgICAgICAgQ0NRdWFkTGlzdCBxdWFkczsKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChDQ1RpbGVk
TGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgIC8vIExheWVyIHdpdGggbm9uLWlu
dGVyc2VjdGluZyB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0g
ICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVT
aXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAg
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAKICAgICAg
ICAgSW50UmVjdCBvdXRzaWRlQm91bmRzKEludFBvaW50KC0xMDAsIC0xMDApLCBJbnRTaXplKDUw
LCA1MCkpOwogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChvdXRzaWRlQm91bmRz
KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1
YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBza2lwcyBkcmF3IHByb2R1Y2VzIG5vIHF1YWRz
CiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVM
YXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhl
bHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXll
cih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMp
OwogICAgICAgICBsYXllci0+c2V0U2tpcHNEcmF3KHRydWUpOwogCiAgICAgICAgIENDUXVhZExp
c3QgcXVhZHM7CkBAIC0xMjEsNyArMTIxLDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
Y2hlY2tlcmJvYXJkaW5nKQogICAgIGNvbnN0IGludCBudW1UaWxlc1kgPSAyOwogICAgIGNvbnN0
IEludFNpemUgbGF5ZXJTaXplKHRpbGVTaXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXpl
LmhlaWdodCgpICogbnVtVGlsZXNZKTsKIAotICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRh
OjpOb0JvcmRlclRleGVscyk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0g
Y3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9y
ZGVyVGV4ZWxzKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0
ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgIC8vIE5vIGNoZWNrZXJi
b2FyZGluZwpAQCAtMTUwLDcgKzE1MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNo
ZWNrZXJib2FyZGluZykKIAogc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdl
dFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXpl
JiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJU
ZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKIHsKLSAgICBSZWZQ
dHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJT
aXplLCBib3JkZXJUZXhlbE9wdGlvbik7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxh
eWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24p
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAg
IGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1Qo
Q0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKICAgICBjb25z
dCBpbnQgbnVtVGlsZXNZID0gMjsKICAgICBjb25zdCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRp
bGVzWCAqIG51bVRpbGVzWTsKICAgICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53
aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAg
UmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxh
eWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJz
Vmlld3BvcnQodHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDRiM2RkMjdkMzFkODgy
MTA0YzcwY2ZmZjUwMjRmYjgwNDQ3ZWExNDEuLmM1ZTk4M2VlYWFlZTFjZTU0M2U5NWEzMmRhOGFl
ZjU3NjNhM2YyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IHNjb3BlZEltcGxUaHJlYWQ7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5
ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOworICAgICAgICAgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4o
bGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCiAgICAgICAgICAgICBjYW52YXMtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggZmNkMzg3OGE2NmE2M2I4Zjk2MDZiOTU0M2FmNzExMjY5MjFjNWU0YS4u
N2VkNDIyZGI4MDRkNTk4NDM4OTVkZDNlOGVkYWE1ZjM0MDgyODViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGly
dHlUaWxlcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwor
ICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQs
IDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0g
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJl
QWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0
LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsK
IAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM1OSw3ICszNTksNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0
b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVz
dC5jcHAKaW5kZXggMTU1N2E3ZDkzMjJjYzZiZTIwNmJmNTBiMDBjMGY0NzA2M2M1NDc4Yi4uMDIx
NTFiOGU2ZTczYjY5ODMxMGY1YjExMDM4NWFjZjE4M2E4NzYyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTM4
LDkgKzM4LDkgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgTW9ja0NDTGF5ZXJJbXBsIDogcHVibGlj
IENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNb2NrQ0NMYXll
ckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0NM
YXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTW9ja0NDTGF5ZXJJbXBsKGxheWVySWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNb2NrQ0NMYXllckltcGwobGF5ZXJJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5N
b2NrQ0NMYXllckltcGwoKQogICAgIHsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+TW9ja0xheWVyQ2hyb21pdW0oKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKQorICAgIHZpcnR1YWwgUGFzc093blB0
cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiAgICAgfQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IENDTGF5ZXJJbXBsKiBjY0xheWVyKQogICAgICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChs
YXllci0+cmVwbGljYUxheWVyKCksIGNjTGF5ZXItPnJlcGxpY2FMYXllcigpKTsKIAogICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJDaGlsZHJlbiA9IGxheWVy
LT5jaGlsZHJlbigpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNj
TGF5ZXJDaGlsZHJlbiA9IGNjTGF5ZXItPmNoaWxkcmVuKCk7CisgICAgY29uc3QgVmVjdG9yPE93
blB0cjxDQ0xheWVySW1wbD4gPiYgY2NMYXllckNoaWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4o
KTsKIAogICAgIEFTU0VSVF9FUShsYXllckNoaWxkcmVuLnNpemUoKSwgY2NMYXllckNoaWxkcmVu
LnNpemUoKSk7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0
LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChM
YXllckNocm9taXVtOjpjcmVhdGUoKSk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVy
VHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJv
b3QuZ2V0KCksIDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0g
VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBu
dWxscHRyKTsKIAogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0
KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiB9CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVChU
cmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIGxh
eWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJE
ZXN0cnVjdGlvbkxpc3QpKTsKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7CiAKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxh
eWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2Fs
KGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBB
ZGQgYSBuZXcgbGF5ZXIgdG8gdGhlIExheWVyQ2hyb21pdW0gc2lkZQpAQCAtMTcyLDcgKzE3Miw3
IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGll
cykKICAgICBJbnRTaXplIHNlY29uZENoaWxkQm91bmRzID0gSW50U2l6ZSgyNSwgNTMpOwogICAg
IGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPnNldEJvdW5kcyhzZWNvbmRDaGlsZEJvdW5k
cyk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5j
aHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVj
dFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5n
ZXQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSB2YWx1ZXMgd2Ugc2V0IG9u
IHRoZSBMYXllckNocm9taXVtIHRyZWUgYXJlIHJlZmxlY3RlZCBpbiB0aGUgQ0NMYXllckltcGwg
dHJlZS4KQEAgLTIwOSw3ICsyMDksNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCByZXVz
ZUNDTGF5ZXJzQWZ0ZXJTdHJ1Y3R1cmFsQ2hhbmdlKQogICAgIGxheWVyQi0+YWRkQ2hpbGQoTW9j
a0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCkpOwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBsYXllckQgPSBsYXllckItPmNoaWxkcmVuKClbMV0uZ2V0KCk7
CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJv
bml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5j
aHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRy
ZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQo
KSk7CiAKICAgICAvLyBOb3cgcmVzdHJ1Y3R1cmUgdGhlIHRyZWUgdG8gbG9vayBsaWtlIHRoaXM6
CkBAIC0yNDcsNyArMjQ3LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVUaGVuRGVzdHJveSkKICAgICBpbnQgb2xkVHJlZUZpcnN0Q2hpbGRMYXllcklkID0gb2xk
TGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKICAgICBpbnQgb2xkVHJlZVNlY29u
ZENoaWxkTGF5ZXJJZCA9IG9sZExheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPmlkKCk7CiAK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZXMob2xkTGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5j
aHJvbml6ZVRyZWVzKG9sZExheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVj
dFRyZWVzQXJlSWRlbnRpY2FsKG9sZExheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9v
dC5nZXQoKSk7CiAKICAgICAvLyBSZW1vdmUgYWxsIGNoaWxkcmVuIG9uIHRoZSBMYXllckNocm9t
aXVtIHNpZGUuCkBAIC0yODcsMjMgKzI4NywyMyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0
LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBsaWNhTWFza0xheWVycykKICAgICByZXBsaWNhTGF5ZXJX
aXRoTWFzay0+c2V0TWFza0xheWVyKHJlcGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVy
VHJlZVJvb3QtPmNoaWxkcmVuKClbMl0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRo
TWFzay5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9
IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwg
MCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hy
b25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwog
CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXll
clRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgbWFzayBsYXllci4KICAgICBs
YXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXll
clRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVS
b290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9
IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwg
Y2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwo
bGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJl
bW92ZSB0aGUgcmVwbGljYSBsYXllci4KICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzFd
LT5zZXRSZXBsaWNhTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9u
aXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJv
b3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2Uo
KSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NM
YXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBtYXNrLgog
ICAgIHJlcGxpY2FMYXllcldpdGhNYXNrLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRy
ZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290
LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NM
YXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128835</attachid>
            <date>2012-02-24 18:01:20 -0800</date>
            <delta_ts>2012-02-24 19:11:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120224180118.patch</filename>
            <type>text/plain</type>
            <size>135487</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdjYzkyZjRlZWNmOWM0
NjhiNzkzZGY0MDY3YjE5MDhjY2JjZmUzMC4uYjk4MjI0MmExN2YyMWNkMzA0ODM2ZTg1NjM0OTI1
NGExZTEwMDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxMi0wMi0yNCAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU29saWRDb2xvckxheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnJldXNlT3JDcmVhdGVDQ0xheWVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5j
aHJvbml6ZXIuaDoKKyAgICAgICAgKFRyZWVTeW5jaHJvbml6ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFZpZGVvTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFz
TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGFtYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNr
ZXI6OnVwZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEYW1h
Z2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oOgorICAgICAgICAoQ0NE
YW1hZ2VUcmFja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNl
dE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UmVwbGljYUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6Y2hpbGRyZW4pOgorICAgICAgICAoQ0NMYXllckltcGwpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjplbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5l
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0Jh
Y2s6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZy
b250VG9CYWNrOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9u
czo6RnJvbnRUb0JhY2s6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJdGVyYXRvcjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJh
dG9yOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjp0YXJnZXRSZW5k
ZXJTdXJmYWNlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpDQ0xh
eWVySXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpnZXRSYXdQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpjdXJyZW50TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjp0YXJnZXRSZW5kZXJTdXJmYWNlQ2hp
bGRyZW4pOgorICAgICAgICAoQmFja1RvRnJvbnQpOgorICAgICAgICAoRnJvbnRUb0JhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uOjpDQ0xheWVySXRlcmF0b3JQb3NpdGlvbik6CisgICAgICAgIChDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjo6
Z2V0UmF3UHRyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpj
dXJyZW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246
OmN1cnJlbnRMYXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjpjdXJyZW50TGF5ZXJSZXByZXNl
bnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbjo6dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjp0YXJnZXRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJdGVyYXRvclBvc2l0aW9uOjp0YXJnZXRSZW5kZXJTdXJmYWNlQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yUG9zaXRpb246Om9wZXJh
dG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJT
b3J0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhO
b2Rlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5oOgorICAgICAgICAoQ0NMYXllclNvcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENvbW1vbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVy
VHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnRy
YWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xs
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2lu
TGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdpbkxheWVySW1wbDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6bGF5ZXJMaXN0KToKKyAg
ICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nv
bGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxl
ZExheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJ
bXBsOjpjcmVhdGUpOgorCiAyMDEyLTAyLTI0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIEhhcmZCdXp6
U2hhcGVyQmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZDk0ZTBmNWQxZTAxZTk3
NWM4NTFiODQ3MDkyZTE3Y2YxZmNmNzc2Li42MWMyNjEzYzdhMGE5ZDc5ODJmZTFhZjA2YTY0MTg0
NGNlNDRlNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisy
MDEyLTAyLTI0ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFJlcGxhY2UgUmVmUHRyIHdpdGggT3duUHRyIGZvciBDQ0xheWVySW1wbCB0
cmVlIHN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OmV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OmVtdWxhdGVEcmF3aW5nT25lRnJhbWUpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OmNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OmNyZWF0ZVRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OmNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJdGVy
YXRvclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdDo6c2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisgICAgICAgIChXZWJLaXQ6OkRpZERyYXdDaGVja0xheWVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgor
ICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGls
ZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjcmVhdGVM
YXllcik6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgIChDQ0xh
eWVyVGVzdENvbW1vbjo6Z2V0UXVhZHMpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVt
VGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UcmVl
U3luY2hyb25pemVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0NDTGF5ZXJJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6ZXhwZWN0VHJlZXNBcmVJ
ZGVudGljYWwpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTAyLTI0ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTA4ODYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmNwcAppbmRleCAxODFiYTRlNTgxMmNlODg3OGExNzkyMDI1OGY4ZWRlOGRmYjQ2MjFlLi5kNTMz
Njk5YWY5ZjFmN2FhMDg1MjhkNDFmOGI2YmNjMjYwYjAzNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllckNocm9taXVtLmNwcApAQCAtNDUsNyArNDUsNyBAQCBDYW52YXNMYXllckNocm9taXVtOjpD
YW52YXNMYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gQ2Fu
dmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVy
SW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJl
dHVybiBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllckNocm9taXVtLmgKaW5kZXggOWU4Y2U3ZDhjYzgyYWE4ODNjMzZhODU4NjMwOTQ0OGYz
MzYyMDI3MS4uNzIyY2MxYTY2NzM4OWIzNTcxMDU4MjUyOGI2ZDFjYzc2M2EzNTc0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBCYXNlIGNsYXNzIGZvciBXZWJHTCBhbmQgYWNjZWxlcmF0ZWQgMmQgY2FudmFz
ZXMuCiBjbGFzcyBDYW52YXNMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewog
cHVibGljOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXll
ckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5
ZXJJbXBsKCk7CiAKIHByb3RlY3RlZDoKICAgICBDYW52YXNMYXllckNocm9taXVtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDhlZWRhNjhhNDg3OWM5YTJiNzY1NDU0OTRhMTFhMDdlN2Qy
OTdmZmEuLjgzNWMwM2JmMWJlZThjNzBjMDFlNmRmNjQyMWVmYjMzZmMxYWY5MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBtX3VwZGF0ZVJlY3QgPSBG
bG9hdFJlY3QoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggODk3NjQ3ZDJkNTI2MzVjODA4
YmFhNzI4NGNkZWI5YTgzYzQzMDQwYS4uNTU4ZTUxODM0MTBjZWNjNTQ2ZDJkMjViZTRlYzgxYmQ4
ZGY4NWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjQ5
LDcgKzI1MCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNr
TGF5ZXI7CiAKICAgICAvLyBDb25zdHJ1Y3RzIGEgQ0NMYXllckltcGwgb2YgdGhlIGNvcnJlY3Qg
cnVudGltZSB0eXBlIGZvciB0aGlzIExheWVyQ2hyb21pdW0gdHlwZS4KLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogICAgIGludCBtX2xh
eWVySWQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDA3OWFkMmVkZTk1NDc1NTgyYjg3MDcyOWE3MWE1ZDYxYmQyOGFiNGIuLjYyNWY0YjIxZGZiOGE1
MWQzYzllN2FmMDkyZTRhMDI5YmNiMzY2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDCiAgICAgbV9k
aXJ0eVJlY3QgPSBGbG9hdFJlY3QoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gUGx1
Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVy
SW1wbD4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJl
dHVybiBDQ1BsdWdpbkxheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmgKaW5kZXggODQzNjU2OTViYjFkZGM2NTIzMWFkZDA0ZjZmMGQ4MzAw
MDkxZTBkMC4uYzMwZjc3YWM1ZDFiN2JhNWE3NGRhZGIwOGZkZTRhMTNiM2VhNDQ4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+
IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVDQ0xheWVySW1wbCgpOwogCiAgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdo
aWNoIHN1cHBseSB0aGVpciBvd24gdGV4dHVyZSBJRC4KICAgICB2b2lkIHNldFRleHR1cmVJZCh1
bnNpZ25lZCB0ZXh0dXJlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGVkMTM1NDZiYWU4N2Y0MDUxYjMwZTM0OTRjMGYyZmRlODUzZjFlMzMuLjBkYzc3
YWRhODIyNjAyMzI1ZTY3OWUzMTU0ODgzMzY4OTNiOTRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gU29saWRDb2xv
ckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoaWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxh
eWVyQ2hyb21pdW0uaAppbmRleCAxZDE0ODkwYmQwZTFmMGMyMGM2M2M2ZDIzMTcxNTk0OGQyMTg5
NGZjLi45NGE1NGEwYWM1YWRlMTE5Nzg2ZGQwNmJkMzQ5ZGJiMjE3YmJkNTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgTGF5
ZXJUaWxlckNocm9taXVtOwogLy8gc2V0QmFja2dyb3VuZENvbG9yKCkgb24gdGhlIGJhc2UgY2xh
c3MuCiBjbGFzcyBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVt
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUND
TGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVD
Q0xheWVySW1wbCgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvbGlkQ29sb3JMYXllckNocm9t
aXVtPiBjcmVhdGUoKTsKIAogICAgIHZpcnR1YWwgflNvbGlkQ29sb3JMYXllckNocm9taXVtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBhOWNmN2Q2ZmQyY2RlNjllM2Qz
MWRiMDkwYjU2OGYyMWQxMzUzYzliLi43YmYwYzk3NTcyYzYwYjljM2VjODdiZjk4NTRiODc1MTU4
ZmVlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgVGlsZWRMYXllckNocm9taXVtOjp+VGlsZWRMYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1w
bCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUND
TGF5ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKGlkKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAyZDk5OTUzNjdhZDI0MzZhZmZh
ZmU2ZGNjMzIzYWY5NTNhZWQzMDcyLi5hNmMyMTE5NTFkNzg1MTQzNDBmNTY3YmRmMzYwZWE2NzQx
MDk0ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtMTAyLDcgKzEwMiw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+
IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsK
ICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmNwcAppbmRleCBkMGZkMGNlNTIzZDYzODg0YmU5MzJlMWJkNDE2NTgyZjI1NzYyZTQw
Li41Mzc0OTVhYTExYjM1OWNjYzRmYWIxMGFmMWJjM2QyZGI4NTYxMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVl
U3luY2hyb25pemVyLmNwcApAQCAtMzMsNjMgKzMzLDU4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBUcmVlU3luY2hyb25pemVyOjphZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2
ZShDQ0xheWVySW1wbE1hcCYgbWFwLCBDQ0xheWVySW1wbCogY2NMYXllckltcGwpCitQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVy
Q2hyb21pdW0qIGxheWVyQ2hyb21pdW1Sb290LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBvbGRD
Q0xheWVySW1wbFJvb3QpCiB7Ci0gICAgbWFwLnNldChjY0xheWVySW1wbC0+aWQoKSwgY2NMYXll
ckltcGwpOwotCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRy
ZW4gPSBjY0xheWVySW1wbC0+Y2hpbGRyZW4oKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vy
c2l2ZShtYXAsIGNoaWxkcmVuW2ldLmdldCgpKTsKLQotICAgIGlmIChDQ0xheWVySW1wbCogbWFz
a0xheWVyID0gY2NMYXllckltcGwtPm1hc2tMYXllcigpKQotICAgICAgICBhZGRDQ0xheWVySW1w
bHNUb01hcFJlY3Vyc2l2ZShtYXAsIG1hc2tMYXllcik7CisgICAgQ0NMYXllckltcGxNYXAgbWFw
OworICAgIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKG1hcCwgb2xkQ0NMYXll
ckltcGxSb290KTsKIAotICAgIGlmIChDQ0xheWVySW1wbCogcmVwbGljYUxheWVyID0gY2NMYXll
ckltcGwtPnJlcGxpY2FMYXllcigpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vy
c2l2ZShtYXAsIHJlcGxpY2FMYXllcik7CisgICAgcmV0dXJuIHN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZShtYXAsIGxheWVyQ2hyb21pdW1Sb290KTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyQ2hyb21p
dW0qIGxheWVyLCBDQ0xheWVySW1wbE1hcCYgbWFwKQordm9pZCBUcmVlU3luY2hyb25pemVyOjpj
b2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYgbWFwLCBQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiBwb3BDQ0xheWVySW1wbCkKIHsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNjTGF5ZXJJbXBsOwotICAgIENDTGF5ZXJJbXBsTWFwOjppdGVyYXRvciBpdCA9
IG1hcC5maW5kKGxheWVyLT5pZCgpKTsKLSAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKSB7Ci0gICAg
ICAgIGNjTGF5ZXJJbXBsID0gaXQtPnNlY29uZDsgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVudHJ5
IGZvciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYXJlbnQgaXQuCi0gICAgICAgIGNjTGF5ZXJJ
bXBsLT5jbGVhckNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNjTGF5ZXJJbXBs
ID0gbGF5ZXItPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0gICAgICAgIG1hcC5zZXQobGF5ZXItPmlk
KCksIGNjTGF5ZXJJbXBsKTsgLy8gQWRkIGl0IHRvIHRoZSBtYXAgc28gb3RoZXIgbGF5ZXJzIHJl
ZmVyZW5jaW5nIHRoaXMgb25lIGNhbiBwaWNrIGl0IHVwLgotICAgIH0KKyAgICBDQ0xheWVySW1w
bCogY2NMYXllckltcGwgPSBwb3BDQ0xheWVySW1wbC5nZXQoKTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsK
KyAgICBpZiAoIWNjTGF5ZXJJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAuc2V0KGNj
TGF5ZXJJbXBsLT5pZCgpLCBwb3BDQ0xheWVySW1wbCk7CisKKyAgICBWZWN0b3I8T3duUHRyPEND
TGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5tX2NoaWxkcmVuOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGNjTGF5
ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoY2hpbGRyZW5baV0uZ2V0
KCksIG1hcCkpOworICAgICAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZSht
YXAsIGNoaWxkcmVuW2ldLnJlbGVhc2UoKSk7CisKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVy
SW1wbFJlY3Vyc2l2ZShtYXAsIGNjTGF5ZXJJbXBsLT5tX21hc2tMYXllci5yZWxlYXNlKCkpOwor
ICAgIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKG1hcCwgY2NMYXllckltcGwt
Pm1fcmVwbGljYUxheWVyLnJlbGVhc2UoKSk7Cit9CiAKLSAgICBpZiAoTGF5ZXJDaHJvbWl1bSog
bWFza0xheWVyID0gbGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICBjY0xheWVySW1wbC0+c2V0
TWFza0xheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXNrTGF5ZXIsIG1hcCkpOwotICAg
IGVsc2UKLSAgICAgICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcigwKTsKK1Bhc3NPd25QdHI8
Q0NMYXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnJldXNlT3JDcmVhdGVDQ0xheWVySW1wbChD
Q0xheWVySW1wbE1hcCYgbWFwLCBMYXllckNocm9taXVtKiBsYXllcikKK3sKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IGNjTGF5ZXJJbXBsID0gbWFwLnRha2UobGF5ZXItPmlkKCkpOwogCi0gICAg
aWYgKExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkK
LSAgICAgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1
cnNpdmUocmVwbGljYUxheWVyLCBtYXApKTsKLSAgICBlbHNlCi0gICAgICAgIGNjTGF5ZXJJbXBs
LT5zZXRSZXBsaWNhTGF5ZXIoMCk7CisgICAgaWYgKCFjY0xheWVySW1wbCkKKyAgICAgICAgcmV0
dXJuIGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwogCi0gICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8oY2NMYXllckltcGwuZ2V0KCkpOwogICAgIHJldHVybiBjY0xheWVySW1wbC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJDaHJvbWl1bVJvb3QsIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IHBycE9sZENDTGF5ZXJJbXBsUm9vdCkKK1Bhc3NPd25QdHI8Q0NMYXllcklt
cGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShDQ0xheWVySW1w
bE1hcCYgbWFwLCBMYXllckNocm9taXVtKiBsYXllcikKIHsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IG9sZENDTGF5ZXJJbXBsUm9vdCA9IHBycE9sZENDTGF5ZXJJbXBsUm9vdDsKLSAgICAvLyBC
dWlsZCBhIG1hcCBmcm9tIGxheWVyIElEcyB0byBDQ0xheWVySW1wbHMgc28gd2UgY2FuIHJldXNl
IGxheWVycyBmcm9tIHRoZSBvbGQgdHJlZS4KLSAgICBDQ0xheWVySW1wbE1hcCBtYXA7Ci0gICAg
aWYgKG9sZENDTGF5ZXJJbXBsUm9vdCkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1
cnNpdmUobWFwLCBvbGRDQ0xheWVySW1wbFJvb3QuZ2V0KCkpOworICAgIGlmICghbGF5ZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gUmVjdXJzaXZlbHkgYnVpbGQgdGhlIG5l
dyBsYXllciB0cmVlLgotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbmV3Q0NMYXllckltcGxSb290
ID0gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKGxheWVyQ2hyb21pdW1Sb290LCBtYXApOworICAg
IE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGwgPSByZXVzZU9yQ3JlYXRlQ0NMYXllcklt
cGwobWFwLCBsYXllcik7CiAKLSAgICByZXR1cm4gbmV3Q0NMYXllckltcGxSb290LnJlbGVhc2Uo
KTsKKyAgICBjY0xheWVySW1wbC0+Y2xlYXJDaGlsZExpc3QoKTsKKyAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNoaWxkcmVuID0gbGF5ZXItPmNoaWxkcmVuKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAg
Y2NMYXllckltcGwtPmFkZENoaWxkKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXAsIGNoaWxk
cmVuW2ldLmdldCgpKSk7CisKKyAgICBjY0xheWVySW1wbC0+c2V0TWFza0xheWVyKHN5bmNocm9u
aXplVHJlZVJlY3Vyc2l2ZShtYXAsIGxheWVyLT5tYXNrTGF5ZXIoKSkpOworICAgIGNjTGF5ZXJJ
bXBsLT5zZXRSZXBsaWNhTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKG1hcCwgbGF5ZXIt
PnJlcGxpY2FMYXllcigpKSk7CisKKyAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhjY0xheWVy
SW1wbC5nZXQoKSk7CisgICAgcmV0dXJuIGNjTGF5ZXJJbXBsLnJlbGVhc2UoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCmluZGV4IGE0ZTQ5NDIx
NzM5NWU4ZDJlMTI5NmJkNjU2NjYyZTMyYjExOWFjZmYuLjEzNDcwOGNhNDNiZDg5ZWNiZGYyZmQy
MTU5MmZkMDcyODZkY2MxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKQEAgLTI4LDcgKzI4
LDggQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MCwxNiArNDEsMTcgQEAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJlZVN5bmNocm9uaXpl
cik7CiBwdWJsaWM6CiAgICAgLy8gQWNjZXB0cyBhIExheWVyQ2hyb21pdW0gdHJlZSBhbmQgcmV0
dXJucyBhIHJlZmVyZW5jZSB0byBhIENDTGF5ZXJJbXBsIHRyZWUgdGhhdCBkdXBsaWNhdGVzIHRo
ZSBzdHJ1Y3R1cmUKICAgICAvLyBvZiB0aGUgTGF5ZXJDaHJvbWl1bSB0cmVlLCByZXVzaW5nIHRo
ZSBDQ0xheWVySW1wbHMgaW4gdGhlIHRyZWUgcHJvdmlkZWQgYnkgb2xkQ0NMYXllckltcGxSb290
IGlmIHBvc3NpYmxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBzeW5jaHJv
bml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyUm9vdCwgUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gb2xkQ0NMYXllckltcGxSb290KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVySW1w
bD4gc3luY2hyb25pemVUcmVlcyhMYXllckNocm9taXVtKiBsYXllclJvb3QsIFBhc3NPd25QdHI8
Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCk7CiAKIHByaXZhdGU6CiAgICAgVHJlZVN5
bmNocm9uaXplcigpOyAvLyBOb3QgaW5zdGFudGlhYmxlLgogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgUmVmUHRyPENDTGF5ZXJJbXBsPiA+IENDTGF5ZXJJbXBsTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxpbnQsIE93blB0cjxDQ0xheWVySW1wbD4gPiBDQ0xheWVySW1wbE1hcDsKIAogICAg
IC8vIERlY2xhcmVkIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHNvIHRoZXkgY2FuIGFjY2Vz
cyBmdW5jdGlvbnMgb24gTGF5ZXJDaHJvbWl1bSBhcyBhIGZyaWVuZCBjbGFzcy4KLSAgICBzdGF0
aWMgdm9pZCBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYsIEND
TGF5ZXJJbXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHN5bmNocm9u
aXplVHJlZVJlY3Vyc2l2ZShMYXllckNocm9taXVtKiwgQ0NMYXllckltcGxNYXAmKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKEND
TGF5ZXJJbXBsTWFwJiwgTGF5ZXJDaHJvbWl1bSopOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RF
eGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiwgUGFzc093blB0cjxD
Q0xheWVySW1wbD4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBzeW5jaHJv
bml6ZVRyZWVSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmLCBMYXllckNocm9taXVtKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApp
bmRleCAzYjQ0ZWRhMzg2ZDYxMDVhNmRjMmJjYjc4YjNmYWYxYmM1ZDM5ZDJkLi5kOTlmNWU1MTFj
MTJhM2M2OThjYzhlODg3NTE3MTAxMmEzNWVjMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgVmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXll
ckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gVmlkZW9MYXllckNo
cm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBWaWRl
b0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NWaWRl
b0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCwgbV9wcm92aWRlcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDY1Y2Y1YzY2OGRlNTQ4ZTU2OWMwN2M5OGJlMTg4MDkyMzEx
YTFhNzEuLjc3OTg0ODA2YjgyZmM2ZTc2NmMyZDQzYzM0YzI3YzRkZWVjNGZhYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShWaWRlb0ZyYW1lUHJvdmlk
ZXIqID0gMCk7CiAgICAgdmlydHVhbCB+VmlkZW9MYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CisgICAgdmly
dHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogCiAgICAg
dm9pZCBjb250ZW50Q2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaApp
bmRleCA5MTI2YTdkNDQ1MDFlNjMyNWI1ZWZkNGI1N2NiYTllNDZiYzhhNzVhLi5jOTZhZjI0NmVk
M2JhNzU4OTViYmVmNTUyZDRjOThkNGU4MGI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5
ZXJJbXBsLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
Q0NhbnZhc0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NDYW52YXNMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDYW52YXNMYXllckltcGwoaWQpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB+Q0NDYW52YXNMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJh
Y2tlci5jcHAKaW5kZXggMmQ2ZjQzZjMxODVmYzQ0NWNhOTk1OWZlODA0ZjYyNGIzYjRlMTMzZi4u
NmEwNjJjYWNhN2NjNTg3NWYyYzkyNTk5ODU2YjZhNWVjOGU1M2M3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIENDRGFtYWdlVHJhY2tlcjo6fkND
RGFtYWdlVHJhY2tlcigpCiB7CiB9CiAKLXZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1h
Z2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVy
TGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklELCBDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFj
ZU1hc2tMYXllcikKK3ZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0
YXRlKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJm
YWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpCiB7CiAgICAg
Ly8KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSAiZGFtYWdlIHJlY3QiIG9mIGEg
dGFyZ2V0IHN1cmZhY2UsIGFuZCB1cGRhdGVzIHRoZSBzdGF0ZQpAQCAtMTMwLDcgKzEzMCw3IEBA
IHZvaWQgQ0NEYW1hZ2VUcmFja2VyOjp1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q0NMYXllckltcGw+CiAKICAgICAvLyBJZiB0aGUgdGFyZ2V0IHN1cmZhY2Ug
YWxyZWFkeSBrbm93cyBpdHMgZW50aXJlIHJlZ2lvbiBpcyBkYW1hZ2VkLCB3ZSBjYW4gcmV0dXJu
IGVhcmx5LgogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBnbyBhd2F5LCBvciB3aWxsIGJlIGNs
ZWFuZXIsIGFmdGVyIHJlZmFjdG9yaW5nIGludG8gUmVuZGVyUGFzcy9SZW5kZXJTY2hlZHVsZS4K
LSAgICBDQ0xheWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbMF0uZ2V0KCk7CisgICAgQ0NMYXll
ckltcGwqIGxheWVyID0gbGF5ZXJMaXN0WzBdOwogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0
U3VyZmFjZSA9IGxheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7CiAKICAgICBpZiAobV9mb3Jj
ZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlIHx8IHRhcmdldFN1cmZhY2UtPnN1cmZhY2VQcm9wZXJ0eUNo
YW5nZWRPbmx5RnJvbURlc2NlbmRhbnQoKSkgewpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBD
Q0RhbWFnZVRyYWNrZXI6OnNhdmVSZWN0Rm9yTmV4dEZyYW1lKGludCBsYXllcklELCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFMKICAgICBtX25leHRSZWN0SGlzdG9yeS0+c2V0KGxheWVySUQsIHRh
cmdldFNwYWNlUmVjdCk7CiB9CiAKLUZsb2F0UmVjdCBDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFt
YWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBs
YXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCkKK0Zsb2F0UmVjdCBDQ0RhbWFnZVRy
YWNrZXI6OnRyYWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllcklt
cGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpCiB7CiAgICAgRmxvYXRS
ZWN0IGRhbWFnZVJlY3QgPSBGbG9hdFJlY3QoKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF5ZXJJ
bmRleCA9IDA7IGxheWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsK
LSAgICAgICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgp
OworICAgICAgICBDQ0xheWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF07CiAK
ICAgICAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1
dGVzVG9UYXJnZXQ8Q0NMYXllckltcGw+KGxheWVyLCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCkpCiAg
ICAgICAgICAgICBleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKGxheWVyLCBkYW1hZ2VSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGFtYWdlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKaW5kZXggZDQyOGYyNmQxYTBjMjVjYTBjNDgx
YzA5M2ViM2E4ZmZiYTNiYjgwOS4uN2E2MjljNDc4MTI4MWJlNGRmYTFjNDlkZDEzYjExZTRmOTU1
MGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBw
dWJsaWM6CiAgICAgfkNDRGFtYWdlVHJhY2tlcigpOwogCiAgICAgdm9pZCBmb3JjZUZ1bGxEYW1h
Z2VOZXh0VXBkYXRlKCkgeyBtX2ZvcmNlRnVsbERhbWFnZU5leHRVcGRhdGUgPSB0cnVlOyB9Ci0g
ICAgdm9pZCB1cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NM
YXllckltcGw+ID4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklELCBDQ0xheWVy
SW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllcik7CisgICAgdm9pZCB1cGRhdGVEYW1hZ2VUcmFj
a2luZ1N0YXRlKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJn
ZXRTdXJmYWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpOwog
ICAgIGNvbnN0IEZsb2F0UmVjdCYgY3VycmVudERhbWFnZVJlY3QoKSB7IHJldHVybiBtX2N1cnJl
bnREYW1hZ2VSZWN0OyB9CiAKIHByaXZhdGU6CiAgICAgQ0NEYW1hZ2VUcmFja2VyKCk7CiAKLSAg
ICBGbG9hdFJlY3QgdHJhY2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsK
KyAgICBGbG9hdFJlY3QgdHJhY2tEYW1hZ2VGcm9tQWN0aXZlTGF5ZXJzKGNvbnN0IFZlY3RvcjxD
Q0xheWVySW1wbCo+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CiAgICAg
RmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJvbVN1cmZhY2VNYXNrKENDTGF5ZXJJbXBsKiB0YXJnZXRT
dXJmYWNlTWFza0xheWVyKTsKICAgICBGbG9hdFJlY3QgdHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJS
ZWN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMDU4OWRjYThhZmFhMGQzMWM4
MmM2OGI0YjZmZmU3MzIwNzFiMTc5ZC4uM2Q2M2IwNTkxMGI3Nzg3ODk4MWU3M2Y1NWMzYWI5Yzky
NTkwZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNDIsNiArNDIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAg
OiBtX3BhcmVudCgwKQorICAgICwgbV9tYXNrTGF5ZXJJRCgtMSkKKyAgICAsIG1fcmVwbGljYUxh
eWVySUQoLTEpCiAgICAgLCBtX2xheWVySWQoaWQpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwg
MC41KQogICAgICwgbV9hbmNob3JQb2ludFooMCkKQEAgLTczLDcgKzc1LDcgQEAgQ0NMYXllcklt
cGw6On5DQ0xheWVySW1wbCgpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
IH0KIAotdm9pZCBDQ0xheWVySW1wbDo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
Y2hpbGQpCit2b2lkIENDTGF5ZXJJbXBsOjphZGRDaGlsZChQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBjaGlsZCkKIHsKICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwogICAgIG1fY2hpbGRyZW4u
YXBwZW5kKGNoaWxkKTsKQEAgLTI0NCw3ICsyNDYsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1w
TGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgIHRz
IDw8ICJkcmF3c0NvbnRlbnQ6ICIgPDwgKG1fZHJhd3NDb250ZW50ID8gInllcyIgOiAibm8iKSA8
PCAiXG4iOwogfQogCi12b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4g
Pjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9y
IGVuZCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIpCit2b2lkIHNvcnRMYXllcnMoVmVjdG9y
PENDTGF5ZXJJbXBsKj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8Q0NMYXllckltcGwqPjo6aXRl
cmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKIHsKICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb3J0TGF5ZXJzIiwgMCwgMCk7CiAgICAgbGF5ZXJT
b3J0ZXItPnNvcnQoZmlyc3QsIGVuZCk7CkBAIC0zMTksMjEgKzMyMSwyNyBAQCB2b2lkIENDTGF5
ZXJJbXBsOjpzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgICAgICBtX2xheWVy
UHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza0xh
eWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3ZvaWQgQ0NMYXllckltcGw6
OnNldE1hc2tMYXllcihQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIpCiB7Ci0gICAg
aWYgKG1fbWFza0xheWVyID09IG1hc2tMYXllcikKKyAgICBtX21hc2tMYXllciA9IG1hc2tMYXll
cjsKKworICAgIGludCBuZXdMYXllcklEID0gbV9tYXNrTGF5ZXIgPyBtX21hc2tMYXllci0+aWQo
KSA6IC0xOworICAgIGlmIChuZXdMYXllcklEID09IG1fbWFza0xheWVySUQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fbWFza0xheWVyID0gbWFza0xheWVyOworICAgIG1fbWFza0xheWVySUQg
PSBuZXdMYXllcklEOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsK
IH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IHJlcGxpY2FMYXllcikKK3ZvaWQgQ0NMYXllckltcGw6OnNldFJlcGxpY2FMYXllcihQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpCiB7Ci0gICAgaWYgKG1fcmVwbGlj
YUxheWVyID09IHJlcGxpY2FMYXllcikKKyAgICBtX3JlcGxpY2FMYXllciA9IHJlcGxpY2FMYXll
cjsKKworICAgIGludCBuZXdMYXllcklEID0gbV9yZXBsaWNhTGF5ZXIgPyBtX3JlcGxpY2FMYXll
ci0+aWQoKSA6IC0xOworICAgIGlmIChuZXdMYXllcklEID09IG1fcmVwbGljYUxheWVySUQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOworICAg
IG1fcmVwbGljYUxheWVySUQgPSBuZXdMYXllcklEOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZEZvclN1YnRyZWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYzdhNGYwODU2
Zjk1NWE1NTZlZWNkNTQxMzZkNTExNjE1NTU2NTMxOC4uMTEwODRhM2Q5OTM5YzNjN2VmOGYwMTcy
MTQ2ZTBlNjQ5YjA3NGZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC00NiwxMSArNDYsMTEg
QEAgY2xhc3MgQ0NMYXllclNvcnRlcjsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBMYXll
clJlbmRlcmVyQ2hyb21pdW07CiAKLWNsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIFJlZkNvdW50
ZWQ8Q0NMYXllckltcGw+LCBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xp
ZW50IHsKK2NsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENDTGF5ZXJJ
bXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllckltcGwoaWQpKTsK
ICAgICB9CiAKICAgICAvLyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQgaW1w
bGVtZW50YXRpb24uCkBAIC02NSwxNSArNjUsMTUgQEAgcHVibGljOgogCiAgICAgLy8gVHJlZSBz
dHJ1Y3R1cmUuCiAgICAgQ0NMYXllckltcGwqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
ZW50OyB9Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Ci0gICAgdm9pZCBhZGRDaGlsZChQYXNzUmVm
UHRyPENDTGF5ZXJJbXBsPik7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4g
PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CisgICAgdm9pZCBhZGRD
aGlsZChQYXNzT3duUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgdm9pZCByZW1vdmVGcm9tUGFyZW50
KCk7CiAgICAgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOwogCi0gICAgdm9pZCBzZXRNYXNrTGF5
ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOworICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NP
d25QdHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogbWFza0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0UmVwbGljYUxheWVy
KFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKKyAgICB2b2lkIHNldFJlcGxpY2FMYXllcihQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgQ0NMYXllckltcGwqIHJlcGxpY2FMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwbGljYUxheWVyLmdldCgpOyB9CiAKICNpZm5kZWYgTkRFQlVHCkBA
IC0yMzYsOSArMjM2LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9wZXJ0aWVzIGludGVybmFs
IHRvIENDTGF5ZXJJbXBsCiAgICAgQ0NMYXllckltcGwqIG1fcGFyZW50OwotICAgIFZlY3RvcjxS
ZWZQdHI8Q0NMYXllckltcGw+ID4gbV9jaGlsZHJlbjsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IG1fbWFza0xheWVyOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbV9yZXBsaWNhTGF5ZXI7Cisg
ICAgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiBtX2NoaWxkcmVuOworICAgIC8vIG1fbWFz
a0xheWVyIGNhbiBiZSB0ZW1wb3JhcmlseSBzdG9sZW4gZHVyaW5nIHRyZWUgc3luYywgd2UgbmVl
ZCB0aGlzIElEIHRvIGNvbmZpcm0gbmV3bHkgYXNzaWduZWQgbGF5ZXIgaXMgc3RpbGwgdGhlIHBy
ZXZpb3VzIG9uZQorICAgIGludCBtX21hc2tMYXllcklEOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gbV9tYXNrTGF5ZXI7CisgICAgaW50IG1fcmVwbGljYUxheWVySUQ7IC8vIGRpdHRvCisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBtX3JlcGxpY2FMYXllcjsKICAgICBpbnQgbV9sYXllcklkOwog
CiAgICAgLy8gUHJvcGVydGllcyBzeW5jaHJvbml6ZWQgZnJvbSB0aGUgYXNzb2NpYXRlZCBMYXll
ckNocm9taXVtLgpAQCAtMzI0LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbD4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXI7CiB9
OwogCi12b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0
b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGVuZCwgQ0NM
YXllclNvcnRlciopOwordm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxDQ0xheWVySW1wbCo+OjppdGVy
YXRvciBmaXJzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj46Oml0ZXJhdG9yIGVuZCwgQ0NMYXllclNv
cnRlciopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwCmluZGV4IDk3ZDZk
MTg1YTA0YzcyMTFlYmJiMmFjODJmNTUzYzQyMjM5OWVmNDguLjJkNmQyZjdmN2E5ZWMwNTRkMDkw
OTE1NjFhMGM4YjQ3NzJhNWIzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmNwcApA
QCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rp
b25UeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4o
Q0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+
JiBpdCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Cit2b2lkIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpiZWdpbihDQ0xheWVySXRlcmF0b3I8
TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQp
CiB7CiAgICAgaXQubV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCA9IDA7CiAgICAgaXQu
bV9jdXJyZW50TGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclZhbHVlOjpMYXllckluZGV4UmVw
cmVzZW50aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZTsKQEAgLTQ0LDE1ICs0NCwxNSBAQCB2b2lkIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpiZWdpbihDQ0xheWVySXRlcmF0b3I8
TGF5ZXJUeXBlLCBSZW5kZQogICAgIG1faGlnaGVzdFRhcmdldFJlbmRlclN1cmZhY2VMYXllciA9
IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpCYWNrVG9Gcm9udDo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBl
LCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFt
ZSBBY3Rpb25UeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6
ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5
cGUsIEFjdGlvblR5cGU+JiBpdCkKIHsKICAgICBpdC5tX3RhcmdldFJlbmRlclN1cmZhY2VMYXll
ckluZGV4ID0gQ0NMYXllckl0ZXJhdG9yVmFsdWU6OkludmFsaWRUYXJnZXRSZW5kZXJTdXJmYWNl
TGF5ZXJJbmRleDsKICAgICBpdC5tX2N1cnJlbnRMYXllckluZGV4ID0gMDsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVu
YW1lIEFjdGlvblR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250
OjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rp
b25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXll
ckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgor
dm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRl
cmF0b3I8TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBl
PiYgaXQpCiB7CiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgbGF5ZXIgaGFzIGEgUlMsIG1vdmUgdG8g
aXRzIGxheWVyIGxpc3QuIE90aGVyd2lzZSwgdmlzaXQgdGhlIG5leHQgbGF5ZXIgaW4gdGhlIGN1
cnJlbnQgUlMgbGF5ZXIgbGlzdC4KICAgICBpZiAoaXQuY3VycmVudExheWVyUmVwcmVzZW50c0Nv
bnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewpAQCAtODUsMjMgKzg1LDIzIEBAIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NMYXllckl0ZXJhdG9yPExh
eWVyVHlwZSwgUmVuZGVyCiAgICAgfQogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBl
LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KLXZvaWQg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRv
cjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5
ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQogewogICAgIGl0Lm1f
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXggPSAwOwogICAgIGl0Lm1fY3VycmVudExheWVy
SW5kZXggPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKS5zaXplKCkgLSAxOwogICAg
IGdvVG9IaWdoZXN0SW5TdWJ0cmVlKGl0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci12
b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJh
dG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRv
ckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5
ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQogewogICAgIGl0Lm1f
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXggPSBDQ0xheWVySXRlcmF0b3JWYWx1ZTo6SW52
YWxpZFRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4OwogICAgIGl0Lm1fY3VycmVudExheWVy
SW5kZXggPSAwOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUs
IHR5cGVuYW1lIEFjdGlvblR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250
VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVy
U3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKIHsKICAgICAvLyBNb3ZlcyB0byB0aGUgcHJl
dmlvdXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgUlMgbGF5ZXIgbGlzdC4gVGhlbiB3ZSBjaGVjayBp
ZiB0aGUKICAgICAvLyBuZXcgY3VycmVudCBsYXllciBoYXMgaXRzIG93biBSUywgaW4gd2hpY2gg
Y2FzZSB0aGVyZSBhcmUgdGhpbmdzIGluIHRoYXQgUlMgbGF5ZXIgbGlzdCB0aGF0IGFyZSBoaWdo
ZXIsIHNvCkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpG
cm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXIKICAgICB9
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKK3RlbXBsYXRlIDx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFj
ZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Cit2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6
OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3I8TGF5ZXJU
eXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQpCiB7CiAg
ICAgaWYgKGl0LmN1cnJlbnRMYXllclJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE0NywyMyArMTQ3LDIzIEBAIHZvaWQgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRv
cjxMCiB9CiAKIC8vIERlY2xhcmUgZWFjaCBvZiB0aGUgYWJvdmUgZnVuY3Rpb25zIGZvciBMYXll
ckNocm9taXVtIGFuZCBDQ0xheWVySW1wbCBjbGFzc2VzIHNvIHRoYXQgdGhleSBhcmUgbGlua2Vk
LgotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVn
aW4oQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwg
QmFja1RvRnJvbnQ+ICYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpC
YWNrVG9Gcm9udDo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0sIEJhY2tUb0Zyb250PiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBCYWNrVG9Gcm9udD4mKTsKLQotdGVtcGxhdGUgdm9p
ZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJh
dG9yPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIEJhY2tUb0Zyb250PiYpOwotdGVtcGxh
dGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6ZW5kKENDTGF5ZXJJ
dGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKLXRl
bXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NM
YXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIEJhY2tUb0Zyb250PiYp
OwotCi10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpu
ZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0s
IEZyb250VG9CYWNrPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpG
cm9udFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0sIEZyb250VG9CYWNrPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21p
dW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgRnJvbnRUb0JhY2s+Jik7Ci10ZW1wbGF0ZSB2b2lk
IENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJl
ZShDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBG
cm9udFRvQmFjaz4mKTsKLQotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpG
cm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3I8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZSwgRnJvbnRUb0JhY2s+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2UsIEZyb250VG9CYWNrPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBD
Q1JlbmRlclN1cmZhY2UsIEZyb250VG9CYWNrPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0
ZXJhdG9yPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIEZyb250VG9CYWNrPiYpOwordGVt
cGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NM
YXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBCYWNrVG9Gcm9udD4gJik7Cit0ZW1wbGF0ZSB2b2lk
IENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjplbmQoQ0NMYXllckl0ZXJhdG9y
PExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLCBCYWNrVG9Gcm9udD4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21p
dW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVt
LCBCYWNrVG9Gcm9udD4mKTsKKwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8
Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKK3RlbXBsYXRl
IHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRl
cmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2Us
IEJhY2tUb0Zyb250PiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpC
YWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xh
eWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIEJhY2tUb0Zyb250PiYpOworCit0ZW1wbGF0ZSB2
b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVy
YXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSwgRnJvbnRUb0JhY2s+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJ
dGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hy
b21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCBGcm9udFRvQmFjaz4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9u
czo6RnJvbnRUb0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgRnJvbnRU
b0JhY2s+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIEZy
b250VG9CYWNrPiYpOworCit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZy
b250VG9CYWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5
ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgRnJvbnRUb0JhY2s+Jik7Cit0ZW1wbGF0ZSB2b2lk
IENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjplbmQoQ0NMYXllckl0ZXJhdG9y
PENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBGcm9u
dFRvQmFjaz4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRU
b0JhY2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgRnJvbnRUb0JhY2s+Jik7Cit0ZW1wbGF0ZSB2b2lkIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShD
Q0xheWVySXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRl
clN1cmZhY2UsIEZyb250VG9CYWNrPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckl0ZXJhdG9yLmgKaW5kZXggYmU5ODVlMTUzMTAzZjUwOGVhNDUyMmI5OTk4
ZjkwYTA5NGQ1YTY3MC4uZDg5YmQ2OTEyNzcxN2E1OTcxNTVlNTc0MDkwNGY3ZWE0NmJmN2NkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmgKQEAgLTkyLDE1ICs5MiwxNSBAQCBzdHJ1Y3Qg
Q0NMYXllckl0ZXJhdG9yVmFsdWUgewogfTsKIAogLy8gQW4gaXRlcmF0b3IgY2xhc3MgZm9yIHdh
bGtpbmcgb3ZlciBsYXllcnMgaW4gdGhlIFJlbmRlclN1cmZhY2UtTGF5ZXIgdHJlZS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBJdGVyYXRvckFjdGlvblR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0
eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBJ
dGVyYXRvckFjdGlvblR5cGU+CiBjbGFzcyBDQ0xheWVySXRlcmF0b3IgewotICAgIHR5cGVkZWYg
Q0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEl0ZXJhdG9yQWN0
aW9uVHlwZT4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKKyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRv
cjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUsIEl0ZXJhdG9yQWN0aW9u
VHlwZT4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAogcHVibGljOgogICAgIENDTGF5ZXJJdGVyYXRv
cigpIDogbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KDApIHsgfQogCi0gICAgc3RhdGljIENDTGF5
ZXJJdGVyYXRvclR5cGUgYmVnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgdHJ1ZSk7IH0KLSAgICBzdGF0aWMgQ0NMYXllckl0ZXJhdG9yVHlw
ZSBlbmQoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJdGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgZmFsc2UpOyB9CisgICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5cGUgYmVnaW4oY29uc3Qg
TGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xheWVySXRlcmF0
b3JUeXBlKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHRydWUpOyB9CisgICAgc3RhdGljIENDTGF5
ZXJJdGVyYXRvclR5cGUgZW5kKGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBm
YWxzZSk7IH0KIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUmIG9wZXJhdG9yKysoKSB7IG1fYWN0
aW9ucy5uZXh0KCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENDTGF5ZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0CkBAIC0xMTcsMTAgKzExNywxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpIGNv
bnN0IHsgcmV0dXJuICFyZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpICYmIGN1cnJlbnRM
YXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCk7IH0KICAgICBib29sIHJl
cHJlc2VudHNJdHNlbGYoKSBjb25zdCB7IHJldHVybiAhcmVwcmVzZW50c1RhcmdldFJlbmRlclN1
cmZhY2UoKSAmJiAhcmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKTsgfQogCi0g
ICAgTGF5ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJldHVybiAo
Km1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdClbbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRl
eF0uZ2V0KCk7IH0KKyAgICBMYXllclR5cGUqIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIGNv
bnN0IHsgcmV0dXJuIGdldFJhd1B0cigoKm1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdClbbV90YXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleF0pOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NMYXllckl0
ZXJhdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBib29sIHN0YXJ0KQorICAgIENDTGF5ZXJJdGVyYXRvcihjb25zdCBMYXllckxpc3Qq
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGJvb2wgc3RhcnQpCiAgICAgICAgIDogbV9yZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAgewogICAgICAgICBp
ZiAoc3RhcnQgJiYgIXJlbmRlclN1cmZhY2VMYXllckxpc3QtPmlzRW1wdHkoKSkKQEAgLTEyOSwx
NiArMTI5LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2FjdGlvbnMuZW5kKCp0aGlzKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgTGF5ZXJUeXBlKiBjdXJyZW50TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpID8gdGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyKCkgOiB0YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKVttX2N1
cnJlbnRMYXllckluZGV4XS5nZXQoKTsgfQorICAgIGlubGluZSBzdGF0aWMgTGF5ZXJDaHJvbWl1
bSogZ2V0UmF3UHRyKGNvbnN0IFJlZlB0cjxMYXllckNocm9taXVtPiYgcHRyKSB7IHJldHVybiBw
dHIuZ2V0KCk7IH0KKyAgICBpbmxpbmUgc3RhdGljIENDTGF5ZXJJbXBsKiBnZXRSYXdQdHIoQ0NM
YXllckltcGwqIHB0cikgeyByZXR1cm4gcHRyOyB9CisKKyAgICBpbmxpbmUgTGF5ZXJUeXBlKiBj
dXJyZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0
UmVuZGVyU3VyZmFjZSgpID8gdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkgOiBnZXRSYXdQdHIo
dGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKClbbV9jdXJyZW50TGF5ZXJJbmRleF0pOyB9CiAK
ICAgICBpbmxpbmUgYm9vbCBjdXJyZW50TGF5ZXJSZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVy
U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3Vy
ZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8TGF5ZXJUeXBlPihjdXJyZW50TGF5ZXIoKSwgdGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyKCktPmlkKCkpOyB9CiAgICAgaW5saW5lIGJvb2wgY3VycmVudExh
eWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRMYXllckluZGV4ID09IENDTGF5ZXJJdGVyYXRvclZhbHVlOjpMYXllckluZGV4UmVwcmVzZW50
aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQogCiAgICAgaW5saW5lIFJlbmRlclN1cmZhY2VUeXBl
KiB0YXJnZXRSZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFj
ZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsgfQotICAgIGlubGluZSBjb25zdCBWZWN0b3I8UmVm
UHRyPExheWVyVHlwZT4gPiYgdGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKTsgfQorICAgIGlubGluZSBj
b25zdCBMYXllckxpc3QmIHRhcmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0
dXJuIHRhcmdldFJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KCk7IH0KIAogICAgIEl0ZXJhdG9y
QWN0aW9uVHlwZSBtX2FjdGlvbnM7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+
ID4qIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBjb25zdCBMYXllckxpc3QqIG1fcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKIAogICAgIC8vIFRoZSBpdGVyYXRvcidzIGN1cnJlbnQgcG9z
aXRpb24uCiAKQEAgLTE2MSwxNCArMTY0LDE0IEBAIHN0cnVjdCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zIHsKICAgICAvLyBXYWxrcyBsYXllcnMgc29ydGVkIGJ5IHotb3JkZXIgZnJvbSBiYWNrIHRv
IGZyb250LgogICAgIGNsYXNzIEJhY2tUb0Zyb250IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0
eXBlbmFtZSBBY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGJlZ2luKENDTGF5ZXJJdGVyYXRvcjxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOworICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJl
bmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgorICAgICAgICB2b2lkIGJlZ2lu
KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUs
IEFjdGlvblR5cGU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci0gICAgICAg
IHZvaWQgZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBB
Y3Rpb25UeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rp
b25UeXBlPgorICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXll
ckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOwogCi0gICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBBY3Rpb25UeXBlPgotICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+Jik7CisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVy
U3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+CisgICAgICAgIHZvaWQgbmV4dChDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rp
b25UeXBlPiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IG1faGlnaGVzdFRhcmdldFJl
bmRlclN1cmZhY2VMYXllcjsKQEAgLTE3NywxOCArMTgwLDE4IEBAIHN0cnVjdCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zIHsKICAgICAvLyBXYWxrcyBsYXllcnMgc29ydGVkIGJ5IHotb3JkZXIgZnJv
bSBmcm9udCB0byBiYWNrCiAgICAgY2xhc3MgRnJvbnRUb0JhY2sgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFj
ZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgYmVnaW4oQ0NMYXllckl0
ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+Jik7CisgICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+CisgICAgICAgIHZv
aWQgYmVnaW4oQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJm
YWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4K
LSAgICAgICAgdm9pZCBlbmQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGUsIEFjdGlvblR5cGU+Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVu
YW1lIEFjdGlvblR5cGU+CisgICAgICAgIHZvaWQgZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5
cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+Jik7CiAKLSAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5
cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgbmV4dChDQ0xheWVySXRlcmF0
b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KKyAgICAgICAgdm9pZCBu
ZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5
cGUsIEFjdGlvblR5cGU+Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0
aW9uVHlwZT4KLSAgICAgICAgdm9pZCBnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0
b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KKyAgICAgICAgdm9pZCBn
b1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXllckxpc3Qs
IFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOwogICAgIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY2YWE2MTRh
ODExNWE1NTU4YzJhMzc0MzhjNjgzOWRhNzU3ZDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9z
aXRpb24uaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uX2gKKyNkZWZpbmUgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb25faAorCisj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIE5vbi10ZW1wbGF0ZWQgY29uc3RhbnRzCitzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRp
b25WYWx1ZSB7CisgICAgc3RhdGljIGNvbnN0IGludCBJbnZhbGlkVGFyZ2V0UmVuZGVyU3VyZmFj
ZUxheWVySW5kZXggPSAtMTsKKyAgICAvLyBUaGlzIG11c3QgYmUgLTEgc2luY2UgdGhlIGl0ZXJh
dG9yIGFjdGlvbiBjb2RlIGFzc3VtZXMgdGhhdCB0aGlzIHZhbHVlIGNhbiBiZQorICAgIC8vIHJl
YWNoZWQgYnkgc3VidHJhY3Rpbmcgb25lIGZyb20gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBs
YXllciBpbiB0aGUgY3VycmVudAorICAgIC8vIHRhcmdldCBzdXJmYWNlJ3MgY2hpbGQgbGF5ZXIg
bGlzdCwgd2hpY2ggaXMgMC4KKyAgICBzdGF0aWMgY29uc3QgaW50IExheWVySW5kZXhSZXByZXNl
bnRpbmdUYXJnZXRSZW5kZXJTdXJmYWNlID0gLTE7Cit9OworCisvLyBBIHN0cnVjdCB0byBob2xk
IHRoZSBpdGVyYXRvcidzIGN1cnJlbnQgcG9zaXRpb24sIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUg
dmFyaW91cyBDQ0xheWVySXRlcmF0b3JBY3Rpb24gZnVuY3Rpb25zLCBmb3IgdGhlbSB0bworLy8g
cmVhZCBhbmQgdXBkYXRlLiBUaGlzIHN0cnVjdCBleGlzdHMgc28gdGhlIHRlbXBsYXRlZCBhY3Rp
b24gZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gYWNjZXNzIHRoZSBDQ0xheWVySXRlcmF0b3IgY2xh
c3MuCisvLworLy8gVGhlcmUgaXMgYSAxOjEgcmVsYXRpb25zaGlwIGJldHdlZW4gYW4gaW5zdGFu
Y2Ugb2YgdGhlIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uIGNsYXNzIGFuZCBhIENDTGF5ZXJJdGVy
YXRvckFjdGlvbnM6OkZvbyBjbGFzcywKKy8vIHNvIGFuIGl0ZXJhdG9yIGFjdGlvbiBjbGFzcyBj
YW4gaG9sZCBleHRyYSBwb3NpdGlvbiBkYXRhLCBpZiByZXF1aXJlZCwgaW4gaXRzIG93biBjbGFz
cyBpbnN0YW5jZS4KKy8vCisvLyBUaGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgaXRlcmF0b3Ig
aXMgaGVsZCBpbiB0d28gaW50ZWdlciB2YXJpYWJsZXMuCisvLyAtIFRoZSB0YXJnZXRSZW5kZXJT
dXJmYWNlTGF5ZXJJbmRleCBpcyBhIHBvc2l0aW9uIGluIHRoZSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LiBUaGlzIHBvaW50cyB0byBhIGxheWVyIHdoaWNoIG93bnMgdGhlIGN1cnJlbnQKKy8vIHRh
cmdldCBzdXJmYWNlLiBUaGlzIGlzIGEgdmFsdWUgZnJvbSAwIHRvIG4tMSAobiA9IHNpemUgb2Yg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCA9IG51bWJlciBvZiBzdXJmYWNlcykuIEEgdmFsdWUgb3V0
c2lkZSBvZgorLy8gdGhpcyByYW5nZSAoZm9yIGV4YW1wbGUsIENDTGF5ZXJJdGVyYXRvclBvc2l0
aW9uVmFsdWU6OkludmFsaWRUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCkgaXMgdXNlZCB0
byBpbmRpY2F0ZSBhIHBvc2l0aW9uCisvLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHRyZWUu
CisvLyAtIFRoZSBjdXJyZW50TGF5ZXJJbmRleCBpcyBhIHBvc2l0aW9uIGluIHRoZSBsaXN0IG9m
IGxheWVycyB0aGF0IGFyZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCB0YXJnZXQgc3VyZmFjZS4g
V2hlbiBwb2ludGluZyB0bworLy8gb25lIG9mIHRoZXNlIGxheWVycywgdGhpcyBpcyBhIHZhbHVl
IGZyb20gMCB0byBuLTEgKG4gPSBudW1iZXIgb2YgY2hpbGRyZW4pLiBTaW5jZSB0aGUgaXRlcmF0
b3IgbXVzdCBhbHNvIHN0b3AgYXQgdGhlIGxheWVycworLy8gcmVwcmVzZW50aW5nIHRoZSB0YXJn
ZXQgc3VyZmFjZSwgdGhpcyBpcyBkb25lIGJ5IHNldHRpbmcgdGhlIGN1cnJlbnRMYXllckluZGV4
IHRvIGEgdmFsdWUgb2YKKy8vIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkxheWVyUmVw
cmVzZW50aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZS4KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK3N0cnVj
dCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbiB7CisgICAgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24o
KSA6IHJlbmRlclN1cmZhY2VMYXllckxpc3QoMCkgeyB9CisgICAgZXhwbGljaXQgQ0NMYXllckl0
ZXJhdG9yUG9zaXRpb24oY29uc3QgTGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSA6
IHJlbmRlclN1cmZhY2VMYXllckxpc3QocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyB9CisKKyAg
ICBpbmxpbmUgc3RhdGljIExheWVyQ2hyb21pdW0qIGdldFJhd1B0cihjb25zdCBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4mIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9CisgICAgaW5saW5lIHN0YXRp
YyBDQ0xheWVySW1wbCogZ2V0UmF3UHRyKENDTGF5ZXJJbXBsKiBwdHIpIHsgcmV0dXJuIHB0cjsg
fQorCisgICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVyKCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSA/IHRhcmdldFJlbmRl
clN1cmZhY2VMYXllcigpIDogZ2V0UmF3UHRyKHRhcmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigp
W2N1cnJlbnRMYXllckluZGV4XSk7IH0KKworICAgIGlubGluZSBib29sIGN1cnJlbnRMYXllclJl
cHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldDxMYXllclR5
cGU+KGN1cnJlbnRMYXllcigpLCB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKSk7IH0K
KyAgICBpbmxpbmUgYm9vbCBjdXJyZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRMYXllckluZGV4ID09IENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uVmFsdWU6OkxheWVySW5kZXhSZXByZXNlbnRpbmdUYXJnZXRSZW5kZXJTdXJmYWNlOyB9
CisKKyAgICBpbmxpbmUgTGF5ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBnZXRSYXdQdHIoKCpyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KVt0YXJnZXRSZW5k
ZXJTdXJmYWNlTGF5ZXJJbmRleF0pOyB9CisgICAgaW5saW5lIFJlbmRlclN1cmZhY2VUeXBlKiB0
YXJnZXRSZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0UmVuZGVyU3VyZmFjZUxh
eWVyKCktPnJlbmRlclN1cmZhY2UoKTsgfQorICAgIGlubGluZSBjb25zdCBMYXllckxpc3QmIHRh
cmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRhcmdldFJlbmRlclN1
cmZhY2UoKS0+bGF5ZXJMaXN0KCk7IH0KKworICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID09IG90aGVyLnRhcmdldFJlbmRl
clN1cmZhY2VMYXllckluZGV4CisgICAgICAgICAgICAmJiBjdXJyZW50TGF5ZXJJbmRleCA9PSBv
dGhlci5jdXJyZW50TGF5ZXJJbmRleDsKKyAgICB9CisKKyAgICBjb25zdCBMYXllckxpc3QqIHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgaW50IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcklu
ZGV4OworICAgIGludCBjdXJyZW50TGF5ZXJJbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCmluZGV4IDc1Mjg1NTQ0
NzE3Y2ZkYjVhOWEyY2QzY2FmN2RmZDMwY2IyNzE5NjQuLmM0MzRhMWQ5NTEyNDYzNTUzNzcyNzY3
MjgyMDkwNzNlYzQ5ZjAwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCkBAIC0yOTUs
NyArMjk1LDcgQEAgdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVzKExheWVyTGlz
dDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRlcmEKICAgICBmbG9hdCBtaW5aID0gRkxU
X01BWDsKICAgICBmbG9hdCBtYXhaID0gLUZMVF9NQVg7CiAgICAgZm9yIChMYXllckxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gZmlyc3Q7IGl0IDwgbGFzdDsgaXQrKykgewotICAgICAgICBtX25v
ZGVzLmFwcGVuZChHcmFwaE5vZGUoaXQtPmdldCgpKSk7CisgICAgICAgIG1fbm9kZXMuYXBwZW5k
KEdyYXBoTm9kZSgqaXQpKTsKICAgICAgICAgR3JhcGhOb2RlJiBub2RlID0gbV9ub2Rlcy5hdCht
X25vZGVzLnNpemUoKSAtIDEpOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZh
Y2UgPSBub2RlLmxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIGlmICghbm9kZS5sYXll
ci0+ZHJhd3NDb250ZW50KCkgJiYgIXJlbmRlclN1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVy
LmgKaW5kZXggMmMzMGQ1ZGFlNGEwOTkwZjRjMjE0ZTBlZWZkMDYwMzc0YTcxY2I5Ni4uOGFiOWI3
NTgxNGU4Y2M2ZmEyZWNiYjFjYmRlODg3MWQyMTMwYzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0
ZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDQ0xheWVyU29ydGVyIHsKIHB1YmxpYzoKICAg
ICBDQ0xheWVyU29ydGVyKCk7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q0NMYXllcklt
cGw+ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gTGF5ZXJM
aXN0OwogCiAgICAgdm9pZCBzb3J0KExheWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlz
dDo6aXRlcmF0b3IgbGFzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDUwMWVlMTdkZTY5ZTRjMzgxYTZjYWI0ZTEyMGMyYjFhMmZmYmEwMTguLjgwZjhlNGM5ZmQxZTky
NTViNWRmNmVlM2JkOWZlOTNmZmI3ZTE5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtMTY5LDEzICsxNjksMTEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogCi0gICAgLy8gU3luY2hyb25pemUgdHJl
ZXMsIGlmIG9uZSBleGlzdHMgYXQgYWxsLi4uCi0gICAgaWYgKHJvb3RMYXllcigpKSB7Ci0gICAg
ICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVU
cmVlcyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7Ci0gICAgICAgIC8vIFdl
IG1heSBoYXZlIGFkZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3
aWxsIGNhdXNlIGhvc3RJbXBsIHRvIHZpc2l0IGl0cyBjb250cm9sbGVycy4KKyAgICBob3N0SW1w
bC0+c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExh
eWVyKCksIGhvc3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCkpKTsKKworICAgIC8vIFdlIG1heSBo
YXZlIGFkZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3aWxsIGNh
dXNlIGhvc3RJbXBsIHRvIHZpc2l0IGl0cyBjb250cm9sbGVycy4KKyAgICBpZiAocm9vdExheWVy
KCkpCiAgICAgICAgIGhvc3RJbXBsLT5zZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIAogICAgIGhvc3RJbXBsLT5z
ZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKICAgICBob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKHZpZXdwb3J0U2l6ZSgpKTsKQEAgLTMzNywxNiArMzM1LDE2IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaG9zdEltCiAgICAgLy8gSWYgdGhlIGZyb250YnVmZmVyIGlzIGNhY2hlZCwgdGhl
biBjbG9iYmVyIHRoZSBpbXBsIHRyZWUuIE90aGVyd2lzZSwKICAgICAvLyBwdXNoIG92ZXIgdGhl
IHRyZWUgY2hhbmdlcy4KICAgICBpZiAobV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLmNvbnRleHRIYXNDYWNoZWRGcm9udEJ1ZmZlcikgewotICAgICAgICBob3N0SW1wbC0+c2V0
Um9vdExheWVyKDApOworICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKG51bGxwdHIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJvb3RMYXllcigpKSB7Ci0gICAgICAg
IGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVl
cyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7Ci0gICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFkZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3aWxs
IGNhdXNlIGhvc3RJbXBsIHRvIHZpc2l0IGl0cyBjb250cm9sbGVycy4KKyAgICBob3N0SW1wbC0+
c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVy
KCksIGhvc3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCkpKTsKKworICAgIC8vIFdlIG1heSBoYXZl
IGFkZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3aWxsIGNhdXNl
IGhvc3RJbXBsIHRvIHZpc2l0IGl0cyBjb250cm9sbGVycy4KKyAgICBpZiAocm9vdExheWVyKCkp
CiAgICAgICAgIGhvc3RJbXBsLT5zZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKKwogfQogCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQpA
QCAtNDQwLDcgKzQzOCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0
dXJlcygpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRo
aXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9u
czo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CisgICAgdHlwZWRlZiBDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250
PiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7CiAgICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlz
dCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTMyLDcgKzUzMCw3IEBAIHN0YXRpYyB2b2lkIGxl
YXZlVGFyZ2V0UmVuZGVyU3VyZmFjZShWZWN0b3I8UmVuZGVyU3VyZmFjZVJlZ2lvbj4mIHN0YWNr
LCBSZW5kZXJTCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlwZSkK
IHsKICAgICAvLyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9u
IGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCi0gICAgdHlwZWRl
ZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsK
KyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAgICAvLyBUaGUg
c3RhY2sgaG9sZHMgb2NjbHVkZWQgcmVnaW9ucyBmb3Igc3VidHJlZXMgaW4gdGhlIFJlbmRlclN1
cmZhY2UtTGF5ZXIgdHJlZSwgc28gdGhhdCB3aGVuIHdlIGxlYXZlIGEgc3VidHJlZSB3ZSBtYXkK
ICAgICAvLyBhcHBseSBhIG1hc2sgdG8gaXQsIGJ1dCBub3QgdG8gdGhlIHBhcnRzIG91dHNpZGUg
dGhlIHN1YnRyZWUuCkBAIC01NjksNyArNTY3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QK
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8v
IFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVyLWRl
cGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBD
Q0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hy
b21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9y
VHlwZTsKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCmluZGV4IDRm
Yzg2OTQwMDk2Zjk3Mzg5ZTgzZWNjOThkZWJjMTRmMmQyNGEyNmQuLmM4NmQ3NGQ4NjFkYWY0ZTZl
MzI1ZDFjNTNmZDQ3ZjQ5ODY0Zjg2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcApAQCAtMTQ5LDExICsxNDksOSBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlU2hv
dWxkUmVuZGVyVG9TZXBhcmF0ZVN1cmZhY2UoTGF5ZXJUeXBlKiBsYXllciwgYm9vbCBheGlzQWxp
ZwogCiAvLyBSZWN1cnNpdmVseSB3YWxrcyB0aGUgbGF5ZXIgdHJlZSBzdGFydGluZyBhdCB0aGUg
Z2l2ZW4gbm9kZSBhbmQgY29tcHV0ZXMgYWxsIHRoZQogLy8gbmVjZXNzYXJ5IHRyYW5zZm9ybWF0
aW9ucywgY2xpcFJlY3RzLCByZW5kZXIgc3VyZmFjZXMsIGV0Yy4KLXRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIExheWVyU29y
dGVyPgotc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50
ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBmdWxsSGllcmFyY2h5TWF0cml4LCBSZW5kZXJTdXJmYWNlVHlwZSogbmVhcmVzdEFuY2VzdG9y
VGhhdE1vdmVzUGl4ZWxzLCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIGxheWVyTGlzdCwgTGF5ZXJT
b3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5
cGUsIHR5cGVuYW1lIExheWVyU29ydGVyPgorc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiBy
b290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBSZW5kZXJTdXJmYWNl
VHlwZSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzLCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIExheWVyTGlzdCYgbGF5ZXJMaXN0LCBMYXllclNvcnRlciogbGF5ZXJT
b3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
TGF5ZXJUeXBlPiA+IExheWVyTGlzdDsKLQogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMg
dGhlIG5ldyBtYXRyaXggdHJhbnNmb3JtYXRpb25zIHJlY3Vyc2l2ZWx5IGZvciB0aGlzCiAgICAg
Ly8gbGF5ZXIgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMuIEl0IGFsc28gY29tcHV0ZXMgdGhlIGFw
cHJvcHJpYXRlIHJlbmRlciBzdXJmYWNlcy4KICAgICAvLyBTb21lIGltcG9ydGFudCBwb2ludHMg
dG8gcmVtZW1iZXI6CkBAIC0zOTAsNyArMzg4LDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IGxheWVyLT5jaGlsZHJlbigpW2ldLmdl
dCgpOwotICAgICAgICBib29sIGRyYXdzQ29udGVudCA9IGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIExheWVy
U29ydGVyPihjaGlsZCwgcm9vdExheWVyLCBzdWJsYXllck1hdHJpeCwgbmV4dEhpZXJhcmNoeU1h
dHJpeCwgbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkZXNjZW5kYW50cywgbGF5ZXJTb3J0ZXIsIG1heFRleHR1cmVTaXplKTsKKyAgICAgICAg
Ym9vbCBkcmF3c0NvbnRlbnQgPSBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJ
bnRlcm5hbDxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUsIExheWVyU29y
dGVyPihjaGlsZCwgcm9vdExheWVyLCBzdWJsYXllck1hdHJpeCwgbmV4dEhpZXJhcmNoeU1hdHJp
eCwgbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LCBkZXNjZW5kYW50cywgbGF5ZXJTb3J0ZXIsIG1heFRleHR1cmVTaXplKTsKIAogICAgICAgICBp
ZiAoZHJhd3NDb250ZW50KSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlclN1cmZhY2Uo
KSkgewpAQCAtNDk1LDExICs0OTMsMTEgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gdG8gc2V0IHZpc2li
aWxpdHkgcmVjdHMgb24gYSBzZWNvbmQKIC8vIHRyZWUgcGFzcywgcmV2aXNlIGNhbGN1bGF0ZVZp
c2libGVMYXllclJlY3QoKSBzbyB0aGF0IHRoaXMgY2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUKIC8v
IHBhc3MgaW5zaWRlIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFs
PD4oKS4KLXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFj
ZVR5cGU+Ci1zdGF0aWMgdm9pZCB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVj
dHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitzdGF0aWMgdm9pZCB3YWxrTGF5ZXJzQW5kQ2FsY3Vs
YXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KQogewogICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlz
IGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKKyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxM
YXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUsIENDTGF5ZXJJdGVyYXRvckFj
dGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCiAgICAgQ0NMYXllckl0
ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0
KSB7CkBAIC01MTIsMTQgKzUxMCwxNCBAQCBzdGF0aWMgdm9pZCB3YWxrTGF5ZXJzQW5kQ2FsY3Vs
YXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cAogCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7Ci0gICAgV2ViQ29yZTo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgUmVu
ZGVyU3VyZmFjZUNocm9taXVtLCB2b2lkKj4obGF5ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4
LCBmdWxsSGllcmFyY2h5TWF0cml4LCAwLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxp
c3QsIDAsIG1heFRleHR1cmVTaXplKTsKLSAgICB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJs
ZUxheWVyUmVjdHM8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPihyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBXZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHlJbnRlcm5hbDxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgdm9pZD4obGF5ZXIsIHJvb3RMYXllciwg
cGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5TWF0cml4LCAwLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBsYXllckxpc3QsIDAsIG1heFRleHR1cmVTaXplKTsKKyAgICB3YWxrTGF5ZXJzQW5kQ2Fs
Y3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+KHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiBsYXllciwgQ0NMYXllckltcGwqIHJvb3RM
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8Q0NM
YXllckltcGw+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhU
ZXh0dXJlU2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxheWVyLCBDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXll
ckxpc3QsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7
Ci0gICAgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8Q0NMYXll
ckltcGwsIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllclNvcnRlcj4obGF5ZXIsIHJvb3RMYXllciwg
cGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5TWF0cml4LCAwLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBsYXllckxpc3QsIGxheWVyU29ydGVyLCBtYXhUZXh0dXJlU2l6ZSk7Ci0gICAgd2Fsa0xh
eWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+KHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eUludGVybmFsPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwq
PiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVyU29ydGVyPihsYXllciwgcm9vdExheWVyLCBwYXJl
bnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIDAsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGxheWVyTGlzdCwgbGF5ZXJTb3J0ZXIsIG1heFRleHR1cmVTaXplKTsKKyAgICB3YWxrTGF5ZXJz
QW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVy
SW1wbCo+LCBDQ1JlbmRlclN1cmZhY2U+KHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oCmluZGV4IDJlMGNiY2YyYzU4NWU4MjE1ZDI4NmRlZTliNjFlNTM1MTgwY2ZmYWQuLmRmMjNj
ZDAxZmVhYjU4NGU1YmM4YzY3YWE1NjQyZGZhMjM3YjYwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVZpc2libGVM
YXllclJlY3QoTGF5ZXJUeXBlKik7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSosIExheWVyQ2hyb21pdW0qIHJvb3RM
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+JiBsYXllckxpc3QsIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0gICAgc3RhdGlj
IHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiwg
Q0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVu
dE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgs
IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZl
Y3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciosIGlu
dCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiwgQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBDQ0xh
eWVyU29ydGVyKiwgaW50IG1heFRleHR1cmVTaXplKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4gc3RhdGljIGJvb2wgcmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQo
TGF5ZXJUeXBlKiwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkMzBjNjhjMzc4NjIxMWQ4NWFkNWJkYzJjOTdk
YjcxNjMwNjZkYzk3Li5lNjhiOWU5ODAyZTBmODg3YjhiYTNiMWQ3NWJjZGNiOGYyNGZlZTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBA
QCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9zb3VyY2VGcmFtZU51bWJlcigtMSkKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1f
c2Nyb2xsTGF5ZXJJbXBsKDApCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92
aXNpYmxlKHRydWUpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQpAQCAtMTM0LDcgKzEzNSw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVy
SW1wbCogcm9vdERyYXdMYXllciwKICAgICAvLyBkYW1hZ2UgcmVjdC4gVGhlIHJvb3QgZGFtYWdl
IHJlY3QgaXMgdGhlbiB1c2VkIHRvIHNjaXNzb3IgZWFjaCBzdXJmYWNlLgogCiAgICAgZm9yIChp
bnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJm
YWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIENDTGF5ZXJJbXBsKiBy
ZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0u
Z2V0KCk7CisgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF07CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSog
cmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAg
ICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPmRhbWFn
ZVRyYWNrZXIoKS0+dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShyZW5kZXJTdXJmYWNlLT5sYXll
ckxpc3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpKTsKQEAgLTE5OCw3ICsxOTksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQog
ICAgIG1fcm9vdERhbWFnZVJlY3QgPSByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1h
Z2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAKICAgICBmb3IgKGludCBzdXJmYWNl
SW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+
PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZh
Y2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAg
ICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Rbc3VyZmFjZUluZGV4XTsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJm
YWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKICAgICAgICAgT3du
UHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclN1cmZh
Y2UpOwpAQCAtMjEwLDcgKzIxMSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3Vs
YXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAKICAgICAg
ICAgY29uc3QgQ0NMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwg
bGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgICAgICBDQ0xheWVySW1w
bCogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBDQ0xh
eWVySW1wbCogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF07CiAgICAgICAgICAgICBpZiAo
bGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTI5NCw3ICsyOTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRy
YXdMYXllcnMoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFzc2VzLnNpemUoKTsgKytp
KQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5kZXJQYXNzKHBhc3Nlc1tpXS5nZXQo
KSk7CiAKLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJh
dG9yVHlwZTsKKyAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAg
LTM2Myw3ICszNjQsNyBAQCBzdGF0aWMgQ0NMYXllckltcGwqIGZpbmRTY3JvbGxMYXllcihDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyKQordm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4g
bGF5ZXIpCiB7CiAgICAgbV9yb290TGF5ZXJJbXBsID0gbGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBlNDM4ZGIwYzRhM2IzMTAwMGFiOWIyZWI4MTAxNmUz
M2NjOWJhMTkwLi5mNzdlMGViODQyMTczZjcxY2ZhNDc3Nzc0ZTk1YjMzNDczOTEyYWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC05NCw5ICs5NCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWFkYmFjayh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKIAog
ICAgIENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllcklt
cGwuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
Pik7CisgICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOworICAg
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKSB7IHJldHVybiBtX3Jv
b3RMYXllckltcGwucmVsZWFzZSgpOyB9CiAKLSAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVySW1wbC5nZXQoKTsgfQorICAgIENDTGF5ZXJJ
bXBsKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXJJbXBsOyB9CiAK
ICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lk
IHNldFZpc2libGUoYm9vbCk7CkBAIC0xMzYsNyArMTM3LDcgQEAgcHJvdGVjdGVkOgogICAgIGlu
dCBtX2ZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxD
Q0xheWVySW1wbD4gPiBDQ0xheWVyTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1w
bCo+IENDTGF5ZXJMaXN0OwogCiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhD
Q1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKICAgICB2b2lkIGNvbXB1dGVQaW5jaFpv
b21EZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CkBAIC0xNTMsOCArMTU0
LDggQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAKICAgICBP
d25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBt
X3Njcm9sbExheWVySW1wbDsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1w
bDsKKyAgICBDQ0xheWVySW1wbCogbV9zY3JvbGxMYXllckltcGw7CiAgICAgQ0NTZXR0aW5ncyBt
X3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgYm9vbCBtX3Zpc2li
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAppbmRleCAzOWE5NTk1MWRkZjNiYzlm
NDQ5NzU0NDI3MjI5ZTVjNTkzYzI4N2M3Li45ZDlhNGRkMTA0ZTk5MjM4MDQ4Y2MzYzU2ZGIxMWM4
MzhhMGNjZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKQEAgLTM1LDkgKzM1
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1BsdWdpbkxheWVySW1wbCA6IHB1
YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NQbHVn
aW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQbHVn
aW5MYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENDUGx1Z2luTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NQbHVnaW5MYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NQbHVnaW5M
YXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAxYmNlYzkyNjBl
NjQ3NmIyY2YwZjYzOWE4NzRkOTE1ZjA2OGE3MjMxLi5lNWU2ODNhNTIzNmVhZDU5NTVhOGIzN2Rm
MTg3ZGUxZWVmZjg2N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtOTUsNyAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3Nr
aXBzRHJhdzsgfQogCiAgICAgdm9pZCBjbGVhckxheWVyTGlzdCgpIHsgbV9sYXllckxpc3QuY2xl
YXIoKTsgfQotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGxheWVyTGlzdCgpIHsg
cmV0dXJuIG1fbGF5ZXJMaXN0OyB9CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlz
dCgpIHsgcmV0dXJuIG1fbGF5ZXJMaXN0OyB9CiAKICAgICB2b2lkIHNldE1hc2tMYXllcihDQ0xh
eWVySW1wbCogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFza0xheWVyOyB9CiAKQEAgLTEz
Myw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fb3JpZ2lu
VHJhbnNmb3JtOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwogICAgIEludFJlY3Qg
bV9jbGlwUmVjdDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IG1fbGF5ZXJMaXN0
OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJMaXN0OwogCiAgICAgLy8gVGhlIG5l
YXJlc3QgYW5jZXN0b3IgdGFyZ2V0IHN1cmZhY2UgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGNvbnRl
bnRzIG9mIHRoaXMgc3VyZmFjZSwgYW5kIHRoYXQgaXMgZ29pbmcKICAgICAvLyB0byBtb3ZlIHBp
eGVscyB3aXRoaW4gdGhlIHN1cmZhY2UgKHN1Y2ggYXMgd2l0aCBhIGJsdXIpLiBUaGlzIGNhbiBw
b2ludCB0byBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCmlu
ZGV4IGM3ZWRjMThiMmMyODRjMjI4YTkyMTU3YTZhOTdjMTkzNDViOGZiN2YuLjJlNzQ0MTY2NmY5
OWYzNjk4MTkyNTRhMGM0NTcwYzdkNjZkNmJjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRD
b2xvckxheWVySW1wbC5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIExheWVyUmVuZGVyZXJDaHJv
bWl1bTsKIAogY2xhc3MgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBs
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+
IGNyZWF0ZShpbnQgaWQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJ
bXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
Q1NvbGlkQ29sb3JMYXllckltcGwoaWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1NvbGlkQ29sb3JMYXllckltcGwoaWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENv
bG9yTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA3YWQ3
MTU5OWIyMTM2NTg1OGExYzVhNWY3YTljZjQyNDFlYTA2OGIwLi43ZTYzN2NmZmI0Y2M3YmY3YmRh
YWY5ZDYwOWJkMmEzNTYxNDlmZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBA
IC0zNyw5ICszNyw5IEBAIGNsYXNzIERyYXdhYmxlVGlsZTsKIAogY2xhc3MgQ0NUaWxlZExheWVy
SW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsKGlkKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NUaWxlZExheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1Rp
bGVkTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCBjYWE3
MmRmYjkyNzRmYjA4YmI4MzdhMmViOGY5MjliMTY1OTY4YTI3Li40YzRlMjMxMDJiODg5NGEwNjIy
ZWNmMGE0NDc0OGY3MGE1ZmM2ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBA
IC00Myw5ICs0Myw5IEBAIHRlbXBsYXRlPGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21l
bnRTaGFkZXI+IGNsYXNzIFByb2dyYW1CaW5kaW5nOwogY2xhc3MgQ0NWaWRlb0xheWVySW1wbCA6
IHB1YmxpYyBDQ0xheWVySW1wbAogICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBWaWRl
b0ZyYW1lUHJvdmlkZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
Q0NWaWRlb0xheWVySW1wbD4gY3JlYXRlKGludCBpZCwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92
aWRlcikKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsPiBjcmVhdGUoaW50
IGlkLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDQ1ZpZGVvTGF5ZXJJbXBsKGlkLCBwcm92aWRlcikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDVmlkZW9MYXllckltcGwoaWQsIHByb3ZpZGVyKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKaW5kZXggYTlmN2Ix
YzFhMWU4OWYxZGJjZjlmNTAzMzRjMDVmM2ExMzNlMDM4YS4uMmUxZDllYzk1ODNlNDQzZWFiN2Ux
MmVlZGExZWQxYmZmNTk1ODBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1lc3BhY2UgewogCi12b2lkIGV4ZWN1dGVDYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIHJvb3QsIFZlY3Rv
cjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit2b2lkIGV4
ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIHJv
b3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAg
IENDTGF5ZXJTb3J0ZXIgbGF5ZXJTb3J0ZXI7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7Ci0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBkdW1teUxheWVy
TGlzdDsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBkdW1teUxheWVyTGlzdDsKICAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAogICAgIC8vIFNhbml0eSBjaGVjazogVGhlIHRl
c3QgaXRzZWxmIHNob3VsZCBjcmVhdGUgdGhlIHJvb3QgbGF5ZXIncyByZW5kZXIgc3VyZmFjZSwg
c28KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKENDTGF5ZXJJ
bXBsKiByb290KQogICAgIC8vICAgMi4gdXBkYXRpbmcgYWxsIGRhbWFnZSB0cmFja2VycyBpbiB0
aGUgY29ycmVjdCBvcmRlcgogICAgIC8vICAgMy4gcmVzZXR0aW5nIGFsbCB1cGRhdGVSZWN0cyBh
bmQgcHJvcGVydHlDaGFuZ2VkIGZsYWdzIGZvciBhbGwgbGF5ZXJzIGFuZCBzdXJmYWNlcy4KIAot
ICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
KyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIGV4
ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CiAKICAgICAvLyBJdGVyYXRlIGJhY2stdG8tZnJvbnQsIHNvIHRoYXQg
ZGFtYWdlIGNvcnJlY3RseSBwcm9wYWdhdGVzIGZyb20gZGVzY2VuZGFudCBzdXJmYWNlcyB0byBh
bmNlc3RvcnMuCkBAIC03NiwxMCArNzYsMTAgQEAgdm9pZCBlbXVsYXRlRHJhd2luZ09uZUZyYW1l
KENDTGF5ZXJJbXBsKiByb290KQogICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JT
dWJ0cmVlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0
aE9uZVN1cmZhY2UoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRo
T25lU3VyZmFjZSgpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDIpOwogCiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygp
KTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtOTIs
MjIgKzkyLDIyIEBAIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKQogICAgIGNoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkp
OwogICAgIGNoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgzMCwgMzApKTsKICAgICBjaGlsZC0+c2V0
RHJhd3NDb250ZW50KHRydWUpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkKTsKKyAgICByb290
LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHJvb3QucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJm
YWNlcygpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJm
YWNlcygpCiB7CiAgICAgLy8gVGhpcyB0ZXN0IHRyZWUgaGFzIHR3byByZW5kZXIgc3VyZmFjZXM6
IG9uZSBmb3IgdGhlIHJvb3QsIGFuZCBvbmUgZm9yCiAgICAgLy8gY2hpbGQxLiBBZGRpdGlvbmFs
bHksIHRoZSByb290IGhhcyBhIHNlY29uZCBjaGlsZCBsYXllciwgYW5kIGNoaWxkMSBoYXMgdHdv
CiAgICAgLy8gY2hpbGRyZW4gb2YgaXRzIG93bi4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBj
aGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
Y2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGdyYW5kQ2hpbGQxID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGdyYW5kQ2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gY2hpbGQxID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7
CiAKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIHJvb3Qt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBA
QCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygp
CiAgICAgZ3JhbmRDaGlsZDItPnNldEJvdW5kcyhJbnRTaXplKDYsIDgpKTsKICAgICBncmFuZENo
aWxkMi0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogCi0gICAgY2hpbGQxLT5hZGRDaGlsZChncmFu
ZENoaWxkMSk7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMik7Ci0gICAgcm9vdC0+
YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICByb290LT5hZGRDaGlsZChjaGlsZDIpOworICAgIGNoaWxk
MS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDEucmVsZWFzZSgpKTsKKyAgICBjaGlsZDEtPmFkZENoaWxk
KGdyYW5kQ2hpbGQyLnJlbGVhc2UoKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQxLnJlbGVh
c2UoKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQyLnJlbGVhc2UoKSk7CiAKICAgICByZXR1
cm4gcm9vdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQogewotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CiAK
ICAgICAvLyBTZXR1cCBpbmNsdWRlcyBnb2luZyBwYXN0IHRoZSBmaXJzdCBmcmFtZSB3aGljaCBh
bHdheXMgZGFtYWdlcyBldmVyeXRoaW5nLCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGFjdHVhbGx5
IHBlcmZvcm0gc3BlY2lmaWMgdGVzdHMuCkBAIC0xNTYsOSArMTU2LDkgQEAgUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKICAgICBy
ZXR1cm4gcm9vdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKQorUGFzc093blB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiB7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJmYWNl
cygpOwogCiAgICAgLy8gU2V0dXAgaW5jbHVkZXMgZ29pbmcgcGFzdCB0aGUgZmlyc3QgZnJhbWUg
d2hpY2ggYWx3YXlzIGRhbWFnZXMgZXZlcnl0aGluZywgc28KICAgICAvLyB0aGF0IHdlIGNhbiBh
Y3R1YWxseSBwZXJmb3JtIHNwZWNpZmljIHRlc3RzLgpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1Rf
RihDQ0RhbWFnZVRyYWNrZXJUZXN0LCBzYW5pdHlDaGVja1Rlc3RUcmVlV2l0aE9uZVN1cmZhY2Up
CiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHNpbXBsZSB0ZXN0IHRyZWUgd2lsbCBhY3R1
YWxseSBwcm9kdWNlIHRoZSBleHBlY3RlZCByZW5kZXIKICAgICAvLyBzdXJmYWNlcyBhbmQgbGF5
ZXIgbGlzdHMuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRV
cFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKIAogICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxzaXplX3Q+KDIpLCByb290LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlz
dCgpLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEsIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+bGF5
ZXJMaXN0KClbMF0tPmlkKCkpOwpAQCAtMTkzLDEwICsxOTMsMTAgQEAgVEVTVF9GKENDRGFtYWdl
VHJhY2tlclRlc3QsIHNhbml0eUNoZWNrVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMpCiAgICAgLy8g
U2FuaXR5IGNoZWNrIHRoYXQgdGhlIGNvbXBsZXggdGVzdCB0cmVlIHdpbGwgYWN0dWFsbHkgcHJv
ZHVjZSB0aGUgZXhwZWN0ZWQgcmVuZGVyCiAgICAgLy8gc3VyZmFjZXMgYW5kIGxheWVyIGxpc3Rz
LgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJl
ZVdpdGhUd29TdXJmYWNlcygpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKIAotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGNoaWxkMiA9IHJvb3QtPmNoaWxkcmVuKClbMV07CisgICAgQ0NMYXllckltcGwqIGNoaWxk
MSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMiA9
IHJvb3QtPmNoaWxkcmVuKClbMV0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVj
dCA9IGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1h
Z2VSZWN0KCk7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0ID0gcm9vdC0+cmVuZGVyU3Vy
ZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAKQEAgLTIxMiw4
ICsyMTIsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJl
ZVdpdGhUd29TdXJmYWNlcykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURh
bWFnZUZvclVwZGF0ZVJlY3RzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIEND
TGF5ZXJJbXBsKiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBD
QVNFIDE6IFNldHRpbmcgdGhlIHVwZGF0ZSByZWN0IHNob3VsZCBjYXVzZSB0aGUgY29ycmVzcG9u
ZGluZyBkYW1hZ2UgdG8gdGhlIHN1cmZhY2UuCiAgICAgLy8KQEAgLTI0Myw4ICsyNDMsOCBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiAK
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JQcm9wZXJ0eUNoYW5n
ZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJv
b3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRl
QW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxk
ID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIC8vIENBU0UgMTogVGhlIGxheWVy
J3MgcHJvcGVydHkgY2hhbmdlZCBmbGFnIHRha2VzIHByaW9yaXR5IG92ZXIgdXBkYXRlIHJlY3Qu
CiAgICAgLy8KQEAgLTI4NCw4ICsyODQsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXllcikKICAgICAvLyBJZiBhIGxheWVyIGlzIHRy
YW5zZm9ybWVkLCB0aGUgZGFtYWdlIHJlY3Qgc2hvdWxkIHN0aWxsIGVuY2xvc2UgdGhlIGVudGly
ZQogICAgIC8vIHRyYW5zZm9ybWVkIGxheWVyLgogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7
CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdGF0aW9uOwogICAgIHJvdGF0aW9uLnJvdGF0ZSg0
NSk7CkBAIC0zMTcsMTAgKzMxNywxMCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5RGFtYWdlRm9yVHJhbnNmb3JtZWRMYXllcikKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRl
c3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5nTGF5ZXIpCiB7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBd
OworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVX
aXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJl
bigpWzBdLmdldCgpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6
Y3JlYXRlKDMpLmxlYWtQdHIoKTsKICAgICBjaGlsZDItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
NDAwLCAzODApKTsKICAgICBjaGlsZDItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8o
KSk7CiAgICAgY2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CkBAIC0zMjgsNyArMzI4
LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0Fu
ZFJlbW92aW5nTGF5ZXIpCiAKICAgICAvLyBDQVNFIDE6IEFkZGluZyBhIG5ldyBsYXllciBzaG91
bGQgY2F1c2UgdGhlIGFwcHJvcHJpYXRlIGRhbWFnZS4KICAgICAvLwotICAgIHJvb3QtPmFkZENo
aWxkKGNoaWxkMik7CisgICAgcm9vdC0+YWRkQ2hpbGQoYWRvcHRQdHIoY2hpbGQyKSk7CiAgICAg
ZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIFNhbml0eSBjaGVj
ayAtIGFsbCAzIGxheWVycyBzaG91bGQgYmUgb24gdGhlIHNhbWUgcmVuZGVyIHN1cmZhY2U7IHJl
bmRlciBzdXJmYWNlcyBhcmUgdGVzdGVkIGVsc2V3aGVyZS4KQEAgLTM1MywxNSArMzUzLDE1IEBA
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1v
dmluZ0xheWVyKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9y
TXVsdGlwbGVMYXllcnMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRl
QW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5
ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIENDTGF5
ZXJJbXBsKiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpLmxlYWtQdHIoKTsKICAgICBj
aGlsZDItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNDAwLCAzODApKTsKICAgICBjaGlsZDItPnNl
dEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgY2hpbGQyLT5zZXRCb3VuZHMo
SW50U2l6ZSg2LCA4KSk7CiAgICAgY2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAg
cm9vdC0+YWRkQ2hpbGQoY2hpbGQyKTsKKyAgICByb290LT5hZGRDaGlsZChhZG9wdFB0cihjaGls
ZDIpKTsKIAogICAgIC8vIEluIHRoaXMgdGVzdCB3ZSBkb24ndCB3YW50IHRoZSBhYm92ZSB0cmVl
IG1hbmlwdWxhdGlvbiB0byBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgZnJhbWUuCiAg
ICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKQEAgLTM3OCwxMCArMzc4LDEw
IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxh
eWVycykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck5lc3Rl
ZFN1cmZhY2VzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNl
dFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNo
aWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGls
ZDIgPSByb290LT5jaGlsZHJlbigpWzFdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRD
aGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMo
KTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsK
KyAgICBDQ0xheWVySW1wbCogY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKKyAg
ICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJl
bigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRS
ZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC00MTUsOSArNDE1LDkgQEAgVEVTVF9GKENDRGFtYWdl
VHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclN1cmZhY2VDaGFuZ2VGcm9tRGVzY2VuZGFudExh
eWVyKQogICAgIC8vIFRoaXMgaXMgYSB0cmlja3kgY2FzZSwgc2luY2Ugb25seSB0aGUgZmlyc3Qg
Z3JhbmRDaGlsZCBjaGFuZ2VzLCBidXQgdGhlIGVudGlyZQogICAgIC8vIHN1cmZhY2Ugc2hvdWxk
IGJlIG1hcmtlZCBkaXJ0eS4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF07CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29T
dXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBd
LmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClb
MF0tPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsK
ICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7CiAKQEAgLTQ0Nyw5ICs0NDcsOCBAQCBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yU3VyZmFjZUNoYW5nZUZyb21B
bmNlc3RvckxheWVyKQogICAgIC8vICAgICAgICBzaG91bGQgYmUgY29tcGxldGVseSB1bmNoYW5n
ZWQsIHNpbmNlIHdlIGFyZSBvbmx5IHRyYW5zZm9ybWluZyBpdCwgd2hpbGUgdGhlCiAgICAgLy8g
ICAgICAgIHJvb3Qgc3VyZmFjZSB3b3VsZCBiZSBkYW1hZ2VkIGFwcHJvcHJpYXRlbHkuCiAKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3
b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGls
ZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5j
aGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9v
dCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVy
SW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3Qg
Y2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNDY5
LDggKzQ2OCw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JT
dXJmYWNlQ2hhbmdlRnJvbUFuY2VzdG9yTGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRpbmdBbmRSZW1vdmluZ1JlbmRlclN1cmZhY2VzKQogewot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRo
VHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNo
aWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0
VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSBy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7
CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBAIC01MTAsOCArNTA5LDggQEAgVEVT
VF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5n
UmVuZGVyU3VyZmFjZXMpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0Rh
bWFnZVdoZW5Ob3RoaW5nQ2hhbmdlZCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsK
KyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAg
ICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVj
dDsKIApAQCAtNTM0LDggKzUzMyw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJp
ZnlOb0RhbWFnZVdoZW5Ob3RoaW5nQ2hhbmdlZCkKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRl
c3QsIHZlcmlmeU5vRGFtYWdlRm9yVXBkYXRlUmVjdFRoYXREb2VzTm90RHJhd0NvbnRlbnQpCiB7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdp
dGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+
Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9
IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVj
dDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3Q7CiAKQEAgLTU1MSwxMCArNTUwLDEwIEBA
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZUZvclVwZGF0ZVJlY3RU
aGF0RG9lc05vdERyYXdDb250ZW50KQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5RGFtYWdlRm9yUmVwbGljYSkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBj
cmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gZ3JhbmRDaGlsZDEgPSBjaGlsZDEtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBncmFuZENoaWxkMiA9IGNoaWxkMS0+Y2hpbGRyZW4oKVsxXTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZh
Y2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0
KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBd
LmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMiA9IGNoaWxkMS0+Y2hpbGRyZW4o
KVsxXS5nZXQoKTsKIAogICAgIC8vIERhbWFnZSBvbiBhIHN1cmZhY2UgdGhhdCBoYXMgYSByZWZs
ZWN0aW9uIHNob3VsZCBjYXVzZSB0aGUgdGFyZ2V0IHN1cmZhY2UgdG8KICAgICAvLyByZWNlaXZl
IHRoZSBzdXJmYWNlJ3MgZGFtYWdlIGFuZCB0aGUgc3VyZmFjZSdzIHJlZmxlY3RlZCBkYW1hZ2Uu
CkBAIC01NjMsMjQgKzU2MiwyNCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5
RGFtYWdlRm9yUmVwbGljYSkKICAgICAvLyBvZiBjaGlsZDEncyBzdXJmYWNlLiBUaGlzIHdheSwg
d2UgY2FuIHRlc3QgcmVmbGVjdGlvbiBjaGFuZ2VzIHdpdGhvdXQgY2hhbmdpbmcKICAgICAvLyBj
b250ZW50Qm91bmRzIG9mIHRoZSBzdXJmYWNlLgogICAgIGdyYW5kQ2hpbGQyLT5zZXRQb3NpdGlv
bihGbG9hdFBvaW50KDE4MCwgMTgwKSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENo
aWxkMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hp
bGQzID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2KS5sZWFrUHRyKCk7CiAgICAgZ3JhbmRDaGlsZDMt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMjQwLCAyNDApKTsKICAgICBncmFuZENoaWxkMy0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICBncmFuZENoaWxkMy0+c2V0Qm91
bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgZ3JhbmRDaGlsZDMtPnNldERyYXdzQ29udGVudCh0
cnVlKTsKICAgICBjaGlsZDEtPnNldE9wYWNpdHkoMC41KTsKLSAgICBjaGlsZDEtPmFkZENoaWxk
KGdyYW5kQ2hpbGQzKTsKKyAgICBjaGlsZDEtPmFkZENoaWxkKGFkb3B0UHRyKGdyYW5kQ2hpbGQz
KSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIENB
U0UgMTogYWRkaW5nIGEgcmVmbGVjdGlvbiBhYm91dCB0aGUgbGVmdCBlZGdlIG9mIGdyYW5kQ2hp
bGQxLgogICAgIC8vCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMVJlcGxpY2Eg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDcpOworICAgIENDTGF5ZXJJbXBsKiBncmFuZENoaWxkMVJl
cGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDcpLmxlYWtQdHIoKTsKICAgICBncmFuZENoaWxk
MVJlcGxpY2EtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgZ3JhbmRDaGls
ZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247CiAgICAgcmVmbGVjdGlvbi5zY2FsZTNkKC0xLjAs
IDEuMCwgMS4wKTsKICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRyYW5zZm9ybShyZWZsZWN0
aW9uKTsKLSAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKGdyYW5kQ2hpbGQxUmVwbGlj
YSk7CisgICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihhZG9wdFB0cihncmFuZENoaWxk
MVJlcGxpY2EpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCiAg
ICAgRmxvYXRSZWN0IGdyYW5kQ2hpbGREYW1hZ2VSZWN0ID0gZ3JhbmRDaGlsZDEtPnJlbmRlclN1
cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpAQCAtNjE0LDcg
KzYxMyw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBs
aWNhKQogCiAgICAgLy8gQ0FTRSAzOiByZW1vdmluZyB0aGUgcmVmbGVjdGlvbiBzaG91bGQgY2F1
c2UgdGhlIGVudGlyZSByZWdpb24gaW5jbHVkaW5nIHJlZmxlY3Rpb24KICAgICAvLyAgICAgICAg
IHRvIGRhbWFnZSB0aGUgdGFyZ2V0IHN1cmZhY2UuCi0gICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxp
Y2FMYXllcigwKTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKG51bGxwdHIpOwog
ICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAgICAgQVNTRVJUX0VRKG9s
ZENvbnRlbnRSZWN0LndpZHRoKCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5jb250ZW50UmVj
dCgpLndpZHRoKCkpOwogICAgIEFTU0VSVF9FUShvbGRDb250ZW50UmVjdC5oZWlnaHQoKSwgY2hp
bGQxLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpOwpAQCAtNjI5LDI3
ICs2MjgsMjcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJl
cGxpY2EpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNr
KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRy
ZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSByb290
LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9
IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBJbiB0aGUgY3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgZGFtYWdlIHRyYWNrZXIsIGNoYW5nZXMgdG8gbWFzayBsYXllcnMg
c2hvdWxkCiAgICAgLy8gZGFtYWdlIHRoZSBlbnRpcmUgY29ycmVzcG9uZGluZyBzdXJmYWNlLgog
CiAgICAgLy8gU2V0IHVwIHRoZSBtYXNrIGxheWVyLgotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
bWFza0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICBDQ0xheWVySW1wbCogbWFz
a0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKS5sZWFrUHRyKCk7CiAgICAgbWFza0xheWVy
LT5zZXRQb3NpdGlvbihjaGlsZC0+cG9zaXRpb24oKSk7CiAgICAgbWFza0xheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgIG1hc2tMYXllci0+c2V0Qm91bmRzKGNo
aWxkLT5ib3VuZHMoKSk7Ci0gICAgY2hpbGQtPnNldE1hc2tMYXllcihtYXNrTGF5ZXIpOworICAg
IGNoaWxkLT5zZXRNYXNrTGF5ZXIoYWRvcHRQdHIobWFza0xheWVyKSk7CiAKICAgICAvLyBBZGQg
b3BhY2l0eSBhbmQgYSBncmFuZENoaWxkIHNvIHRoYXQgdGhlIHJlbmRlciBzdXJmYWNlIHBlcnNp
c3RzIGV2ZW4gYWZ0ZXIgd2UgcmVtb3ZlIHRoZSBtYXNrLgogICAgIGNoaWxkLT5zZXRPcGFjaXR5
KDAuNSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkID0gQ0NMYXllckltcGw6
OmNyZWF0ZSg0KTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoNCkubGVha1B0cigpOwogICAgIGdyYW5kQ2hpbGQtPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoMi4wLCAyLjApKTsKICAgICBncmFuZENoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDIsIDIpKTsKICAg
ICBncmFuZENoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgY2hpbGQtPmFkZENoaWxk
KGdyYW5kQ2hpbGQpOworICAgIGNoaWxkLT5hZGRDaGlsZChhZG9wdFB0cihncmFuZENoaWxkKSk7
CiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIC8vIFNhbml0
eSBjaGVjayB0aGF0IGEgbmV3IHN1cmZhY2Ugd2FzIGNyZWF0ZWQgZm9yIHRoZSBjaGlsZC4KQEAg
LTY4NSw3ICs2ODQsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdl
Rm9yTWFzaykKICAgICBFWFBFQ1RfVFJVRShjaGlsZERhbWFnZVJlY3QuaXNFbXB0eSgpKTsKIAog
ICAgIC8vIFRoZW4gdGVzdCBtYXNrIHJlbW92YWwuCi0gICAgY2hpbGQtPnNldE1hc2tMYXllcigw
KTsKKyAgICBjaGlsZC0+c2V0TWFza0xheWVyKG51bGxwdHIpOwogICAgIEFTU0VSVF9UUlVFKGNo
aWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1l
KHJvb3QuZ2V0KCkpOwogCkBAIC02OTgsMjggKzY5NywyOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFj
a2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRl
c3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IGNoaWxkMS0+Y2hpbGRyZW4oKVswXTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3
b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClb
MF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJl
bigpWzBdLmdldCgpOwogCiAgICAgLy8gQ2hhbmdlcyB0byBhIHJlcGxpY2EncyBtYXNrIHNob3Vs
ZCBub3QgZGFtYWdlIHRoZSBvcmlnaW5hbCBzdXJmYWNlLCBiZWNhdXNlIGl0IGlzCiAgICAgLy8g
bm90IG1hc2tlZC4gQnV0IGl0IGRvZXMgZGFtYWdlIHRoZSBhbmNlc3RvciB0YXJnZXQgc3VyZmFj
ZS4KIAogICAgIC8vIENyZWF0ZSBhIHJlZmxlY3Rpb24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBn
cmFuZENoaWxkMS4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQxUmVw
bGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNikubGVha1B0cigpOwogICAgIGdyYW5kQ2hpbGQx
UmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICBncmFuZENoaWxk
MVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVmbGVjdGlvbjsKICAgICByZWZsZWN0aW9uLnNjYWxlM2QoLTEuMCwg
MS4wLCAxLjApOwogICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0VHJhbnNmb3JtKHJlZmxlY3Rp
b24pOwotICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIoZ3JhbmRDaGlsZDFSZXBsaWNh
KTsKKyAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKGFkb3B0UHRyKGdyYW5kQ2hpbGQx
UmVwbGljYSkpOwogCiAgICAgLy8gU2V0IHVwIHRoZSBtYXNrIGxheWVyIG9uIHRoZSByZXBsaWNh
IGxheWVyCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTWFza0xheWVyID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSg3KTsKKyAgICBDQ0xheWVySW1wbCogcmVwbGljYU1hc2tMYXllciA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoNykubGVha1B0cigpOwogICAgIHJlcGxpY2FNYXNrTGF5ZXItPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICByZXBsaWNhTWFza0xheWVyLT5z
ZXRCb3VuZHMoZ3JhbmRDaGlsZDEtPmJvdW5kcygpKTsKLSAgICBncmFuZENoaWxkMVJlcGxpY2Et
PnNldE1hc2tMYXllcihyZXBsaWNhTWFza0xheWVyKTsKKyAgICBncmFuZENoaWxkMVJlcGxpY2Et
PnNldE1hc2tMYXllcihhZG9wdFB0cihyZXBsaWNhTWFza0xheWVyKSk7CiAKICAgICBlbXVsYXRl
RHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0KCkpOwogCkBAIC03MzgsNyArNzM3LDcgQEAgVEVTVF9G
KENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2FNYXNrKQogCiAgICAg
Ly8gQ0FTRSAyOiByZW1vdmluZyB0aGUgcmVwbGljYSBtYXNrIGRhbWFnZXMgb25seSB0aGUgcmVm
bGVjdGVkIHJlZ2lvbiBvbiB0aGUgdGFyZ2V0IHN1cmZhY2UuCiAgICAgLy8KLSAgICBncmFuZENo
aWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcigwKTsKKyAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNl
dE1hc2tMYXllcihudWxscHRyKTsKICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1lKHJvb3QuZ2V0
KCkpOwogCiAgICAgZ3JhbmRDaGlsZERhbWFnZVJlY3QgPSBncmFuZENoaWxkMS0+cmVuZGVyU3Vy
ZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBAIC03NTAsOCAr
NzQ5LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxp
Y2FNYXNrKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlV2hlblJl
c2V0KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVz
dFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBy
b290LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGls
ZCA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBDYXNlIDE6IFRoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgdHJhY2tlciBpcyBmb3JjZWQgdG8gaGF2ZSBmdWxsIGRh
bWFnZSwgdGhhdAogICAgIC8vICAgICAgICAgaXQgdGFrZXMgcHJpb3JpdHkgb3ZlciBhbnkgb3Ro
ZXIgcGFydGlhbCBkYW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMTZhMjVlMTJlOTc5ZGQ2MDEyYzU2ODFhOWRlNGE0ZDg2
ZDE2NDNkYi4uOGE5ZjM1ZGM4YTdiODljMGM5NGJkNzUzN2M2ODQ2NGZhNzhhNmJiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApAQCAt
NjUsMTQgKzY1LDExIEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNB
cmVUcmFja2VkUHJvcGVybHkpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNldEltcGxU
aHJlYWQ7CiAKICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgQ0NMYXllckltcGwgdHJlZToKLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7Ci0g
ICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxk
KTsKLQotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlNYXNrID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15UmVwbGljYSA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoNSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKKyAgICByb290LT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDIp
KTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwor
ICAgIGNoaWxkLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDMpKTsKKyAgICBDQ0xheWVy
SW1wbCogZ3JhbmRDaGlsZCA9IGNoaWxkLT5jaGlsZHJlbigpWzBdLmdldCgpOwogCiAgICAgLy8g
QWRkaW5nIGNoaWxkcmVuIGlzIGFuIGludGVybmFsIG9wZXJhdGlvbiBhbmQgc2hvdWxkIG5vdCBt
YXJrIGxheWVycyBhcyBjaGFuZ2VkLgogICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllclByb3Bl
cnR5Q2hhbmdlZCgpKTsKQEAgLTk1LDExICs5MiwxMSBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwg
dmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5RmxvYXRQ
b2ludCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0
QW5jaG9yUG9pbnRaKGFyYml0cmFyeU51bWJlcikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0RmlsdGVycyhhcmJpdHJhcnlGaWx0ZXJzKSk7Ci0gICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRNYXNrTGF5ZXIoZHVt
bXlNYXNrKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5z
ZXRNYXNrTGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSg0KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFxdWUodHJ1ZSkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0T3BhY2l0
eShhcmJpdHJhcnlOdW1iZXIpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJlcGxpY2EpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihDQ0xheWVySW1w
bDo6Y3JlYXRlKDUpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChy
b290LT5zZXRQb3NpdGlvbihhcmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7CiAgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRUcmFuc2Zvcm0oYXJi
aXRyYXJ5VHJhbnNmb3JtKSk7CkBAIC0xMzQsOSArMTMxLDcgQEAgVEVTVChDQ0xheWVySW1wbFRl
c3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICAvLyBub3QgY2F1
c2UgYW55IGNoYW5nZS4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7CiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9p
bnRaKGFyYml0cmFyeU51bWJlcikpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrc1RvQm91bmRz
KHRydWUpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShy
b290LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5Rmxv
YXRQb2ludCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3Jt
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVy
YXRvclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0
b3JUZXN0LmNwcAppbmRleCBiZmY3ZTFiYTk3MTE0NTY4Y2FiZTM5NmNmYWU3NzQ2ZjA3MzQwOThl
Li4yZjVhN2EyNWQ5ZWQxNmYyY2M0MTk4MWNiYzRhMmU2NTY1Mjg3MTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKQEAg
LTY3LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICBFWFBFQ1RfRVEoY29udHJpYiwgbGF5ZXItPm1f
Y291bnRSZXByZXNlbnRpbmdDb250cmlidXRpbmdTdXJmYWNlKTsgICBcCiAgICAgRVhQRUNUX0VR
KGl0c2VsZiwgbGF5ZXItPm1fY291bnRSZXByZXNlbnRpbmdJdHNlbGYpOwogCi10eXBlZGVmIEND
TGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5
ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBGcm9udFRvQmFjazsKLXR5cGVkZWYgQ0NM
YXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IEJhY2tUb0Zyb250OwordHlwZWRlZiBDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrPiBGcm9udFRvQmFjazsKK3R5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0s
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQmFja1RvRnJvbnQ7CiAKIHZvaWQg
cmVzZXRDb3VudHMoVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KQogewpAQCAtMTM3LDcgKzEzNyw3IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVz
dCwgc2ltcGxlVHJlZSkKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBs
YXllckxpc3Q7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
KyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAg
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgbGF5ZXJMaXN0LApAQCAtMTg0LDcgKzE4NCw3IEBAIFRFU1QoQ0NMYXllckl0
ZXJhdG9yVGVzdCwgY29tcGxleFRyZWUpCiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJv
b3RMYXllcik7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyLmdl
dCgpKTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShyb290TGF5ZXIuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwKQEAgLTI0Myw3ICsyNDMsNyBAQCBURVNU
KENDTGF5ZXJJdGVyYXRvclRlc3QsIGNvbXBsZXhUcmVlTXVsdGlTdXJmYWNlKQogCiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKHJvb3RMYXllci5nZXQoKSk7CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLmdldCgpLCByb290
TGF5ZXIuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3Bw
CmluZGV4IDY5MzQyY2RhN2M2M2I2MTU0NTA3NDVlYWJkOGIxZDFjZGJlZmNlNWUuLmE1MzNjOTM3
Mzg4ZWVhNTZiN2E0YTFiYzYxYzFmMjgyMWFiZmVjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwCkBAIC0xNzQsMTEgKzE3NCwx
MSBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCB2ZXJpZnlFeGlzdGluZ09yZGVyaW5nUHJlc2Vy
dmVkV2hlbk5vWkRpZmYpCiAgICAgLy8gICAgLSAzIGFuZCA0IGRvIG5vdCBoYXZlIGEgM2QgeiBk
aWZmZXJlbmNlLCBhbmQgdGhlcmVmb3JlIHRoZWlyIHJlbGF0aXZlIG9yZGVyaW5nIHNob3VsZCBi
ZSByZXRhaW5lZC4KICAgICAvLyAgICAtIDMgYW5kIDQgc2hvdWxkIGJlIHJlLXNvcnRlZCBzbyB0
aGV5IGFyZSBpbiBmcm9udCBvZiAxLCAyLCBhbmQgNS4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gbGF5ZXIxID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGxheWVyMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBsYXllcjMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gbGF5ZXI0ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0KTsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IGxheWVyNSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNSk7CisgICAgT3duUHRyPENDTGF5
ZXJJbXBsPiBsYXllcjEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gbGF5ZXIyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IGxheWVyMyA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiBsYXllcjQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gbGF5ZXI1ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKIAogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IEJlaGluZE1hdHJpeDsKICAgICBCZWhpbmRNYXRyaXgudHJhbnNsYXRl
M2QoMCwgMCwgMik7CkBAIC0yMDUsMTIgKzIwNSwxMiBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0
LCB2ZXJpZnlFeGlzdGluZ09yZGVyaW5nUHJlc2VydmVkV2hlbk5vWkRpZmYpCiAgICAgbGF5ZXI1
LT5zZXREcmF3VHJhbnNmb3JtKEJlaGluZE1hdHJpeCk7CiAgICAgbGF5ZXI1LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IGxheWVyTGlz
dDsKLSAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMSk7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChs
YXllcjIpOwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIzKTsKLSAgICBsYXllckxpc3QuYXBw
ZW5kKGxheWVyNCk7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjUpOworICAgIFZlY3RvcjxD
Q0xheWVySW1wbCo+IGxheWVyTGlzdDsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMS5nZXQo
KSk7CisgICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjIuZ2V0KCkpOworICAgIGxheWVyTGlzdC5h
cHBlbmQobGF5ZXIzLmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyNC5nZXQoKSk7
CisgICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjUuZ2V0KCkpOwogCiAgICAgQVNTRVJUX0VRKHN0
YXRpY19jYXN0PHNpemVfdD4oNSksIGxheWVyTGlzdC5zaXplKCkpOwogICAgIEVYUEVDVF9FUSgx
LCBsYXllckxpc3RbMF0tPmlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggZDJlMWNmZWY5
M2UyODIxNjZkYTg1MTI1NmM5NWMwZTY1MTJjNjliYS4uZTYyMDZjYzU4ZjkwMzNiNWZmY2FhNjll
ZWI0ZDI5MGYzNTFlZDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCkBAIC01NzMsNyArNTczLDcg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVjdEN1bGxzUmVu
ZGVyU3VyZmFjZXMpCiAKICAgICAvLyBGSVhNRTogd2hlbiB3ZSBmaXggdGhpcyAicm9vdC1sYXll
ciBzcGVjaWFsIGNhc2UiIGJlaGF2aW9yIGluIENDTGF5ZXJUcmVlSG9zdCwgd2Ugd2lsbCBoYXZl
IHRvIGZpeCBpdCBoZXJlLCB0b28uCiAgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudC5nZXQoKSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1t
eUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
NWU4MmJmYjQyZjkyMzBhODgzYzhhZjI0N2VjM2FjZDY3ZjQzODExNi4uZDEzZmYzODU5ZmVlNTdk
NDA0MWYwNjhmZTkyN2QxNWM3MTQ1MmQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTc4LDE2ICs3
OCwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMo
Y29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCiAgICAgewotICAgICAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgICAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwogICAgICAgICByb290LT5z
ZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQ
b2ludCgwLCAwKSk7CiAgICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRT
aXplKTsKLSAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjb250ZW50cyA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMSk7CisgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gY29udGVudHMgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOwogICAgICAgICBjb250ZW50cy0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogICAgICAgICBjb250ZW50cy0+c2V0Qm91bmRzKGNvbnRlbnRTaXplKTsKICAgICAgICAg
Y29udGVudHMtPnNldENvbnRlbnRCb3VuZHMoY29udGVudFNpemUpOwotICAgICAgICByb290LT5h
ZGRDaGlsZChjb250ZW50cyk7Ci0gICAgICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290
KTsKKyAgICAgICAgcm9vdC0+YWRkQ2hpbGQoY29udGVudHMucmVsZWFzZSgpKTsKKyAgICAgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKICAgICB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTExMiwzNyArMTEyLDM3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgc2Nyb2xsRGVsdGFOb0xheWVycykKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBzY3JvbGxEZWx0YVRyZWVCdXROb0NoYW5nZXMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBDQ0xheWVySW1wbCogcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCkubGVha1B0cigpOwogICAgIHJvb3QtPmFkZENoaWxkKEND
TGF5ZXJJbXBsOjpjcmVhdGUoMSkpOwogICAgIHJvb3QtPmFkZENoaWxkKENDTGF5ZXJJbXBsOjpj
cmVhdGUoMikpOwogICAgIHJvb3QtPmNoaWxkcmVuKClbMV0tPmFkZENoaWxkKENDTGF5ZXJJbXBs
OjpjcmVhdGUoMykpOwogICAgIHJvb3QtPmNoaWxkcmVuKClbMV0tPmFkZENoaWxkKENDTGF5ZXJJ
bXBsOjpjcmVhdGUoNCkpOwogICAgIHJvb3QtPmNoaWxkcmVuKClbMV0tPmNoaWxkcmVuKClbMF0t
PmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoNSkpOwotICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihyb290KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9v
dCkpOwogCi0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgp
KTsKKyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogCiAgICAg
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKICAgICBzY3JvbGxJbmZv
ID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShzY3Jv
bGxJbmZvLT5zY3JvbGxzLnNpemUoKSwgMHUpOwotICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0
YXNSZWN1cnNpdmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1Jl
Y3Vyc2l2ZShyb290KTsKIAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Ny
b2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAw
dSk7Ci0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsK
KyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogfQogCiBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQog
ewogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKDIwLCAzMCk7CiAgICAgSW50U2l6ZSBzY3Jv
bGxEZWx0YSgxMSwgLTE1KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDEwKTsKKyAgICBDQ0xheWVySW1wbCogcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMTApLmxlYWtQdHIoKTsKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQ
b3NpdGlvbik7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICByb290LT5zZXRN
YXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgcm9vdC0+c2Nyb2xsQnko
c2Nyb2xsRGVsdGEpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICBt
X2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9vdCkpOwogCiAgICAgT3duUHRyPEND
U2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKQEAgLTE2NSwxMSArMTY1LDExIEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMp
CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdENhbGxzQ29tbWl0
QW5kUmVkcmF3KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoMCk7CisgICAgQ0NMYXllckltcGwqIHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDApLmxlYWtQdHIoKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3Qt
PnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3Jv
bGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7
CiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhcnRlZCk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50U2l6ZSgwLCAxMCkpOwogICAg
IG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwpAQCAtMTc5LDExICsxNzksMTEgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxSb290Q2FsbHNDb21taXRBbmRSZWRyYXcpCiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgd2hlZWxFdmVudEhhbmRsZXJzKQogewot
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Cisg
ICAgQ0NMYXllckltcGwqIHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApLmxlYWtQdHIoKTsK
ICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0
aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRT
aXplKDEwMCwgMTAwKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7CiAgICAgcm9vdC0+c2V0
SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh0cnVlKTsKICAgICAvLyBXaXRoIHJlZ2lzdGVyZWQgZXZl
bnQgaGFuZGxlcnMsIHdoZWVsIHNjcm9sbHMgaGF2ZSB0byBnbyB0byB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
RmFpbGVkKTsKQEAgLTMyMSw3ICszMjEsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKIAogY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJs
aWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpZERyYXdD
aGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRGlkRHJhd0No
ZWNrTGF5ZXIoaWQpKTsgfQorICAgIHN0YXRpYyBQYXNzT3duUHRyPERpZERyYXdDaGVja0xheWVy
PiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRGlkRHJhd0NoZWNrTGF5ZXIo
aWQpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKQogICAgIHsKQEAgLTM1OSw4ICsz
NTksOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRP
bkhpZGRlbkxheWVyKQogICAgIC8vIEVuc3VyZSB2aXNpYmxlTGF5ZXJSZWN0IGZvciByb290IGxh
eWVyIGlzIGVtcHR5CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMCwg
MCkpOwogCi0gICAgUmVmUHRyPERpZERyYXdDaGVja0xheWVyPiByb290ID0gRGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSgwKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7Cisg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkp
OworICAgIERpZERyYXdDaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNr
TGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uocm9v
dC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxs
ZWQoKSk7CkBAIC0zOTIsMTQgKzM5MiwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZSgxMCwgMTApKTsKIAotICAgIFJlZlB0cjxEaWREcmF3Q2hlY2tMYXllcj4gcm9vdCA9
IERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXll
cjo6Y3JlYXRlKDApKTsKKyAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0
PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogCi0gICAgUmVm
UHRyPERpZERyYXdDaGVja0xheWVyPiBsYXllcjEgPSBEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRl
KDEpOwotICAgIHJvb3QtPmFkZENoaWxkKGxheWVyMSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoRGlk
RHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIGxheWVy
MSA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5n
ZXQoKSk7CiAKLSAgICBSZWZQdHI8RGlkRHJhd0NoZWNrTGF5ZXI+IGxheWVyMiA9IERpZERyYXdD
aGVja0xheWVyOjpjcmVhdGUoMik7Ci0gICAgbGF5ZXIxLT5hZGRDaGlsZChsYXllcjIpOworICAg
IGxheWVyMS0+YWRkQ2hpbGQoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgyKSk7CisgICAgRGlk
RHJhd0NoZWNrTGF5ZXIqIGxheWVyMiA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4o
bGF5ZXIxLT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgw
LjMpOwogICAgIGxheWVyMS0+c2V0UHJlc2VydmVzM0QoZmFsc2UpOwpAQCAtNDQyLDcgKzQ0Miw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5
ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbGVuZFN0YXRlQ2hlY2tM
YXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJsZW5kU3RhdGVDaGVj
a0xheWVyKGlkKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXll
cj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xh
eWVyKGlkKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKICAgICB7
CkBAIC00OTEsMTQgKzQ5MSwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgwKS5sZWFrUHRyKCk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAg
cm9vdC0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5
ZXIocm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKGFkb3B0UHRyKHJvb3QpKTsK
IAotICAgIFJlZlB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gbGF5ZXIxID0gQmxlbmRTdGF0ZUNo
ZWNrTGF5ZXI6OmNyZWF0ZSgxKTsKLSAgICByb290LT5hZGRDaGlsZChsYXllcjEpOworICAgIHJv
b3QtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMSkpOworICAgIEJsZW5k
U3RhdGVDaGVja0xheWVyKiBsYXllcjEgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXll
cio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogCiAgICAgLy8gT3BhcXVlIGxheWVyLCBk
cmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAt
NTM3LDggKzUzNyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgUmVmUHRy
PEJsZW5kU3RhdGVDaGVja0xheWVyPiBsYXllcjIgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3Jl
YXRlKDIpOwotICAgIGxheWVyMS0+YWRkQ2hpbGQobGF5ZXIyKTsKKyAgICBsYXllcjEtPmFkZENo
aWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMikpOworICAgIEJsZW5kU3RhdGVDaGVj
a0xheWVyKiBsYXllcjIgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KGxheWVy
MS0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CiAKICAgICAvLyAyIG9wYXF1ZSBsYXllcnMsIGRyYXdu
IHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CkBAIC02NTYs
MTEgKzY1NiwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RD
YWxsZWRVbnRpbERyYXcpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y29udGV4dCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEw
KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURy
YXdhYmxlQ0NMYXllckltcGwoMSkpOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VE
cmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHJv
b3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKGFkb3B0UHRyKHJvb3QpKTsKICAg
ICBFWFBFQ1RfRkFMU0UocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiAKICAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC03MDMsOCArNzAzLDggQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBs
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAg
bGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxl
Q0NMYXllckltcGwoMSkpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBhZG9wdFJl
ZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMikpOworICAgIENDTGF5ZXJJbXBsKiByb290
ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOworICAgIENDTGF5ZXJJbXBsKiBjaGls
ZCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgyKTsKICAgICBjaGlsZC0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgxMiwgMTMpKTsKICAgICBjaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDE0LCAxNSkpOwpAQCAt
NzEyLDggKzcxMiw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3
YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoNTAwLCA1MDApKTsKICAgICBy
b290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwot
ICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgcm9vdC0+YWRk
Q2hpbGQoYWRvcHRQdHIoY2hpbGQpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExh
eWVyKGFkb3B0UHRyKHJvb3QpKTsKIAogICAgIC8vIEZpcnN0IGZyYW1lLCB0aGUgZW50aXJlIHNj
cmVlbiBzaG91bGQgZ2V0IHN3YXBwZWQuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJT
dXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3Vy
ZmFjZVRlc3QuY3BwCmluZGV4IGMzYjM2NmRkYTMyMzc0Njg2ODZmYmY4M2VkNGZlMzM5MGY4MmYz
MzQuLjEyMDE1ODdjNzhkZjdiNTg0MDI3NzRkZjBjNjkzZjRlZWRkZGQ2MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApA
QCAtNTQsNyArNTQsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VD
aGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIC8vIFRoaXMgd2lsbCBmYWtlIHRoYXQgd2Ug
YXJlIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsKIAotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxD
Q0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIG93
bmluZ0xheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgQVNTRVJUX1RSVUUob3duaW5n
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJm
YWNlID0gb3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKQEAgLTc0LDcgKzc0LDcgQEAgVEVT
VChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlTdXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQcm9w
ZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5k
ZXJTdXJmYWNlLT5zZXRDbGlwUmVjdCh0ZXN0UmVjdCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KHRl
c3RSZWN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGR1bW15TWF0cml4
OwogICAgIGR1bW15TWF0cml4LnRyYW5zbGF0ZSgxLjAsIDIuMCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3Qu
Y3BwCmluZGV4IDA1OWVmMmFkY2Y1NWVkM2JmYWE1MDc5MTRhNDEzMzQ3ODg2ZWVjNTQuLjAyZGM5
MDhhYmRhNzc0NTNhNGZhNjlkZTJiOTZkM2RiOTA3OTdmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNw
cApAQCAtNDYsNyArNDYsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlm
eVRpbGluZ0NvbXBsZXRlQW5kTm9PdmVybGFwKQogICAgIEludFNpemUgbGF5ZXJTaXplID0gSW50
U2l6ZSg4MDAsIDYwMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBsYXllclNpemUpOwogCi0gICAgUmVmUHRyPENDU29saWRDb2xvckxheWVySW1w
bD4gbGF5ZXIgPSBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3Jl
YXRlKDApOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3Qp
OwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIApAQCAtNjYsNyArNjYsNyBAQCBU
RVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29s
b3JJblF1YWQpCiAgICAgSW50U2l6ZSBsYXllclNpemUgPSBJbnRTaXplKDEwMCwgMTAwKTsKICAg
ICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6
ZSk7CiAKLSAgICBSZWZQdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRD
b2xvckxheWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllcklt
cGw+IGxheWVyID0gQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7CiAgICAgbGF5ZXItPnNldEJv
dW5kcyhsYXllclNpemUpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IodGVzdENvbG9y
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJ
bXBsVGVzdC5jcHAKaW5kZXggZDU1YzBiYzE2NDRlMmE4OTA3NGYyYjg5ZjYxZWRmMjIwZjc4NmZj
My4uZmY3ZGFhM2M5YjI3NmY1YTJkYTdhMzkzZGIxOGI1NWFkNDU4ZDA4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAK
QEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIHsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB0aWxl
ZCBsYXllciB3aXRoIHRleHR1cmVzIGZvciBhbGwgdGlsZXMgYW5kIGEgZGVmYXVsdAogLy8gdmlz
aWJpbGl0eSBvZiB0aGUgZW50aXJlIGxheWVyIHNpemUuCi1zdGF0aWMgUGFzc1JlZlB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24g
Ym9yZGVyVGV4ZWxzKQorc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRl
TGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwg
Q0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRleGVscykKIHsKLSAg
ICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVh
dGUoMCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVy
SW1wbDo6Y3JlYXRlKDApOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBD
Q0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKHRpbGVTaXplLCBib3JkZXJUZXhlbHMpOwogICAgIHRp
bGVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKICAgICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGls
ZXIpOwpAQCAtNjgsNyArNjgsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1
YWRMaXN0KQogCiAgICAgLy8gVmVyaWZ5IGRlZmF1bHQgbGF5ZXIgZG9lcyBjcmVhdGVzIHF1YWRz
CiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVM
YXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhl
bHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXll
cih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMp
OwogICAgICAgICBDQ1F1YWRMaXN0IHF1YWRzOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
ICAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkp
OwpAQCAtNzgsNyArNzgsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRM
aXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBlbXB0eSB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVj
ZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpO
b0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9
IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0Jv
cmRlclRleGVscyk7CiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
KSk7CiAKICAgICAgICAgQ0NRdWFkTGlzdCBxdWFkczsKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChD
Q1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgIC8vIExheWVyIHdpdGgg
bm9uLWludGVyc2VjdGluZyB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVy
KHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7
CisgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRp
bGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAK
ICAgICAgICAgSW50UmVjdCBvdXRzaWRlQm91bmRzKEludFBvaW50KC0xMDAsIC0xMDApLCBJbnRT
aXplKDUwLCA1MCkpOwogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChvdXRzaWRl
Qm91bmRzKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBl
bXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0aCBza2lwcyBkcmF3IHByb2R1Y2VzIG5v
IHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBj
cmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3Jk
ZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVh
dGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMpOwogICAgICAgICBsYXllci0+c2V0U2tpcHNEcmF3KHRydWUpOwogCiAgICAgICAgIEND
UXVhZExpc3QgcXVhZHM7CkBAIC0xMjEsNyArMTIxLDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBs
VGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIGNvbnN0IGludCBudW1UaWxlc1kgPSAyOwogICAg
IGNvbnN0IEludFNpemUgbGF5ZXJTaXplKHRpbGVTaXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRp
bGVTaXplLmhlaWdodCgpICogbnVtVGlsZXNZKTsKIAotICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxh
eWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6
Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgIC8vIE5vIGNo
ZWNrZXJib2FyZGluZwpAQCAtMTUwLDcgKzE1MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRl
c3QsIGNoZWNrZXJib2FyZGluZykKIAogc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJ
bnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBi
b3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKIHsKLSAg
ICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwg
bGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CisgICAgT3duUHRyPENDVGlsZWRMYXllcklt
cGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxP
cHRpb24pOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3Qp
OwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBA
IFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKICAg
ICBjb25zdCBpbnQgbnVtVGlsZXNZID0gMjsKICAgICBjb25zdCB1bnNpZ25lZCBudW1UaWxlcyA9
IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKICAgICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxl
U2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7
Ci0gICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNp
emUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5
ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgIGxheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5k
Q292ZXJzVmlld3BvcnQodHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGVjMGNlMGM2
YWJjYTEyNGZlOWIyYWU5NzljMzA0OGEwZDIyY2UyMjguLmJiYzIxYzVhMmVjYjZiZmExMjBlZGU2
ZjRlZWY2ZmFlNmNmNDAwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOworICAgICAgICAgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBs
KCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJ
bXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCiAgICAgICAgICAgICBjYW52
YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKaW5kZXggZTAzNTU5MDQ2N2E2NDI3YmZjYjYwNDdkYWQ0NDRhMzZhMjcw
Yzg4ZC4uYzY3MmQyM2IxOWQ0MDlmZDVhMTQ5YjgyMmQ3MjlmMDExZGE5OWRmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQ
dHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0
KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9y
eUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9w
dFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM2OCw3ICsz
NjgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFy
ZSkKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlm
eUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsK
IAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggNDcy
NGI0YTQzNTY3YjQzOTc4ZGRhN2MwZDYxYTg0MmQ4ZDQ4Mjk4NC4uZWIzODUwZGFiMTIyNmIxNGI3
MWViMjZhM2E1MTMyY2QyYmE2MTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgbmFt
ZXNwYWNlIHsKIAogY2xhc3MgTW9ja0NDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShp
bnQgbGF5ZXJJZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0
ZShpbnQgbGF5ZXJJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja0ND
TGF5ZXJJbXBsKGxheWVySWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrQ0NM
YXllckltcGwobGF5ZXJJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Nb2NrQ0NMYXllckltcGwo
KQogICAgIHsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW9ja0xh
eWVyQ2hyb21pdW0oKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQ0NMYXllckltcGwoKQorICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQ0NMYXllckltcGwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1w
bDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiAgICAgfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgZXhw
ZWN0VHJlZXNBcmVJZGVudGljYWwoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsKiBj
Y0xheWVyKQogICAgICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllci0+cmVwbGljYUxh
eWVyKCksIGNjTGF5ZXItPnJlcGxpY2FMYXllcigpKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJDaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOwot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNjTGF5ZXJDaGlsZHJlbiA9
IGNjTGF5ZXItPmNoaWxkcmVuKCk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxDQ0xheWVySW1w
bD4gPiYgY2NMYXllckNoaWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4oKTsKIAogICAgIEFTU0VS
VF9FUShsYXllckNoaWxkcmVuLnNpemUoKSwgY2NMYXllckNoaWxkcmVuLnNpemUoKSk7CiAKQEAg
LTE1MCw3ICsxNTAsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJl
ZUZyb21FbXB0eSkKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpj
cmVhdGUoKSk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXpl
cjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBudWxscHRyKTsKIAogICAg
IGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVl
Um9vdC5nZXQoKSk7CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVy
VGVzdCwgc3luY1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIGxheWVyVHJlZVJvb3QtPmFk
ZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Qp
KTsKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNj
TGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJU
cmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJv
b3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0
KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3Qu
Z2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBBZGQgYSBuZXcgbGF5ZXIg
dG8gdGhlIExheWVyQ2hyb21pdW0gc2lkZQpAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoVHJlZVN5
bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGllcykKICAgICBJbnRTaXpl
IHNlY29uZENoaWxkQm91bmRzID0gSW50U2l6ZSgyNSwgNTMpOwogICAgIGxheWVyVHJlZVJvb3Qt
PmNoaWxkcmVuKClbMV0tPnNldEJvdW5kcyhzZWNvbmRDaGlsZEJvdW5kcyk7CiAKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVz
KGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRp
Y2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAv
LyBDaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSB2YWx1ZXMgd2Ugc2V0IG9uIHRoZSBMYXllckNocm9t
aXVtIHRyZWUgYXJlIHJlZmxlY3RlZCBpbiB0aGUgQ0NMYXllckltcGwgdHJlZS4KQEAgLTIzNiw3
ICsyMzYsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCByZXVzZUNDTGF5ZXJzQWZ0ZXJT
dHJ1Y3R1cmFsQ2hhbmdlKQogICAgIGxheWVyQi0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06
OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCkpOwogICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBsYXllckQgPSBsYXllckItPmNoaWxkcmVuKClbMV0uZ2V0KCk7CiAKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxh
eWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2Fs
KGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBO
b3cgcmVzdHJ1Y3R1cmUgdGhlIHRyZWUgdG8gbG9vayBsaWtlIHRoaXM6CkBAIC0yNzQsNyArMjc0
LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJv
eSkKICAgICBpbnQgb2xkVHJlZUZpcnN0Q2hpbGRMYXllcklkID0gb2xkTGF5ZXJUcmVlUm9vdC0+
Y2hpbGRyZW4oKVswXS0+aWQoKTsKICAgICBpbnQgb2xkVHJlZVNlY29uZENoaWxkTGF5ZXJJZCA9
IG9sZExheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPmlkKCk7CiAKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMob2xkTGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKG9s
ZExheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRp
Y2FsKG9sZExheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAg
ICAvLyBSZW1vdmUgYWxsIGNoaWxkcmVuIG9uIHRoZSBMYXllckNocm9taXVtIHNpZGUuCkBAIC0z
MTQsMjMgKzMxNCwyMyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxp
Y2FBbmRSZXBsaWNhTWFza0xheWVycykKICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFz
a0xheWVyKHJlcGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxk
cmVuKClbMl0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJv
bml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgZXhwZWN0VHJl
ZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgp
KTsKIAogICAgIC8vIFJlbW92ZSB0aGUgbWFzayBsYXllci4KICAgICBsYXllclRyZWVSb290LT5j
aGlsZHJlbigpWzBdLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJl
ZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xh
eWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290
LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5n
ZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGlj
YSBsYXllci4KICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5
ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAg
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0
VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290Lmdl
dCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBtYXNrLgogICAgIHJlcGxpY2FMYXll
cldpdGhNYXNrLT5zZXRNYXNrTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5
bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVy
VHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6
OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJl
bGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQo
KSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIH0KIApAQCAtMzQzLDggKzM0Myw4IEBAIFRFU1Qo
VHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNocm9uaXplQW5pbWF0aW9ucykKIAogICAgIEVYUEVD
VF9GQUxTRShzdGF0aWNfY2FzdDxGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKj4obGF5ZXJU
cmVlUm9vdC0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpLT5zeW5jaHJvbml6ZWRBbmltYXRp
b25zKCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOwot
ICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMo
bGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKKyAgICBPd25QdHI8
Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CisgICAgY2NMYXllclRyZWVS
b290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290Lmdl
dCgpLCBjY0xheWVyVHJlZVJvb3QucmVsZWFzZSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKHN0YXRp
Y19jYXN0PEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIqPihsYXllclRyZWVSb290LT5sYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIoKSktPnN5bmNocm9uaXplZEFuaW1hdGlvbnMoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128839</attachid>
            <date>2012-02-24 19:11:06 -0800</date>
            <delta_ts>2012-02-24 19:59:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78404-20120224191105.patch</filename>
            <type>text/plain</type>
            <size>132328</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdjYzkyZjRlZWNmOWM0
NjhiNzkzZGY0MDY3YjE5MDhjY2JjZmUzMC4uZjQwNzAwMmNiNjZmMGZiYTJhYzE2NDcxYWFhZGI4
MjA5OTNkZTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMi0wMi0yNCAgVGll
bi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZXBsYWNlIFJlZlB0ciB3aXRoIE93blB0ciBmb3IgQ0NMYXllckltcGwgdHJlZSBzdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQ2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU29saWRDb2xvckxheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTeW5jaHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6cmV1
c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6
ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oOgorICAgICAgICAoVHJlZVN5bmNocm9uaXpl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NDYW52YXNMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OnRyYWNrRGFtYWdlRnJvbUFjdGl2ZUxheWVy
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFj
a2VyLmg6CisgICAgICAgIChDQ0RhbWFnZVRyYWNrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6c29ydExheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjaGlsZHJlbik6CisgICAg
ICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udDo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
QmFja1RvRnJvbnQ6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpCYWNrVG9Gcm9udDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1
YnRyZWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
dGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpiZWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SXRlcmF0b3I6OnRhcmdldFJlbmRlclN1cmZhY2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySXRlcmF0b3I6OkNDTGF5ZXJJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySXRlcmF0b3I6OmdldFJhd1B0cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0
b3I6OmN1cnJlbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySXRlcmF0b3I6OnRh
cmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbik6CisgICAgICAgIChCYWNrVG9Gcm9udCk6CisgICAg
ICAgIChGcm9udFRvQmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclNvcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpj
cmVhdGVHcmFwaE5vZGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyU29ydGVyLmg6CisgICAgICAgIChDQ0xheWVyU29ydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjp3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0Q29tbW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKEND
TGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6cmVsZWFzZVJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzY3JvbGxMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQbHVnaW5MYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpsYXll
ckxpc3QpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VmlkZW9MYXllckltcGw6OmNyZWF0ZSk6CisKIDIwMTItMDItMjQgIEFkcmllbm5lIFdhbGtlciAg
PGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZXMg
aW4gSGFyZkJ1enpTaGFwZXJCYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkOTRl
MGY1ZDFlMDFlOTc1Yzg1MWI4NDcwOTJlMTdjZjFmY2Y3NzYuLjYxYzI2MTNjN2EwYTlkNzk4MmZl
MWFmMDZhNjQxODQ0Y2U0NGU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTItMDItMjQgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVwbGFjZSBSZWZQdHIgd2l0aCBPd25QdHIgZm9yIEND
TGF5ZXJJbXBsIHRyZWUgc3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXRUZXN0czo6ZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6ZW11bGF0ZURyYXdpbmdPbmVGcmFtZSk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OmNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcyk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
Q0NMYXllckl0ZXJhdG9yVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclNvcnRlclRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKToK
KyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKFdlYktpdDo6RGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjpj
cmVhdGUpOgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
VGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgICog
dGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21t
b246OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAg
ICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpnZXRRdWFkcyk6CisgICAgICAgICogdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAq
IHRlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpN
b2NrQ0NMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpleHBl
Y3RUcmVlc0FyZUlkZW50aWNhbCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisKIDIw
MTItMDItMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDg4NjAuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDE4MWJhNGU1ODEyY2U4ODc4YTE3OTIwMjU4ZjhlZGU4ZGZi
NDYyMWUuLmQ1MzM2OTlhZjlmMWY3YWEwODUyOGQ0MWY4YjZiY2MyNjBiMDM1MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIENhbnZhc0xheWVy
Q2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgp
CiB7CiAgICAgcmV0dXJuIENDQ2FudmFzTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAppbmRleCA5ZThjZTdkOGNjODJhYTg4M2MzNmE4
NTg2MzA5NDQ4ZjMzNjIwMjcxLi43MjJjYzFhNjY3Mzg5YjM1NzEwNTgyNTI4YjZkMWNjNzYzYTM1
NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIEJhc2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVyYXRl
ZCAyZCBjYW52YXNlcy4KIGNsYXNzIENhbnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4g
Y3JlYXRlQ0NMYXllckltcGwoKTsKIAogcHJvdGVjdGVkOgogICAgIENhbnZhc0xheWVyQ2hyb21p
dW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGVlZGE2OGE0ODc5YzlhMmI3NjU0NTQ5
NGExMWEwN2U3ZDI5N2ZmYS4uODM1YzAzYmYxYmVlOGM3MGMwMWU2ZGY2NDIxZWZiMzNmYzFhZjky
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIG1fdXBk
YXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBMYXll
ckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDTGF5ZXJJ
bXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4OTc2NDdk
MmQ1MjYzNWM4MDhiYWE3Mjg0Y2RlYjlhODNjNDMwNDBhLi41NThlNTE4MzQxMGNlY2M1NDZkMmQy
NWJlNGVjODFiZDhkZjg1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0yNDksNyArMjUwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBtX21hc2tMYXllcjsKIAogICAgIC8vIENvbnN0cnVjdHMgYSBDQ0xheWVySW1wbCBvZiB0
aGUgY29ycmVjdCBydW50aW1lIHR5cGUgZm9yIHRoaXMgTGF5ZXJDaHJvbWl1bSB0eXBlLgotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAg
ICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggMDc5YWQyZWRlOTU0NzU1ODJiODcwNzI5YTcxYTVkNjFiZDI4YWI0Yi4uNjI1
ZjRiMjFkZmI4YTUxZDNjOWU3YWYwOTJlNGEwMjliY2IzNjZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2lu
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5MYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJl
ckMKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgp
CiB7CiAgICAgcmV0dXJuIENDUGx1Z2luTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4NDM2NTY5NWJiMWRkYzY1MjMxYWRk
MDRmNmYwZDgzMDAwOTFlMGQwLi5jMzBmNzdhYzVkMWI3YmE1YTc0ZGFkYjA4ZmRlNGExM2IzZWE0
NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKICAgICAvLyBDb2RlIHBhdGggZm9y
IHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWlyIG93biB0ZXh0dXJlIElELgogICAgIHZvaWQgc2V0
VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWQxMzU0NmJhZTg3ZjQwNTFiMzBlMzQ5NGMwZjJmZGU4NTNm
MWUzMy4uMGRjNzdhZGE4MjI2MDIzMjVlNjc5ZTMxNTQ4ODMzNjg5M2I5NGUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFNvbGlkQ29sb3JM
YXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJl
dHVybiBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZShpZCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
b2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFkMTQ4OTBiZDBlMWYwYzIwYzYzYzZkMjMx
NzE1OTQ4ZDIxODk0ZmMuLjk0YTU0YTBhYzVhZGUxMTk3ODZkZDA2YmQzNDlkYmIyMTdiYmQ1OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nv
bGlkQ29sb3JMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiAvLyBzZXRCYWNrZ3JvdW5kQ29sb3IoKSBvbiB0
aGUgYmFzZSBjbGFzcy4KIGNsYXNzIFNvbGlkQ29sb3JMYXllckNocm9taXVtIDogcHVibGljIExh
eWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllcklt
cGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29saWRDb2xv
ckxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCB+U29saWRDb2xvckxheWVy
Q2hyb21pdW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGE5Y2Y3ZDZm
ZDJjZGU2OWUzZDMxZGIwOTBiNTY4ZjIxZDEzNTNjOWIuLjdiZjBjOTc1NzJjNjBiOWMzZWM4N2Jm
OTg1NGI4NzUxNThmZWViYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBUaWxlZExheWVyQ2hyb21pdW06On5UaWxlZExheWVyQ2hyb21pdW0oKQog
ewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0
ZUNDTGF5ZXJJbXBsKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ1RpbGVkTGF5ZXJJbXBsOjpj
cmVhdGUoaWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDJkOTk5NTM2
N2FkMjQzNmFmZmFmZTZkY2MzMjNhZjk1M2FlZDMwNzIuLmE2YzIxMTk1MWQ3ODUxNDM0MGY1Njdi
ZGYzNjBlYTY3NDEwOTRlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMDIs
NyArMTAyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1
cmVNYW5hZ2VyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAogICAgIHZvaWQgY3JlYXRlVGlsZXJJ
Zk5lZWRlZCgpOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RyZWVTeW5jaHJvbml6ZXIuY3BwCmluZGV4IGQwZmQwY2U1MjNkNjM4ODRiZTkzMmUxYmQ0MTY1
ODJmMjU3NjJlNDAuLmViZDFhYzczMGIxOTQ1NDFjMmI0YzRlZWYxZjZjY2E1OTliNGU1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVT
eW5jaHJvbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCkBAIC0zMyw2MyArMzMsNTkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIFRyZWVTeW5jaHJvbml6ZXI6OmFkZENDTGF5ZXJJbXBsc1Rv
TWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIENDTGF5ZXJJbXBsKiBjY0xheWVySW1w
bCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJDaHJvbWl1bVJvb3QsIFBhc3NPd25QdHI8Q0NMYXll
ckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCkKIHsKLSAgICBtYXAuc2V0KGNjTGF5ZXJJbXBsLT5p
ZCgpLCBjY0xheWVySW1wbCk7Ci0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5jaGlsZHJlbigpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBs
c1RvTWFwUmVjdXJzaXZlKG1hcCwgY2hpbGRyZW5baV0uZ2V0KCkpOwotCi0gICAgaWYgKENDTGF5
ZXJJbXBsKiBtYXNrTGF5ZXIgPSBjY0xheWVySW1wbC0+bWFza0xheWVyKCkpCi0gICAgICAgIGFk
ZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgbWFza0xheWVyKTsKKyAgICBDQ0xheWVy
SW1wbE1hcCBtYXA7CisgICAgY29sbGVjdEV4aXN0aW5nQ0NMYXllckltcGxSZWN1cnNpdmUobWFw
LCBvbGRDQ0xheWVySW1wbFJvb3QpOwogCi0gICAgaWYgKENDTGF5ZXJJbXBsKiByZXBsaWNhTGF5
ZXIgPSBjY0xheWVySW1wbC0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBs
c1RvTWFwUmVjdXJzaXZlKG1hcCwgcmVwbGljYUxheWVyKTsKKyAgICByZXR1cm4gc3luY2hyb25p
emVUcmVlUmVjdXJzaXZlKG1hcCwgbGF5ZXJDaHJvbWl1bVJvb3QpOwogfQogCi1QYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUo
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsTWFwJiBtYXApCit2b2lkIFRyZWVTeW5j
aHJvbml6ZXI6OmNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJbXBsUmVjdXJzaXZlKENDTGF5ZXJJbXBs
TWFwJiBtYXAsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHBvcENDTGF5ZXJJbXBsKQogewotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGw7Ci0gICAgQ0NMYXllckltcGxNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLmZpbmQobGF5ZXItPmlkKCkpOwotICAgIGlmIChpdCAhPSBtYXAuZW5k
KCkpIHsKLSAgICAgICAgY2NMYXllckltcGwgPSBpdC0+c2Vjb25kOyAvLyBXZSBhbHJlYWR5IGhh
dmUgYW4gZW50cnkgZm9yIHRoaXMsIHdlIGp1c3QgbmVlZCB0byByZXBhcmVudCBpdC4KLSAgICAg
ICAgY2NMYXllckltcGwtPmNsZWFyQ2hpbGRMaXN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Y2NMYXllckltcGwgPSBsYXllci0+Y3JlYXRlQ0NMYXllckltcGwoKTsKLSAgICAgICAgbWFwLnNl
dChsYXllci0+aWQoKSwgY2NMYXllckltcGwpOyAvLyBBZGQgaXQgdG8gdGhlIG1hcCBzbyBvdGhl
ciBsYXllcnMgcmVmZXJlbmNpbmcgdGhpcyBvbmUgY2FuIHBpY2sgaXQgdXAuCi0gICAgfQorICAg
IE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGwgPSBwb3BDQ0xheWVySW1wbDsKIAotICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hpbGRyZW4gPSBsYXllci0+
Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNjTGF5ZXJJbXBsKQorICAgICAgICByZXR1cm47CisKKyAg
ICBWZWN0b3I8T3duUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5t
X2NoaWxkcmVuOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVSZWN1cnNp
dmUoY2hpbGRyZW5baV0uZ2V0KCksIG1hcCkpOworICAgICAgICBjb2xsZWN0RXhpc3RpbmdDQ0xh
eWVySW1wbFJlY3Vyc2l2ZShtYXAsIGNoaWxkcmVuW2ldLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAo
TGF5ZXJDaHJvbWl1bSogbWFza0xheWVyID0gbGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICBj
Y0xheWVySW1wbC0+c2V0TWFza0xheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXNrTGF5
ZXIsIG1hcCkpOwotICAgIGVsc2UKLSAgICAgICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcigw
KTsKKyAgICBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJlY3Vyc2l2ZShtYXAsIGNjTGF5ZXJJ
bXBsLT5tX21hc2tMYXllci5yZWxlYXNlKCkpOworICAgIGNvbGxlY3RFeGlzdGluZ0NDTGF5ZXJJ
bXBsUmVjdXJzaXZlKG1hcCwgY2NMYXllckltcGwtPm1fcmVwbGljYUxheWVyLnJlbGVhc2UoKSk7
CiAKLSAgICBpZiAoTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gbGF5ZXItPnJlcGxpY2FM
YXllcigpKQotICAgICAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXpl
VHJlZVJlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIsIG1hcCkpOwotICAgIGVsc2UKLSAgICAgICAgY2NM
YXllckltcGwtPnNldFJlcGxpY2FMYXllcigwKTsKKyAgICBpbnQgaWQgPSBjY0xheWVySW1wbC0+
aWQoKTsKKyAgICBtYXAuc2V0KGlkLCBjY0xheWVySW1wbC5yZWxlYXNlKCkpOworfQorCitQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpyZXVzZU9yQ3JlYXRlQ0NMYXll
ckltcGwoQ0NMYXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbCA9IG1hcC50YWtlKGxheWVyLT5pZCgpKTsK
KworICAgIGlmICghY2NMYXllckltcGwpCisgICAgICAgIHJldHVybiBsYXllci0+Y3JlYXRlQ0NM
YXllckltcGwoKTsKIAotICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJbXBsLmdl
dCgpKTsKICAgICByZXR1cm4gY2NMYXllckltcGwucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hy
b21pdW0qIGxheWVyQ2hyb21pdW1Sb290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRD
Q0xheWVySW1wbFJvb3QpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVy
OjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmIG1hcCwgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJv
b3QgPSBwcnBPbGRDQ0xheWVySW1wbFJvb3Q7Ci0gICAgLy8gQnVpbGQgYSBtYXAgZnJvbSBsYXll
ciBJRHMgdG8gQ0NMYXllckltcGxzIHNvIHdlIGNhbiByZXVzZSBsYXllcnMgZnJvbSB0aGUgb2xk
IHRyZWUuCi0gICAgQ0NMYXllckltcGxNYXAgbWFwOwotICAgIGlmIChvbGRDQ0xheWVySW1wbFJv
b3QpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgb2xkQ0NMYXll
ckltcGxSb290LmdldCgpKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIC8vIFJlY3Vyc2l2ZWx5IGJ1aWxkIHRoZSBuZXcgbGF5ZXIgdHJlZS4KLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IG5ld0NDTGF5ZXJJbXBsUm9vdCA9IHN5bmNocm9uaXplVHJlZVJl
Y3Vyc2l2ZShsYXllckNocm9taXVtUm9vdCwgbWFwKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+
IGNjTGF5ZXJJbXBsID0gcmV1c2VPckNyZWF0ZUNDTGF5ZXJJbXBsKG1hcCwgbGF5ZXIpOwogCi0g
ICAgcmV0dXJuIG5ld0NDTGF5ZXJJbXBsUm9vdC5yZWxlYXNlKCk7CisgICAgY2NMYXllckltcGwt
PmNsZWFyQ2hpbGRMaXN0KCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+JiBjaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGNjTGF5ZXJJbXBsLT5hZGRDaGls
ZChzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFwLCBjaGlsZHJlbltpXS5nZXQoKSkpOworCisg
ICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobWFw
LCBsYXllci0+bWFza0xheWVyKCkpKTsKKyAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVy
KHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXAsIGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkpOwor
CisgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllckltcGwuZ2V0KCkpOworICAgIHJl
dHVybiBjY0xheWVySW1wbC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RyZWVTeW5jaHJvbml6ZXIuaAppbmRleCBhNGU0OTQyMTczOTVlOGQyZTEyOTZiZDY1NjY2
MmUzMmIxMTlhY2ZmLi4xMzQ3MDhjYTQzYmQ4OWVjYmRmMmZkMjE1OTJmZDA3Mjg2ZGNjMTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVl
U3luY2hyb25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJlZVN5bmNocm9uaXplci5oCkBAIC0yOCw3ICsyOCw4IEBACiAKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTYgKzQxLDE3IEBA
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRyZWVTeW5jaHJvbml6ZXIpOwogcHVibGljOgogICAgIC8v
IEFjY2VwdHMgYSBMYXllckNocm9taXVtIHRyZWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8g
YSBDQ0xheWVySW1wbCB0cmVlIHRoYXQgZHVwbGljYXRlcyB0aGUgc3RydWN0dXJlCiAgICAgLy8g
b2YgdGhlIExheWVyQ2hyb21pdW0gdHJlZSwgcmV1c2luZyB0aGUgQ0NMYXllckltcGxzIGluIHRo
ZSB0cmVlIHByb3ZpZGVkIGJ5IG9sZENDTGF5ZXJJbXBsUm9vdCBpZiBwb3NzaWJsZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gc3luY2hyb25pemVUcmVlcyhMYXllckNocm9t
aXVtKiBsYXllclJvb3QsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9v
dCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZXMo
TGF5ZXJDaHJvbWl1bSogbGF5ZXJSb290LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xh
eWVySW1wbFJvb3QpOwogCiBwcml2YXRlOgogICAgIFRyZWVTeW5jaHJvbml6ZXIoKTsgLy8gTm90
IGluc3RhbnRpYWJsZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxDQ0xheWVy
SW1wbD4gPiBDQ0xheWVySW1wbE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8
Q0NMYXllckltcGw+ID4gQ0NMYXllckltcGxNYXA7CiAKICAgICAvLyBEZWNsYXJlZCBhcyBzdGF0
aWMgbWVtYmVyIGZ1bmN0aW9ucyBzbyB0aGV5IGNhbiBhY2Nlc3MgZnVuY3Rpb25zIG9uIExheWVy
Q2hyb21pdW0gYXMgYSBmcmllbmQgY2xhc3MuCi0gICAgc3RhdGljIHZvaWQgYWRkQ0NMYXllcklt
cGxzVG9NYXBSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmLCBDQ0xheWVySW1wbCopOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5
ZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsTWFwJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IHJldXNlT3JDcmVhdGVDQ0xheWVySW1wbChDQ0xheWVySW1wbE1hcCYsIExheWVy
Q2hyb21pdW0qKTsKKyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0RXhpc3RpbmdDQ0xheWVySW1wbFJl
Y3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+KTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVySW1wbD4gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKEND
TGF5ZXJJbXBsTWFwJiwgTGF5ZXJDaHJvbWl1bSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2I0NGVkYTM4NmQ2MTA1
YTZkYzJiY2I3OGIzZmFmMWJjNWQzOWQyZC4uZDk5ZjVlNTExYzEyYTNjNjk4Y2M4ZTg4NzUxNzEw
MTJhMzVlYzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1
Miw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXll
ckltcGwoKQorUGFzc093blB0cjxDQ0xheWVySW1wbD4gVmlkZW9MYXllckNocm9taXVtOjpjcmVh
dGVDQ0xheWVySW1wbCgpCiB7CiAgICAgcmV0dXJuIENDVmlkZW9MYXllckltcGw6OmNyZWF0ZSht
X2xheWVySWQsIG1fcHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRl
eCA2NWNmNWM2NjhkZTU0OGU1NjljMDdjOThiZTE4ODA5MjMxMWExYTcxLi43Nzk4NDgwNmI4MmZj
NmU3NjZjMmQ0M2MzNGMyN2M0ZGVlYzRmYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9M
YXllckNocm9taXVtPiBjcmVhdGUoVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1
YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAogICAgIHZvaWQgY29udGVudENoYW5nZWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKaW5kZXggOTEyNmE3ZDQ0NTAxZTYz
MjViNWVmZDRiNTdjYmE5ZTQ2YmM4YTc1YS4uYzk2YWYyNDZlZDNiYTc1ODk1YmJlZjU1MmQ0Yzk4
ZDRlODBiNWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCkBAIC0zNCw5ICsz
NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDYW52YXNMYXllckltcGwgOiBw
dWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDQ2Fu
dmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2Fu
dmFzTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDQ0NhbnZhc0xheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDQ2FudmFzTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkNDQ2FudmFz
TGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCmluZGV4IDJkNmY0
M2YzMTg1ZmM0NDVjYTk5NTlmZTgwNGY2MjRiM2I0ZTEzM2YuLjZhMDYyY2FjYTdjYzU4NzVmMmM5
MjU5OTg1NmI2YTVlYzhlNTNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBDQ0RhbWFnZVRyYWNrZXI6On5DQ0RhbWFnZVRyYWNrZXIoKQogewog
fQogCi12b2lkIENDRGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25z
dCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxpc3QsIGludCB0YXJnZXRTdXJm
YWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VNYXNrTGF5ZXIpCit2b2lkIEND
RGFtYWdlVHJhY2tlcjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8Q0NM
YXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIENDTGF5ZXJJ
bXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVyKQogewogICAgIC8vCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBjb21wdXRlcyB0aGUgImRhbWFnZSByZWN0IiBvZiBhIHRhcmdldCBzdXJmYWNlLCBhbmQg
dXBkYXRlcyB0aGUgc3RhdGUKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENDRGFtYWdlVHJhY2tl
cjo6dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJ
bXBsPgogCiAgICAgLy8gSWYgdGhlIHRhcmdldCBzdXJmYWNlIGFscmVhZHkga25vd3MgaXRzIGVu
dGlyZSByZWdpb24gaXMgZGFtYWdlZCwgd2UgY2FuIHJldHVybiBlYXJseS4KICAgICAvLyBGSVhN
RTogdGhpcyBzaG91bGQgZ28gYXdheSwgb3Igd2lsbCBiZSBjbGVhbmVyLCBhZnRlciByZWZhY3Rv
cmluZyBpbnRvIFJlbmRlclBhc3MvUmVuZGVyU2NoZWR1bGUuCi0gICAgQ0NMYXllckltcGwqIGxh
eWVyID0gbGF5ZXJMaXN0WzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IGxheWVy
TGlzdFswXTsKICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UgPSBsYXllci0+dGFy
Z2V0UmVuZGVyU3VyZmFjZSgpOwogCiAgICAgaWYgKG1fZm9yY2VGdWxsRGFtYWdlTmV4dFVwZGF0
ZSB8fCB0YXJnZXRTdXJmYWNlLT5zdXJmYWNlUHJvcGVydHlDaGFuZ2VkT25seUZyb21EZXNjZW5k
YW50KCkpIHsKQEAgLTE2MSwxMiArMTYxLDEyIEBAIHZvaWQgQ0NEYW1hZ2VUcmFja2VyOjpzYXZl
UmVjdEZvck5leHRGcmFtZShpbnQgbGF5ZXJJRCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRTCiAg
ICAgbV9uZXh0UmVjdEhpc3RvcnktPnNldChsYXllcklELCB0YXJnZXRTcGFjZVJlY3QpOwogfQog
Ci1GbG9hdFJlY3QgQ0NEYW1hZ2VUcmFja2VyOjp0cmFja0RhbWFnZUZyb21BY3RpdmVMYXllcnMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0
U3VyZmFjZUxheWVySUQpCitGbG9hdFJlY3QgQ0NEYW1hZ2VUcmFja2VyOjp0cmFja0RhbWFnZUZy
b21BY3RpdmVMYXllcnMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgaW50
IHRhcmdldFN1cmZhY2VMYXllcklEKQogewogICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0gRmxv
YXRSZWN0KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4
IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgIENDTGF5ZXJJbXBs
KiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgQ0NMYXllcklt
cGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdOwogCiAgICAgICAgIGlmIChDQ0xheWVy
VHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5ZXJJ
bXBsPihsYXllciwgdGFyZ2V0U3VyZmFjZUxheWVySUQpKQogICAgICAgICAgICAgZXh0ZW5kRGFt
YWdlRm9yUmVuZGVyU3VyZmFjZShsYXllciwgZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5oCmluZGV4IGQ0MjhmMjZkMWEwYzI1Y2EwYzQ4MWMwOTNlYjNhOGZmYmEzYmI4MDku
LjdhNjI5YzQ3ODEyODFiZTRkZmExYzQ5ZGQxM2IxMWU0Zjk1NTBmNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGFtYWdlVHJhY2tlci5oCkBAIC00NCwxMyArNDQsMTMgQEAgcHVibGljOgogICAgIH5DQ0RhbWFn
ZVRyYWNrZXIoKTsKIAogICAgIHZvaWQgZm9yY2VGdWxsRGFtYWdlTmV4dFVwZGF0ZSgpIHsgbV9m
b3JjZUZ1bGxEYW1hZ2VOZXh0VXBkYXRlID0gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlRGFtYWdl
VHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxp
c3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCwgQ0NMYXllckltcGwqIHRhcmdldFN1cmZhY2VN
YXNrTGF5ZXIpOworICAgIHZvaWQgdXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZShjb25zdCBWZWN0
b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQsIEND
TGF5ZXJJbXBsKiB0YXJnZXRTdXJmYWNlTWFza0xheWVyKTsKICAgICBjb25zdCBGbG9hdFJlY3Qm
IGN1cnJlbnREYW1hZ2VSZWN0KCkgeyByZXR1cm4gbV9jdXJyZW50RGFtYWdlUmVjdDsgfQogCiBw
cml2YXRlOgogICAgIENDRGFtYWdlVHJhY2tlcigpOwogCi0gICAgRmxvYXRSZWN0IHRyYWNrRGFt
YWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBs
YXllckxpc3QsIGludCB0YXJnZXRTdXJmYWNlTGF5ZXJJRCk7CisgICAgRmxvYXRSZWN0IHRyYWNr
RGFtYWdlRnJvbUFjdGl2ZUxheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJM
aXN0LCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpOwogICAgIEZsb2F0UmVjdCB0cmFja0RhbWFn
ZUZyb21TdXJmYWNlTWFzayhDQ0xheWVySW1wbCogdGFyZ2V0U3VyZmFjZU1hc2tMYXllcik7CiAg
ICAgRmxvYXRSZWN0IHRyYWNrRGFtYWdlRnJvbUxlZnRvdmVyUmVjdHMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuY3BwCmluZGV4IDA1ODlkY2E4YWZhYTBkMzFjODJjNjhiNGI2ZmZlNzMyMDcxYjE3
OWQuLjA4MmE4OWFiMDE4N2QyNTA3NzFhNjY3YTFlMDc2ZjllOTA3MDRjZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBD
Q0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgIDogbV9wYXJlbnQoMCkKKyAgICAs
IG1fbWFza0xheWVySWQoLTEpCisgICAgLCBtX3JlcGxpY2FMYXllcklkKC0xKQogICAgICwgbV9s
YXllcklkKGlkKQogICAgICwgbV9hbmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9y
UG9pbnRaKDApCkBAIC03Myw3ICs3NSw3IEBAIENDTGF5ZXJJbXBsOjp+Q0NMYXllckltcGwoKQog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiB9CiAKLXZvaWQgQ0NMYXllcklt
cGw6OmFkZENoaWxkKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkKQordm9pZCBDQ0xheWVy
SW1wbDo6YWRkQ2hpbGQoUGFzc093blB0cjxDQ0xheWVySW1wbD4gY2hpbGQpCiB7CiAgICAgY2hp
bGQtPnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7CkBAIC0y
NDQsNyArMjQ2LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKICAgICB0cyA8PCAiZHJhd3NDb250ZW50OiAi
IDw8IChtX2RyYXdzQ29udGVudCA/ICJ5ZXMiIDogIm5vIikgPDwgIlxuIjsKIH0KIAotdm9pZCBz
b3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGZpcnN0LCBW
ZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIq
IGxheWVyU29ydGVyKQordm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxDQ0xheWVySW1wbCo+OjppdGVy
YXRvciBmaXJzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj46Oml0ZXJhdG9yIGVuZCwgQ0NMYXllclNv
cnRlciogbGF5ZXJTb3J0ZXIpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6c29ydExheWVycyIsIDAsIDApOwogICAgIGxheWVyU29ydGVyLT5zb3J0KGZpcnN0LCBl
bmQpOwpAQCAtMzE5LDIxICszMjEsMjcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0Qm91bmRzKGNv
bnN0IEludFNpemUmIGJvdW5kcykKICAgICAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRy
dWU7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OnNldE1hc2tMYXllcihQYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBtYXNrTGF5ZXIpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoUGFzc093
blB0cjxDQ0xheWVySW1wbD4gbWFza0xheWVyKQogewotICAgIGlmIChtX21hc2tMYXllciA9PSBt
YXNrTGF5ZXIpCisgICAgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7CisKKyAgICBpbnQgbmV3TGF5
ZXJJZCA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPmlkKCkgOiAtMTsKKyAgICBpZiAobmV3
TGF5ZXJJZCA9PSBtX21hc2tMYXllcklkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX21hc2tM
YXllciA9IG1hc2tMYXllcjsKKyAgICBtX21hc2tMYXllcklkID0gbmV3TGF5ZXJJZDsKICAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgQ0NMYXllcklt
cGw6OnNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIp
Cit2b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1w
bD4gcmVwbGljYUxheWVyKQogewotICAgIGlmIChtX3JlcGxpY2FMYXllciA9PSByZXBsaWNhTGF5
ZXIpCisgICAgbV9yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7CisKKyAgICBpbnQgbmV3TGF5
ZXJJZCA9IG1fcmVwbGljYUxheWVyID8gbV9yZXBsaWNhTGF5ZXItPmlkKCkgOiAtMTsKKyAgICBp
ZiAobmV3TGF5ZXJJZCA9PSBtX3JlcGxpY2FMYXllcklkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3JlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKKyAgICBtX3JlcGxpY2FMYXllcklkID0g
bmV3TGF5ZXJJZDsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGM3YTRmMDg1NmY5NTVhNTU2ZWVjZDU0MTM2ZDUx
MTYxNTU1NjUzMTguLjE1NmI5ODk2NTczODgyYWNkYzdhNzRlN2U4ODgzMWZlMDRkMDgwNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDYsMTEgKzQ2LDExIEBAIGNsYXNzIENDTGF5ZXJTb3J0
ZXI7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwog
Ci1jbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJJbXBsPiwgcHVi
bGljIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbENsaWVudCB7CitjbGFzcyBDQ0xheWVy
SW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0xheWVySW1wbChpZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogCiAgICAgLy8gQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uLgpAQCAtNjUs
MTUgKzY1LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIFRyZWUgc3RydWN0dXJlLgogICAgIENDTGF5
ZXJJbXBsKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbjsgfQotICAgIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4pOwor
ICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q0NMYXllckltcGw+ID4mIGNoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAgIHZvaWQgYWRkQ2hpbGQoUGFzc093blB0cjxDQ0xh
eWVySW1wbD4pOwogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKIAotICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+KTsKKyAgICB2b2lkIHNldE1hc2tMYXllcihQYXNzT3duUHRyPENDTGF5ZXJJbXBsPik7
CiAgICAgQ0NMYXllckltcGwqIG1hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVy
LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJ
bXBsPik7CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4p
OwogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxp
Y2FMYXllci5nZXQoKTsgfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMjM2LDkgKzIzNiwxMiBAQCBw
cml2YXRlOgogCiAgICAgLy8gUHJvcGVydGllcyBpbnRlcm5hbCB0byBDQ0xheWVySW1wbAogICAg
IENDTGF5ZXJJbXBsKiBtX3BhcmVudDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+
IG1fY2hpbGRyZW47Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBtX21hc2tMYXllcjsKLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IG1fcmVwbGljYUxheWVyOworICAgIFZlY3RvcjxPd25QdHI8Q0NM
YXllckltcGw+ID4gbV9jaGlsZHJlbjsKKyAgICAvLyBtX21hc2tMYXllciBjYW4gYmUgdGVtcG9y
YXJpbHkgc3RvbGVuIGR1cmluZyB0cmVlIHN5bmMsIHdlIG5lZWQgdGhpcyBJRCB0byBjb25maXJt
IG5ld2x5IGFzc2lnbmVkIGxheWVyIGlzIHN0aWxsIHRoZSBwcmV2aW91cyBvbmUKKyAgICBpbnQg
bV9tYXNrTGF5ZXJJZDsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fbWFza0xheWVyOworICAg
IGludCBtX3JlcGxpY2FMYXllcklkOyAvLyBkaXR0bworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
bV9yZXBsaWNhTGF5ZXI7CiAgICAgaW50IG1fbGF5ZXJJZDsKIAogICAgIC8vIFByb3BlcnRpZXMg
c3luY2hyb25pemVkIGZyb20gdGhlIGFzc29jaWF0ZWQgTGF5ZXJDaHJvbWl1bS4KQEAgLTMyNCw3
ICszMjcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGw+IG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyOwogfTsKIAotdm9pZCBzb3J0TGF5ZXJz
KFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8UmVm
UHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKK3ZvaWQg
c29ydExheWVycyhWZWN0b3I8Q0NMYXllckltcGwqPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxD
Q0xheWVySW1wbCo+OjppdGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckl0ZXJhdG9yLmNwcAppbmRleCA5N2Q2ZDE4NWEwNGM3MjExZWJiYjJhYzgy
ZjU1M2M0MjIzOTllZjQ4Li4yZDZkMmY3ZjdhOWVjMDU0ZDA5MDkxNTYxYTBjOGI0NzcyYTViMzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5jcHAKQEAgLTM1LDggKzM1LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KLXZvaWQgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0
LCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQogewogICAgIGl0Lm1fdGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVySW5kZXggPSAwOwogICAgIGl0Lm1fY3VycmVudExheWVySW5kZXgg
PSBDQ0xheWVySXRlcmF0b3JWYWx1ZTo6TGF5ZXJJbmRleFJlcHJlc2VudGluZ1RhcmdldFJlbmRl
clN1cmZhY2U7CkBAIC00NCwxNSArNDQsMTUgQEAgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGUKICAg
ICBtX2hpZ2hlc3RUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIgPSAwOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUg
QWN0aW9uVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVu
ZChDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlw
ZT4mIGl0KQordGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0
LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KK3ZvaWQg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3I8
TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQp
CiB7CiAgICAgaXQubV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVy
YXRvclZhbHVlOjpJbnZhbGlkVGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXg7CiAgICAgaXQu
bV9jdXJyZW50TGF5ZXJJbmRleCA9IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgotdm9p
ZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udDo6bmV4dChDQ0xheWVySXRlcmF0
b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQordGVtcGxh
dGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KK3ZvaWQgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5
ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQogewogICAgIC8vIElm
IHRoZSBjdXJyZW50IGxheWVyIGhhcyBhIFJTLCBtb3ZlIHRvIGl0cyBsYXllciBsaXN0LiBPdGhl
cndpc2UsIHZpc2l0IHRoZSBuZXh0IGxheWVyIGluIHRoZSBjdXJyZW50IFJTIGxheWVyIGxpc3Qu
CiAgICAgaWYgKGl0LmN1cnJlbnRMYXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJm
YWNlKCkpIHsKQEAgLTg1LDIzICs4NSwyMyBAQCB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6
OkJhY2tUb0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlcgogICAg
IH0KIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkZyb250VG9CYWNrOjpiZWdpbihDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQordGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlw
ZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5h
bWUgQWN0aW9uVHlwZT4KK3ZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6
OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFj
ZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKIHsKICAgICBpdC5tX3RhcmdldFJlbmRlclN1cmZhY2VM
YXllckluZGV4ID0gMDsKICAgICBpdC5tX2N1cnJlbnRMYXllckluZGV4ID0gaXQudGFyZ2V0UmVu
ZGVyU3VyZmFjZUNoaWxkcmVuKCkuc2l6ZSgpIC0gMTsKICAgICBnb1RvSGlnaGVzdEluU3VidHJl
ZShpdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBBY3Rpb25UeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFj
ZVR5cGUsIEFjdGlvblR5cGU+JiBpdCkKIHsKICAgICBpdC5tX3RhcmdldFJlbmRlclN1cmZhY2VM
YXllckluZGV4ID0gQ0NMYXllckl0ZXJhdG9yVmFsdWU6OkludmFsaWRUYXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleDsKICAgICBpdC5tX2N1cnJlbnRMYXllckluZGV4ID0gMDsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5
cGVuYW1lIEFjdGlvblR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBB
Y3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBM
YXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBl
Pgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25U
eXBlPiYgaXQpCiB7CiAgICAgLy8gTW92ZXMgdG8gdGhlIHByZXZpb3VzIGxheWVyIGluIHRoZSBj
dXJyZW50IFJTIGxheWVyIGxpc3QuIFRoZW4gd2UgY2hlY2sgaWYgdGhlCiAgICAgLy8gbmV3IGN1
cnJlbnQgbGF5ZXIgaGFzIGl0cyBvd24gUlMsIGluIHdoaWNoIGNhc2UgdGhlcmUgYXJlIHRoaW5n
cyBpbiB0aGF0IFJTIGxheWVyIGxpc3QgdGhhdCBhcmUgaGlnaGVyLCBzbwpAQCAtMTI4LDggKzEy
OCw4IEBAIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQoQ0NM
YXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyCiAgICAgfQogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0
aW9uVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmdvVG9I
aWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlLCBBY3Rpb25UeXBlPiYgaXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rp
b25UeXBlPgordm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hp
Z2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5k
ZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mIGl0KQogewogICAgIGlmIChpdC5jdXJyZW50TGF5
ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByZXR1cm47CkBAIC0x
NDcsMjMgKzE0NywyMyBAQCB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNr
Ojpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVySXRlcmF0b3I8TAogfQogCiAvLyBEZWNsYXJl
IGVhY2ggb2YgdGhlIGFib3ZlIGZ1bmN0aW9ucyBmb3IgTGF5ZXJDaHJvbWl1bSBhbmQgQ0NMYXll
ckltcGwgY2xhc3NlcyBzbyB0aGF0IHRoZXkgYXJlIGxpbmtlZC4KLXRlbXBsYXRlIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIEJhY2tUb0Zyb250PiAmKTsKLXRl
bXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBCYWNrVG9G
cm9udD4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJv
bnQ6Om5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSwgQmFja1RvRnJvbnQ+Jik7Ci0KLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0
aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NS
ZW5kZXJTdXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3I8Q0NMYXllckltcGws
IENDUmVuZGVyU3VyZmFjZSwgQmFja1RvRnJvbnQ+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJ
dGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKLQotdGVtcGxhdGUgdm9pZCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3I8
TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBGcm9udFRvQmFjaz4mKTsKLXRl
bXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVuZChDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBGcm9udFRv
QmFjaz4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0Jh
Y2s6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0sIEZyb250VG9CYWNrPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgRnJvbnRUb0JhY2s+Jik7Ci0KLXRl
bXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5leHQoQ0NM
YXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIEZyb250VG9CYWNrPiYp
OwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6ZW5k
KENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBGcm9udFRvQmFj
az4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6
OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBGcm9u
dFRvQmFjaz4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRU
b0JhY2s6OmdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwg
Q0NSZW5kZXJTdXJmYWNlLCBGcm9udFRvQmFjaz4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXllckNo
cm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSwgQmFja1RvRnJvbnQ+ICYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpCYWNrVG9Gcm9udDo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQmFja1Rv
RnJvbnQ+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zy
b250OjpuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQmFja1RvRnJvbnQ+Jik7CisK
K3RlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2lu
KENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVu
ZGVyU3VyZmFjZSwgQmFja1RvRnJvbnQ+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRv
ckFjdGlvbnM6OkJhY2tUb0Zyb250OjplbmQoQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBW
ZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKK3Rl
bXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQoQ0NM
YXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJT
dXJmYWNlLCBCYWNrVG9Gcm9udD4mKTsKKwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIEZy
b250VG9CYWNrPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9u
dFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgRnJvbnRUb0JhY2s+Jik7
Cit0ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpiZWdp
bihDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIEZyb250VG9CYWNrPiYpOwordGVtcGxhdGUg
dm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1
YnRyZWUoQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBGcm9udFRvQmFjaz4mKTsKKwordGVt
cGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xh
eWVySXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1
cmZhY2UsIEZyb250VG9CYWNrPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjazo6ZW5kKENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgRnJvbnRUb0JhY2s+Jik7Cit0ZW1wbGF0
ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpiZWdpbihDQ0xheWVy
SXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZh
Y2UsIEZyb250VG9CYWNrPiYpOwordGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yPENDTGF5
ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBGcm9udFRvQmFj
az4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRv
ci5oCmluZGV4IGJlOTg1ZTE1MzEwM2Y1MDhlYTQ1MjJiOTk5OGY5MGEwOTRkNWE2NzAuLmQ4OWJk
NjkxMjc3MTdhNTk3MTU1ZTU3NDA5MDRmN2VhNDZiZjdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
dGVyYXRvci5oCkBAIC05MiwxNSArOTIsMTUgQEAgc3RydWN0IENDTGF5ZXJJdGVyYXRvclZhbHVl
IHsKIH07CiAKIC8vIEFuIGl0ZXJhdG9yIGNsYXNzIGZvciB3YWxraW5nIG92ZXIgbGF5ZXJzIGlu
IHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgSXRlcmF0b3JBY3Rpb25U
eXBlPgordGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0
eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgSXRlcmF0b3JBY3Rpb25UeXBlPgog
Y2xhc3MgQ0NMYXllckl0ZXJhdG9yIHsKLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBJdGVyYXRvckFjdGlvblR5cGU+IENDTGF5ZXJJdGVy
YXRvclR5cGU7CisgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXllckxp
c3QsIFJlbmRlclN1cmZhY2VUeXBlLCBJdGVyYXRvckFjdGlvblR5cGU+IENDTGF5ZXJJdGVyYXRv
clR5cGU7CiAKIHB1YmxpYzoKICAgICBDQ0xheWVySXRlcmF0b3IoKSA6IG1fcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCgwKSB7IH0KIAotICAgIHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGJlZ2lu
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KSB7IHJldHVybiBDQ0xheWVySXRlcmF0b3JUeXBlKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHRy
dWUpOyB9Ci0gICAgc3RhdGljIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TGF5ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSB7IHJldHVybiBDQ0xh
eWVySXRlcmF0b3JUeXBlKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGZhbHNlKTsgfQorICAgIHN0
YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGJlZ2luKGNvbnN0IExheWVyTGlzdCogcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCB0cnVlKTsgfQorICAgIHN0YXRpYyBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZChj
b25zdCBMYXllckxpc3QqIHJlbmRlclN1cmZhY2VMYXllckxpc3QpIHsgcmV0dXJuIENDTGF5ZXJJ
dGVyYXRvclR5cGUocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZmFsc2UpOyB9CiAKICAgICBDQ0xh
eWVySXRlcmF0b3JUeXBlJiBvcGVyYXRvcisrKCkgeyBtX2FjdGlvbnMubmV4dCgqdGhpcyk7IHJl
dHVybiAqdGhpczsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDQ0xheWVySXRlcmF0b3Im
IG90aGVyKSBjb25zdApAQCAtMTE3LDEwICsxMTcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcmVw
cmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiAhcmVwcmVz
ZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSAmJiBjdXJyZW50TGF5ZXJSZXByZXNlbnRzQ29udHJp
YnV0aW5nUmVuZGVyU3VyZmFjZSgpOyB9CiAgICAgYm9vbCByZXByZXNlbnRzSXRzZWxmKCkgY29u
c3QgeyByZXR1cm4gIXJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkgJiYgIXJlcHJlc2Vu
dHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCk7IH0KIAotICAgIExheWVyVHlwZSogdGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyKCkgY29uc3QgeyByZXR1cm4gKCptX3JlbmRlclN1cmZhY2VMYXll
ckxpc3QpW21fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhdLmdldCgpOyB9CisgICAgTGF5
ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBnZXRSYXdQ
dHIoKCptX3JlbmRlclN1cmZhY2VMYXllckxpc3QpW21fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVy
SW5kZXhdKTsgfQogCiBwcml2YXRlOgotICAgIENDTGF5ZXJJdGVyYXRvcihjb25zdCBWZWN0b3I8
UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgYm9vbCBzdGFydCkK
KyAgICBDQ0xheWVySXRlcmF0b3IoY29uc3QgTGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBib29sIHN0YXJ0KQogICAgICAgICA6IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdChyZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KQogICAgIHsKICAgICAgICAgaWYgKHN0YXJ0ICYmICFyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LT5pc0VtcHR5KCkpCkBAIC0xMjksMTYgKzEyOSwxOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9hY3Rpb25zLmVuZCgqdGhpcyk7CiAgICAgfQogCi0gICAgaW5saW5l
IExheWVyVHlwZSogY3VycmVudExheWVyKCkgY29uc3QgeyByZXR1cm4gY3VycmVudExheWVyUmVw
cmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSA/IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigp
IDogdGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKClbbV9jdXJyZW50TGF5ZXJJbmRleF0uZ2V0
KCk7IH0KKyAgICBpbmxpbmUgc3RhdGljIExheWVyQ2hyb21pdW0qIGdldFJhd1B0cihjb25zdCBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9CisgICAgaW5s
aW5lIHN0YXRpYyBDQ0xheWVySW1wbCogZ2V0UmF3UHRyKENDTGF5ZXJJbXBsKiBwdHIpIHsgcmV0
dXJuIHB0cjsgfQorCisgICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVyKCkgY29uc3Qg
eyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSA/IHRh
cmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogZ2V0UmF3UHRyKHRhcmdldFJlbmRlclN1cmZhY2VD
aGlsZHJlbigpW21fY3VycmVudExheWVySW5kZXhdKTsgfQogCiAgICAgaW5saW5lIGJvb2wgY3Vy
cmVudExheWVyUmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJl
dHVybiBDQ0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFy
Z2V0PExheWVyVHlwZT4oY3VycmVudExheWVyKCksIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigp
LT5pZCgpKTsgfQogICAgIGlubGluZSBib29sIGN1cnJlbnRMYXllclJlcHJlc2VudHNUYXJnZXRS
ZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TGF5ZXJJbmRleCA9PSBDQ0xh
eWVySXRlcmF0b3JWYWx1ZTo6TGF5ZXJJbmRleFJlcHJlc2VudGluZ1RhcmdldFJlbmRlclN1cmZh
Y2U7IH0KIAogICAgIGlubGluZSBSZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJm
YWNlKCk7IH0KLSAgICBpbmxpbmUgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4mIHRh
cmdldFJlbmRlclN1cmZhY2VDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRhcmdldFJlbmRlclN1
cmZhY2UoKS0+bGF5ZXJMaXN0KCk7IH0KKyAgICBpbmxpbmUgY29uc3QgTGF5ZXJMaXN0JiB0YXJn
ZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0YXJnZXRSZW5kZXJTdXJm
YWNlKCktPmxheWVyTGlzdCgpOyB9CiAKICAgICBJdGVyYXRvckFjdGlvblR5cGUgbV9hY3Rpb25z
OwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+KiBtX3JlbmRlclN1cmZhY2VM
YXllckxpc3Q7CisgICAgY29uc3QgTGF5ZXJMaXN0KiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3Q7
CiAKICAgICAvLyBUaGUgaXRlcmF0b3IncyBjdXJyZW50IHBvc2l0aW9uLgogCkBAIC0xNjEsMTQg
KzE2NCwxNCBAQCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucyB7CiAgICAgLy8gV2Fsa3Mg
bGF5ZXJzIHNvcnRlZCBieSB6LW9yZGVyIGZyb20gYmFjayB0byBmcm9udC4KICAgICBjbGFzcyBC
YWNrVG9Gcm9udCB7CiAgICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4K
LSAgICAgICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlw
ZW5hbWUgQWN0aW9uVHlwZT4KKyAgICAgICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3I8TGF5
ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOwogCi0g
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRl
cmF0b3I8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KKyAgICAgICAgdm9p
ZCBlbmQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNl
VHlwZSwgQWN0aW9uVHlwZT4mKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQWN0aW9uVHlwZT4KLSAg
ICAgICAgdm9pZCBuZXh0KENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlLCBBY3Rpb25UeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBl
LCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFt
ZSBBY3Rpb25UeXBlPgorICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlw
ZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQWN0aW9uVHlwZT4mKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGludCBtX2hpZ2hlc3RUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXI7CkBA
IC0xNzcsMTggKzE4MCwxOCBAQCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucyB7CiAgICAg
Ly8gV2Fsa3MgbGF5ZXJzIHNvcnRlZCBieSB6LW9yZGVyIGZyb20gZnJvbnQgdG8gYmFjawogICAg
IGNsYXNzIEZyb250VG9CYWNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rp
b25UeXBlPgotICAgICAgICB2b2lkIGJlZ2luKENDTGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgorICAgICAgICB2b2lkIGJlZ2luKENDTGF5ZXJJdGVy
YXRvcjxMYXllclR5cGUsIExheWVyTGlzdCwgUmVuZGVyU3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+
Jik7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgZW5kKEND
TGF5ZXJJdGVyYXRvcjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYp
OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxp
c3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25UeXBlPgorICAg
ICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRl
clN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBBY3Rpb25U
eXBlPgotICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUs
IHR5cGVuYW1lIEFjdGlvblR5cGU+CisgICAgICAgIHZvaWQgbmV4dChDQ0xheWVySXRlcmF0b3I8
TGF5ZXJUeXBlLCBMYXllckxpc3QsIFJlbmRlclN1cmZhY2VUeXBlLCBBY3Rpb25UeXBlPiYpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+Ci0gICAgICAgIHZv
aWQgZ29Ub0hpZ2hlc3RJblN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGUsIEFjdGlvblR5cGU+Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBM
YXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUs
IHR5cGVuYW1lIEFjdGlvblR5cGU+CisgICAgICAgIHZvaWQgZ29Ub0hpZ2hlc3RJblN1YnRyZWUo
Q0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwg
QWN0aW9uVHlwZT4mKTsKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcApp
bmRleCA3NTI4NTU0NDcxN2NmZGI1YTlhMmNkM2NhZjdkZmQzMGNiMjcxOTY0Li5jNDM0YTFkOTUx
MjQ2MzU1Mzc3Mjc2NzI4MjA5MDczZWM0OWYwMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVy
LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgQ0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhO
b2RlcyhMYXllckxpc3Q6Oml0ZXJhdG9yIGZpcnN0LCBMYXllckxpc3Q6Oml0ZXJhCiAgICAgZmxv
YXQgbWluWiA9IEZMVF9NQVg7CiAgICAgZmxvYXQgbWF4WiA9IC1GTFRfTUFYOwogICAgIGZvciAo
TGF5ZXJMaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGZpcnN0OyBpdCA8IGxhc3Q7IGl0KyspIHsK
LSAgICAgICAgbV9ub2Rlcy5hcHBlbmQoR3JhcGhOb2RlKGl0LT5nZXQoKSkpOworICAgICAgICBt
X25vZGVzLmFwcGVuZChHcmFwaE5vZGUoKml0KSk7CiAgICAgICAgIEdyYXBoTm9kZSYgbm9kZSA9
IG1fbm9kZXMuYXQobV9ub2Rlcy5zaXplKCkgLSAxKTsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNl
KiByZW5kZXJTdXJmYWNlID0gbm9kZS5sYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgICAgICBp
ZiAoIW5vZGUubGF5ZXItPmRyYXdzQ29udGVudCgpICYmICFyZW5kZXJTdXJmYWNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clNvcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclNvcnRlci5oCmluZGV4IDJjMzBkNWRhZTRhMDk5MGY0YzIxNGUwZWVmZDA2MDM3NGE3
MWNiOTYuLjhhYjliNzU4MTRlOGNjNmZhMmVjYmIxY2JkZTg4NzFkMjEzMGM5N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJT
b3J0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyU29ydGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQ0NMYXllclNvcnRlciB7
CiBwdWJsaWM6CiAgICAgQ0NMYXllclNvcnRlcigpOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPENDTGF5ZXJJbXBsPiA+IExheWVyTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVy
SW1wbCo+IExheWVyTGlzdDsKIAogICAgIHZvaWQgc29ydChMYXllckxpc3Q6Oml0ZXJhdG9yIGZp
cnN0LCBMYXllckxpc3Q6Oml0ZXJhdG9yIGxhc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAppbmRleCA1MDFlZTE3ZGU2OWU0YzM4MWE2Y2FiNGUxMjBjMmIxYTJmZmJhMDE4Li45
NDBlMTdjOGQ5NzY2MDU0ZmNmNGRhNTI5OWZjNDE5YzQxMThhOGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE2OSwxMyArMTY5LDExIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAotICAgIC8vIFN5
bmNocm9uaXplIHRyZWVzLCBpZiBvbmUgZXhpc3RzIGF0IGFsbC4uLgotICAgIGlmIChyb290TGF5
ZXIoKSkgewotICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6
OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBsLT5yb290TGF5ZXIoKSkpOwot
ICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVyaW5nIHRoZSB0cmVl
IHN5bmMuIFRoaXMgd2lsbCBjYXVzZSBob3N0SW1wbCB0byB2aXNpdCBpdHMgY29udHJvbGxlcnMu
CisgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6
ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cmVsZWFzZVJvb3RMYXllcigpKSk7CisKKyAg
ICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVyaW5nIHRoZSB0cmVlIHN5bmMu
IFRoaXMgd2lsbCBjYXVzZSBob3N0SW1wbCB0byB2aXNpdCBpdHMgY29udHJvbGxlcnMuCisgICAg
aWYgKHJvb3RMYXllcigpKQogICAgICAgICBob3N0SW1wbC0+c2V0TmVlZHNBbmltYXRlTGF5ZXJz
KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7CiAKICAg
ICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7CkBAIC0zMzcsMTYgKzMzNSwx
NSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQogICAgIC8vIElmIHRoZSBmcm9udGJ1ZmZlciBp
cyBjYWNoZWQsIHRoZW4gY2xvYmJlciB0aGUgaW1wbCB0cmVlLiBPdGhlcndpc2UsCiAgICAgLy8g
cHVzaCBvdmVyIHRoZSB0cmVlIGNoYW5nZXMuCiAgICAgaWYgKG1fcHJveHktPmxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKS5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpIHsKLSAgICAgICAg
aG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKKyAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cihudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyb290TGF5ZXIo
KSkgewotICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5
bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBsLT5yb290TGF5ZXIoKSkpOwotICAg
ICAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVyaW5nIHRoZSB0cmVlIHN5
bmMuIFRoaXMgd2lsbCBjYXVzZSBob3N0SW1wbCB0byB2aXNpdCBpdHMgY29udHJvbGxlcnMuCisg
ICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRy
ZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+cmVsZWFzZVJvb3RMYXllcigpKSk7CisKKyAgICAv
LyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVyaW5nIHRoZSB0cmVlIHN5bmMuIFRo
aXMgd2lsbCBjYXVzZSBob3N0SW1wbCB0byB2aXNpdCBpdHMgY29udHJvbGxlcnMuCisgICAgaWYg
KHJvb3RMYXllcigpKQogICAgICAgICBob3N0SW1wbC0+c2V0TmVlZHNBbmltYXRlTGF5ZXJzKCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7CiB9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVy
YXRpb25TZWMpCkBAIC00NDAsNyArNDM3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cmVzZXJ2ZVRleHR1cmVzKCkKIHsKICAgICAvLyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBj
aGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKKyAgICB0eXBl
ZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsKICAgICBm
b3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
bV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC01MzIsNyArNTI5LDcgQEAgc3Rh
dGljIHZvaWQgbGVhdmVUYXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVn
aW9uPiYgc3RhY2ssIFJlbmRlclMKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUg
cGFpbnRUeXBlKQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGlu
ZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4K
LSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRl
cmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAog
ICAgIC8vIFRoZSBzdGFjayBob2xkcyBvY2NsdWRlZCByZWdpb25zIGZvciBzdWJ0cmVlcyBpbiB0
aGUgUmVuZGVyU3VyZmFjZS1MYXllciB0cmVlLCBzbyB0aGF0IHdoZW4gd2UgbGVhdmUgYSBzdWJ0
cmVlIHdlIG1heQogICAgIC8vIGFwcGx5IGEgbWFzayB0byBpdCwgYnV0IG5vdCB0byB0aGUgcGFy
dHMgb3V0c2lkZSB0aGUgc3VidHJlZS4KQEAgLTU2OSw3ICs1NjYsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
CiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNu
J3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hy
b21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFj
a1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CisgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0
b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xh
eWVySXRlcmF0b3JUeXBlOwogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0
b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlzdCk7IGl0
ICE9IGVuZDsgKytpdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAKaW5kZXggNGZjODY5NDAwOTZmOTczODllODNlY2M5OGRlYmMxNGYyZDI0YTI2ZC4uYzg2ZDc0
ZDg2MWRhZjRlNmUzMjVkMWM1M2ZkNDdmNDk4NjRmODZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0xNDksMTEgKzE0OSw5IEBAIHN0YXRpYyBib29s
IHN1YnRyZWVTaG91bGRSZW5kZXJUb1NlcGFyYXRlU3VyZmFjZShMYXllclR5cGUqIGxheWVyLCBi
b29sIGF4aXNBbGlnCiAKIC8vIFJlY3Vyc2l2ZWx5IHdhbGtzIHRoZSBsYXllciB0cmVlIHN0YXJ0
aW5nIGF0IHRoZSBnaXZlbiBub2RlIGFuZCBjb21wdXRlcyBhbGwgdGhlCiAvLyBuZWNlc3Nhcnkg
dHJhbnNmb3JtYXRpb25zLCBjbGlwUmVjdHMsIHJlbmRlciBzdXJmYWNlcywgZXRjLgotdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5h
bWUgTGF5ZXJTb3J0ZXI+Ci1zdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXllciwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFJlbmRlclN1cmZhY2VUeXBlKiBuZWFy
ZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMsIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgbGF5ZXJM
aXN0LCBMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKK3RlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5ZXJMaXN0LCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgTGF5ZXJTb3J0ZXI+CitzdGF0aWMgYm9vbCBjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBM
YXllclR5cGUqIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1h
dHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFJl
bmRlclN1cmZhY2VUeXBlKiBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMsIExheWVyTGlz
dCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgTGF5ZXJMaXN0JiBsYXllckxpc3QsIExheWVyU29y
dGVyKiBsYXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXplKQogewotICAgIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxMYXllclR5cGU+ID4gTGF5ZXJMaXN0OwotCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBjb21wdXRlcyB0aGUgbmV3IG1hdHJpeCB0cmFuc2Zvcm1hdGlvbnMgcmVjdXJzaXZlbHkgZm9y
IHRoaXMKICAgICAvLyBsYXllciBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4gSXQgYWxzbyBjb21w
dXRlcyB0aGUgYXBwcm9wcmlhdGUgcmVuZGVyIHN1cmZhY2VzLgogICAgIC8vIFNvbWUgaW1wb3J0
YW50IHBvaW50cyB0byByZW1lbWJlcjoKQEAgLTM5MCw3ICszODgsNyBAQCBzdGF0aWMgYm9vbCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxh
eWVyLCBMYXllcgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4o
KS5zaXplKCk7ICsraSkgewogICAgICAgICBMYXllclR5cGUqIGNoaWxkID0gbGF5ZXItPmNoaWxk
cmVuKClbaV0uZ2V0KCk7Ci0gICAgICAgIGJvb2wgZHJhd3NDb250ZW50ID0gY2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZSwgTGF5ZXJTb3J0ZXI+KGNoaWxkLCByb290TGF5ZXIsIHN1YmxheWVyTWF0cml4LCBuZXh0
SGllcmFyY2h5TWF0cml4LCBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGRlc2NlbmRhbnRzLCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUp
OworICAgICAgICBib29sIGRyYXdzQ29udGVudCA9IGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eUludGVybmFsPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlw
ZSwgTGF5ZXJTb3J0ZXI+KGNoaWxkLCByb290TGF5ZXIsIHN1YmxheWVyTWF0cml4LCBuZXh0SGll
cmFyY2h5TWF0cml4LCBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGRlc2NlbmRhbnRzLCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOwog
CiAgICAgICAgIGlmIChkcmF3c0NvbnRlbnQpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpKSB7CkBAIC00OTUsMTEgKzQ5MywxMSBAQCBzdGF0aWMgYm9vbCBjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBM
YXllcgogLy8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiB0
byBzZXQgdmlzaWJpbGl0eSByZWN0cyBvbiBhIHNlY29uZAogLy8gdHJlZSBwYXNzLCByZXZpc2Ug
Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdCgpIHNvIHRoYXQgdGhpcyBjYW4gYmUgZG9uZSBpbiBh
IHNpbmdsZQogLy8gcGFzcyBpbnNpZGUgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWw8PigpLgotdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZT4KLXN0YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNp
YmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgTGF5
ZXJMaXN0LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK3N0YXRpYyB2b2lkIHdhbGtMYXll
cnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hl
YXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYgQ0NMYXllckl0
ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyVHlwZSwgTGF5ZXJMaXN0LCBSZW5kZXJTdXJmYWNlVHlwZSwgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKQEAgLTUxMiwxNCArNTEwLDE0IEBAIHN0YXRpYyB2b2lkIHdhbGtMYXll
cnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVy
VHlwCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyQ2hyb21pdW0qIHJvb3RM
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+JiBsYXllckxpc3QsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKLSAgICBXZWJD
b3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbDxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIHZvaWQqPihsYXllciwgcm9vdExheWVyLCBw
YXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIDAsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIGxheWVyTGlzdCwgMCwgbWF4VGV4dHVyZVNpemUpOwotICAgIHdhbGtMYXllcnNBbmRDYWxj
dWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0+KHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCB2b2lkPihsYXllciwg
cm9vdExheWVyLCBwYXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIDAsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwgMCwgbWF4VGV4dHVyZVNpemUpOworICAgIHdhbGtM
YXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxMYXllckNocm9taXVtLCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4ocmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxheWVyLCBDQ0xheWVy
SW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9y
PFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPFJl
ZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRl
ciwgaW50IG1heFRleHR1cmVTaXplKQordm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGF5ZXIsIENDTGF5
ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRy
aXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0
b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhUZXh0
dXJlU2l6ZSkKIHsKLSAgICBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRl
cm5hbDxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVyU29ydGVyPihsYXllciwg
cm9vdExheWVyLCBwYXJlbnRNYXRyaXgsIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIDAsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwgbGF5ZXJTb3J0ZXIsIG1heFRleHR1cmVTaXplKTsK
LSAgICB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8Q0NMYXllckltcGws
IENDUmVuZGVyU3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgY2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8Q0NMYXllckltcGwsIFZlY3RvcjxD
Q0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290
TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgMCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOworICAg
IHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgVmVj
dG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmgKaW5kZXggMmUwY2JjZjJjNTg1ZTgyMTVkMjg2ZGVlOWI2MWU1MzUxODBj
ZmZhZC4uZGYyM2NkMDFmZWFiNTg0ZTViYzhjNjdhYTU2NDJkZmEyMzdiNjA4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIEludFJlY3QgY2FsY3Vs
YXRlVmlzaWJsZUxheWVyUmVjdChMYXllclR5cGUqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShMYXllckNocm9taXVtKiwgTGF5ZXJDaHJv
bWl1bSogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGxheWVyTGlzdCwgaW50IG1heFRleHR1cmVTaXplKTsK
LSAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NM
YXllckltcGwqLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJh
cmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5ZXJMaXN0LCBDQ0xheWVy
U29ydGVyKiwgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXll
ckxpc3QsIENDTGF5ZXJTb3J0ZXIqLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgYm9vbCByZW5kZXJTdXJmYWNlQ29udHJpYnV0
ZXNUb1RhcmdldChMYXllclR5cGUqLCBpbnQgdGFyZ2V0U3VyZmFjZUxheWVySUQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQzMGM2OGMzNzg2MjExZDg1
YWQ1YmRjMmM5N2RiNzE2MzA2NmRjOTcuLmU2OGI5ZTk4MDJlMGY4ODdiOGJhM2IxZDc1YmNkY2I4
ZjI0ZmVlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC01
MCw2ICs1MCw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3NvdXJjZUZyYW1lTnVtYmVyKC0xKQogICAgICwgbV9mcmFtZU51bWJlcigw
KQorICAgICwgbV9zY3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3Mp
CiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCkBAIC0xMzQsNyAr
MTM1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFja0RhbWFnZUZvckFsbFN1cmZh
Y2VzKENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyLAogICAgIC8vIGRhbWFnZSByZWN0LiBUaGUg
cm9vdCBkYW1hZ2UgcmVjdCBpcyB0aGVuIHVzZWQgdG8gc2Npc3NvciBlYWNoIHN1cmZhY2UuCiAK
ICAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUo
KSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgQ0NM
YXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3Vy
ZmFjZUluZGV4XS5nZXQoKTsKKyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXll
ciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XTsKICAgICAgICAgQ0NSZW5k
ZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgcmVuZGVyU3Vy
ZmFjZS0+ZGFtYWdlVHJhY2tlcigpLT51cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKHJlbmRlclN1
cmZhY2UtPmxheWVyTGlzdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCksIHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCkpOwpAQCAtMTk4LDcgKzE5OSw3IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3Nl
cywgQ0NMYXllCiAgICAgbV9yb290RGFtYWdlUmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJm
YWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKIAogICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3Vy
ZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBDQ0xheWVySW1wbCog
cmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhd
LmdldCgpOworICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2Uq
IHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKIAog
ICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUo
cmVuZGVyU3VyZmFjZSk7CkBAIC0yMTAsNyArMjExLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xh
eWUKIAogICAgICAgICBjb25zdCBDQ0xheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFj
ZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxh
eWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAg
IENDTGF5ZXJJbXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAg
ICAgICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XTsKICAgICAg
ICAgICAgIGlmIChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIApAQCAtMjk0LDcgKzI5NSw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6ZHJhd0xheWVycygpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXNzZXMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd1JlbmRlclBhc3MocGFz
c2VzW2ldLmdldCgpKTsKIAotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBD
Q0xheWVySXRlcmF0b3JUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJ
bXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAogICAgIENDTGF5
ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsg
KytpdCkgewpAQCAtMzYzLDcgKzM2NCw3IEBAIHN0YXRpYyBDQ0xheWVySW1wbCogZmluZFNjcm9s
bExheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gbGF5
ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcihQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllckltcGwgPSBsYXllcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGU0MzhkYjBjNGEzYjMxMDAwYWI5
YjJlYjgxMDE2ZTMzY2M5YmExOTAuLmY3N2UwZWI4NDIxNzNmNzFjZmE0Nzc3NzRlOTViMzM0NzM5
MTJhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTk0LDkgKzk0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3QgSW50
UmVjdCYpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdExheWVySW1wbC5nZXQoKTsgfQotICAgIHZvaWQgc2V0Um9vdExheWVyKFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+KTsKKyAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzT3duUHRyPENDTGF5ZXJJ
bXBsPik7CisgICAgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcmVsZWFzZVJvb3RMYXllcigpIHsg
cmV0dXJuIG1fcm9vdExheWVySW1wbC5yZWxlYXNlKCk7IH0KIAotICAgIENDTGF5ZXJJbXBsKiBz
Y3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXJJbXBsLmdldCgpOyB9Cisg
ICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXll
ckltcGw7IH0KIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsg
fQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKQEAgLTEzNiw3ICsxMzcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IENDTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9y
PENDTGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CiAKICAgICB2b2lkIGNvbXB1dGVEb3VibGVUYXBa
b29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8pOwogICAgIHZvaWQgY29t
cHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKQEAg
LTE1Myw4ICsxNTQsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25z
dDsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IG1fc2Nyb2xsTGF5ZXJJbXBsOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9y
b290TGF5ZXJJbXBsOworICAgIENDTGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKICAgICBD
Q1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBi
b29sIG1fdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCmluZGV4IDM5YTk1
OTUxZGRmM2JjOWY0NDk3NTQ0MjcyMjllNWM1OTNjMjg3YzcuLjlkOWE0ZGQxMDRlOTkyMzgwNDhj
YzNjNTZkYjExYzgzOGEwY2NkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaApA
QCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUGx1Z2luTGF5
ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDQ1BsdWdpbkxheWVySW1wbD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1BsdWdpbkxheWVySW1wbD4gY3JlYXRlKGludCBpZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ0NQbHVnaW5MYXllckltcGwoaWQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ1BsdWdpbkxheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFs
IH5DQ1BsdWdpbkxheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4
IDFiY2VjOTI2MGU2NDc2YjJjZjBmNjM5YTg3NGQ5MTVmMDY4YTcyMzEuLmU1ZTY4M2E1MjM2ZWFk
NTk1NWE4YjM3ZGYxODdkZTFlZWZmODY3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsg
cmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAKICAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkgeyBtX2xh
eWVyTGlzdC5jbGVhcigpOyB9Ci0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgbGF5
ZXJMaXN0KCkgeyByZXR1cm4gbV9sYXllckxpc3Q7IH0KKyAgICBWZWN0b3I8Q0NMYXllckltcGwq
PiYgbGF5ZXJMaXN0KCkgeyByZXR1cm4gbV9sYXllckxpc3Q7IH0KIAogICAgIHZvaWQgc2V0TWFz
a0xheWVyKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7
IH0KIApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CiAg
ICAgSW50UmVjdCBtX2NsaXBSZWN0OwotICAgIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4g
bV9sYXllckxpc3Q7CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbV9sYXllckxpc3Q7CiAKICAg
ICAvLyBUaGUgbmVhcmVzdCBhbmNlc3RvciB0YXJnZXQgc3VyZmFjZSB0aGF0IHdpbGwgY29udGFp
biB0aGUgY29udGVudHMgb2YgdGhpcyBzdXJmYWNlLCBhbmQgdGhhdCBpcyBnb2luZwogICAgIC8v
IHRvIG1vdmUgcGl4ZWxzIHdpdGhpbiB0aGUgc3VyZmFjZSAoc3VjaCBhcyB3aXRoIGEgYmx1ciku
IFRoaXMgY2FuIHBvaW50IHRvIGl0c2VsZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmgKaW5kZXggYzdlZGMxOGIyYzI4NGMyMjhhOTIxNTdhNmE5N2MxOTM0NWI4ZmI3Zi4u
MmU3NDQxNjY2Zjk5ZjM2OTgxOTI1NGEwYzQ1NzBjN2Q2NmQ2YmNjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOwogCiBjbGFzcyBDQ1NvbGlkQ29sb3JMYXllckltcGwgOiBwdWJsaWMg
Q0NMYXllckltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDU29saWRDb2xv
ckxheWVySW1wbD4gY3JlYXRlKGludCBpZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NvbGlk
Q29sb3JMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENDU29saWRDb2xvckxheWVySW1wbChpZCkpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDU29saWRDb2xvckxheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFs
IH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
CmluZGV4IDdhZDcxNTk5YjIxMzY1ODU4YTFjNWE1ZjdhOWNmNDI0MWVhMDY4YjAuLjdlNjM3Y2Zm
YjRjYzdiZjdiZGFhZjlkNjA5YmQyYTM1NjE0OWZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgRHJhd2FibGVUaWxlOwogCiBjbGFzcyBD
Q1RpbGVkTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENDVGlsZWRMYXllckltcGwoaWQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZp
cnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5o
CmluZGV4IGNhYTcyZGZiOTI3NGZiMDhiYjgzN2EyZWI4ZjkyOWIxNjU5NjhhMjcuLjRjNGUyMzEw
MmI4ODk0YTA2MjJlY2YwYTQ0NzQ4ZjcwYTVmYzZkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmgKQEAgLTQzLDkgKzQzLDkgQEAgdGVtcGxhdGU8Y2xhc3MgVmVydGV4U2hhZGVyLCBj
bGFzcyBGcmFnbWVudFNoYWRlcj4gY2xhc3MgUHJvZ3JhbUJpbmRpbmc7CiBjbGFzcyBDQ1ZpZGVv
TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICwg
cHVibGljIFZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ1ZpZGVvTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkLCBWaWRlb0ZyYW1lUHJv
dmlkZXIqIHByb3ZpZGVyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVmlkZW9MYXllckltcGw+
IGNyZWF0ZShpbnQgaWQsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENDVmlkZW9MYXllckltcGwoaWQsIHByb3ZpZGVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbChpZCwgcHJvdmlk
ZXIpKTsKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcApp
bmRleCBhOWY3YjFjMWExZTg5ZjFkYmNmOWY1MDMzNGMwNWYzYTEzM2UwMzhhLi43NGQ2MzViNDBk
NzE3NTMwZDc2YjljODI0NDRiYzZkYjJkNzM0MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKQEAgLTM5LDExICszOSwx
MSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIG5hbWVzcGFjZSB7CiAKLXZvaWQg
ZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCog
cm9vdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkKK3ZvaWQgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xh
eWVySW1wbCogcm9vdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpCiB7CiAgICAgQ0NMYXllclNvcnRlciBsYXllclNvcnRlcjsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+
IGR1bW15TGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0
OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCiAgICAgLy8gU2FuaXR5IGNo
ZWNrOiBUaGUgdGVzdCBpdHNlbGYgc2hvdWxkIGNyZWF0ZSB0aGUgcm9vdCBsYXllcidzIHJlbmRl
ciBzdXJmYWNlLCBzbwpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIGVtdWxhdGVEcmF3aW5nT25lRnJh
bWUoQ0NMYXllckltcGwqIHJvb3QpCiAgICAgLy8gICAyLiB1cGRhdGluZyBhbGwgZGFtYWdlIHRy
YWNrZXJzIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgICAgLy8gICAzLiByZXNldHRpbmcgYWxsIHVw
ZGF0ZVJlY3RzIGFuZCBwcm9wZXJ0eUNoYW5nZWQgZmxhZ3MgZm9yIGFsbCBsYXllcnMgYW5kIHN1
cmZhY2VzLgogCi0gICAgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAogICAgIC8vIEl0ZXJhdGUgYmFjay10by1mcm9u
dCwgc28gdGhhdCBkYW1hZ2UgY29ycmVjdGx5IHByb3BhZ2F0ZXMgZnJvbSBkZXNjZW5kYW50IHN1
cmZhY2VzIHRvIGFuY2VzdG9ycy4KQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIGVtdWxhdGVEcmF3
aW5nT25lRnJhbWUoQ0NMYXllckltcGwqIHJvb3QpCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VU
cmFja2luZ0ZvclN1YnRyZWUoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRl
VGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVU
ZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7CiAKICAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8o
KSk7CkBAIC05MiwyMiArOTIsMjIgQEAgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlVGVz
dFRyZWVXaXRoT25lU3VyZmFjZSgpCiAgICAgY2hpbGQtPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQ6Onplcm8oKSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDMwLCAzMCkpOwogICAg
IGNoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQp
OworICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gcm9v
dC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVl
V2l0aFR3b1N1cmZhY2VzKCkKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVl
V2l0aFR3b1N1cmZhY2VzKCkKIHsKICAgICAvLyBUaGlzIHRlc3QgdHJlZSBoYXMgdHdvIHJlbmRl
ciBzdXJmYWNlczogb25lIGZvciB0aGUgcm9vdCwgYW5kIG9uZSBmb3IKICAgICAvLyBjaGlsZDEu
IEFkZGl0aW9uYWxseSwgdGhlIHJvb3QgaGFzIGEgc2Vjb25kIGNoaWxkIGxheWVyLCBhbmQgY2hp
bGQxIGhhcyB0d28KICAgICAvLyBjaGlsZHJlbiBvZiBpdHMgb3duLgogCi0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNoaWxkMSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOwor
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsK
KyAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxID0gQ0NMYXllckltcGw6OmNyZWF0
ZSg0KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQyID0gQ0NMYXllckltcGw6
OmNyZWF0ZSg1KTsKIAogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7
CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKQEAgLTEzNywx
NyArMTM3LDE3IEBAIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aFR3
b1N1cmZhY2VzKCkKICAgICBncmFuZENoaWxkMi0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwog
ICAgIGdyYW5kQ2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKLSAgICBjaGlsZDEtPmFk
ZENoaWxkKGdyYW5kQ2hpbGQxKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQyKTsK
LSAgICByb290LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMik7
CisgICAgY2hpbGQxLT5hZGRDaGlsZChncmFuZENoaWxkMS5yZWxlYXNlKCkpOworICAgIGNoaWxk
MS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDIucmVsZWFzZSgpKTsKKyAgICByb290LT5hZGRDaGlsZChj
aGlsZDEucmVsZWFzZSgpKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZDIucmVsZWFzZSgpKTsK
IAogICAgIHJldHVybiByb290LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCkKK1Bhc3NPd25QdHI8Q0NM
YXllckltcGw+IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiB7Ci0gICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgp
OworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKTsKIAogICAgIC8vIFNldHVwIGluY2x1ZGVzIGdvaW5nIHBhc3QgdGhlIGZpcnN0IGZy
YW1lIHdoaWNoIGFsd2F5cyBkYW1hZ2VzIGV2ZXJ5dGhpbmcsIHNvCiAgICAgLy8gdGhhdCB3ZSBj
YW4gYWN0dWFsbHkgcGVyZm9ybSBzcGVjaWZpYyB0ZXN0cy4KQEAgLTE1Niw5ICsxNTYsOSBAQCBQ
YXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZh
Y2UoKQogICAgIHJldHVybiByb290LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVy
SW1wbD4gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCitQYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCkKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVUZXN0VHJlZVdpdGhUd29TdXJm
YWNlcygpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCk7CiAKICAgICAvLyBTZXR1cCBpbmNsdWRlcyBnb2luZyBwYXN0IHRoZSBm
aXJzdCBmcmFtZSB3aGljaCBhbHdheXMgZGFtYWdlcyBldmVyeXRoaW5nLCBzbwogICAgIC8vIHRo
YXQgd2UgY2FuIGFjdHVhbGx5IHBlcmZvcm0gc3BlY2lmaWMgdGVzdHMuCkBAIC0xNzgsNyArMTc4
LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHNhbml0eUNoZWNrVGVzdFRyZWVXaXRo
T25lU3VyZmFjZSkKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgc2ltcGxlIHRlc3QgdHJl
ZSB3aWxsIGFjdHVhbGx5IHByb2R1Y2UgdGhlIGV4cGVjdGVkIHJlbmRlcgogICAgIC8vIHN1cmZh
Y2VzIGFuZCBsYXllciBsaXN0cy4KIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNy
ZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwogCiAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMiksIHJvb3QtPnJlbmRlclN1cmZhY2Uo
KS0+bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMSwgcm9vdC0+cmVuZGVyU3Vy
ZmFjZSgpLT5sYXllckxpc3QoKVswXS0+aWQoKSk7CkBAIC0xOTMsMTAgKzE5MywxMCBAQCBURVNU
X0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgc2FuaXR5Q2hlY2tUZXN0VHJlZVdpdGhUd29TdXJmYWNl
cykKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgY29tcGxleCB0ZXN0IHRyZWUgd2lsbCBh
Y3R1YWxseSBwcm9kdWNlIHRoZSBleHBlY3RlZCByZW5kZXIKICAgICAvLyBzdXJmYWNlcyBhbmQg
bGF5ZXIgbGlzdHMuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRT
ZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwogCi0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXTsKKyAgICBDQ0xheWVy
SW1wbCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hp
bGREYW1hZ2VSZWN0ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+
Y3VycmVudERhbWFnZVJlY3QoKTsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3QgPSByb290
LT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsK
IApAQCAtMjEyLDggKzIxMiw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCBzYW5pdHlD
aGVja1Rlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlRm9yVXBkYXRlUmVjdHMpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7Ci0gICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNl
KCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsK
IAogICAgIC8vIENBU0UgMTogU2V0dGluZyB0aGUgdXBkYXRlIHJlY3Qgc2hvdWxkIGNhdXNlIHRo
ZSBjb3JyZXNwb25kaW5nIGRhbWFnZSB0byB0aGUgc3VyZmFjZS4KICAgICAvLwpAQCAtMjQzLDgg
KzI0Myw4IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JVcGRh
dGVSZWN0cykKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclBy
b3BlcnR5Q2hhbmdlcykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVB
bmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVy
SW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCiAgICAgLy8gQ0FTRSAx
OiBUaGUgbGF5ZXIncyBwcm9wZXJ0eSBjaGFuZ2VkIGZsYWcgdGFrZXMgcHJpb3JpdHkgb3ZlciB1
cGRhdGUgcmVjdC4KICAgICAvLwpAQCAtMjg0LDggKzI4NCw4IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JUcmFuc2Zvcm1lZExheWVyKQogICAgIC8vIElmIGEg
bGF5ZXIgaXMgdHJhbnNmb3JtZWQsIHRoZSBkYW1hZ2UgcmVjdCBzaG91bGQgc3RpbGwgZW5jbG9z
ZSB0aGUgZW50aXJlCiAgICAgLy8gdHJhbnNmb3JtZWQgbGF5ZXIuCiAKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBd
LmdldCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm90YXRpb247CiAgICAgcm90YXRp
b24ucm90YXRlKDQ1KTsKQEAgLTMxNywxOCArMzE3LDIwIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNr
ZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JUcmFuc2Zvcm1lZExheWVyKQogCiBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdMYXllcikKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aE9uZVN1cmZhY2UoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNo
aWxkcmVuKClbMF07Ci0KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMyk7Ci0gICAgY2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQwMCwg
MzgwKSk7Ci0gICAgY2hpbGQyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwot
ICAgIGNoaWxkMi0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwotICAgIGNoaWxkMi0+c2V0RHJh
d3NDb250ZW50KHRydWUpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEg
PSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOworCisgICAgeworICAgICAgICBPd25QdHI8Q0NM
YXllckltcGw+IGNoaWxkMiA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgICAgIGNoaWxk
Mi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0MDAsIDM4MCkpOworICAgICAgICBjaGlsZDItPnNl
dEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgICAgIGNoaWxkMi0+c2V0Qm91
bmRzKEludFNpemUoNiwgOCkpOworICAgICAgICBjaGlsZDItPnNldERyYXdzQ29udGVudCh0cnVl
KTsKKyAgICAgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQyLnJlbGVhc2UoKSk7CisgICAgfQogCiAg
ICAgLy8gQ0FTRSAxOiBBZGRpbmcgYSBuZXcgbGF5ZXIgc2hvdWxkIGNhdXNlIHRoZSBhcHByb3By
aWF0ZSBkYW1hZ2UuCiAgICAgLy8KLSAgICByb290LT5hZGRDaGlsZChjaGlsZDIpOwogICAgIGVt
dWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sg
LSBhbGwgMyBsYXllcnMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIHJlbmRlciBzdXJmYWNlOyByZW5k
ZXIgc3VyZmFjZXMgYXJlIHRlc3RlZCBlbHNld2hlcmUuCkBAIC0zNTMsMTUgKzM1NSwxOCBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3Zp
bmdMYXllcikKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck11
bHRpcGxlTGF5ZXJzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
Y2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKLQotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
Y2hpbGQyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKLSAgICBjaGlsZDItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoNDAwLCAzODApKTsKLSAgICBjaGlsZDItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQ6Onplcm8oKSk7Ci0gICAgY2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7Ci0g
ICAgY2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hp
bGQyKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RU
cmVlV2l0aE9uZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hp
bGRyZW4oKVswXS5nZXQoKTsKKworICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBj
aGlsZDIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgICAgICBjaGlsZDItPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQoNDAwLCAzODApKTsKKyAgICAgICAgY2hpbGQyLT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgICAgICBjaGlsZDItPnNldEJvdW5kcyhJbnRTaXpl
KDYsIDgpKTsKKyAgICAgICAgY2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgICAg
IHJvb3QtPmFkZENoaWxkKGNoaWxkMi5yZWxlYXNlKCkpOworICAgIH0KKyAgICBDQ0xheWVySW1w
bCogY2hpbGQyID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKIAogICAgIC8vIEluIHRoaXMg
dGVzdCB3ZSBkb24ndCB3YW50IHRoZSBhYm92ZSB0cmVlIG1hbmlwdWxhdGlvbiB0byBiZSBjb25z
aWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgZnJhbWUuCiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFt
ZShyb290LmdldCgpKTsKQEAgLTM3OCwxMCArMzgzLDEwIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNr
ZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNdWx0aXBsZUxheWVycykKIAogVEVTVF9GKENDRGFtYWdl
VHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvck5lc3RlZFN1cmZhY2VzKQogewotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFj
ZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClb
MF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDIgPSByb290LT5jaGlsZHJlbigpWzFd
OwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigp
WzBdLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0
ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hp
bGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQy
ID0gcm9vdC0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGls
ZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLmdldCgpOwogICAgIEZsb2F0
UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0OwogCkBA
IC00MTUsOSArNDIwLDkgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFn
ZUZvclN1cmZhY2VDaGFuZ2VGcm9tRGVzY2VuZGFudExheWVyKQogICAgIC8vIFRoaXMgaXMgYSB0
cmlja3kgY2FzZSwgc2luY2Ugb25seSB0aGUgZmlyc3QgZ3JhbmRDaGlsZCBjaGFuZ2VzLCBidXQg
dGhlIGVudGlyZQogICAgIC8vIHN1cmZhY2Ugc2hvdWxkIGJlIG1hcmtlZCBkaXJ0eS4KIAotICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdv
U3VyZmFjZXMoKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxk
cmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMSA9IHJvb3QtPmNo
aWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOworICAgIENDTGF5ZXJJ
bXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBs
KiBncmFuZENoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0uZ2V0KCk7
CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERhbWFn
ZVJlY3Q7CiAKQEAgLTQ0Nyw5ICs0NTIsOCBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwg
dmVyaWZ5RGFtYWdlRm9yU3VyZmFjZUNoYW5nZUZyb21BbmNlc3RvckxheWVyKQogICAgIC8vICAg
ICAgICBzaG91bGQgYmUgY29tcGxldGVseSB1bmNoYW5nZWQsIHNpbmNlIHdlIGFyZSBvbmx5IHRy
YW5zZm9ybWluZyBpdCwgd2hpbGUgdGhlCiAgICAgLy8gICAgICAgIHJvb3Qgc3VyZmFjZSB3b3Vs
ZCBiZSBkYW1hZ2VkIGFwcHJvcHJpYXRlbHkuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigp
WzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRy
ZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQxID0gcm9vdC0+Y2hp
bGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0OwogICAgIEZs
b2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNDY5LDggKzQ3Myw4IEBAIFRFU1RfRihDQ0Rh
bWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JTdXJmYWNlQ2hhbmdlRnJvbUFuY2VzdG9y
TGF5ZXIpCiAKIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JBZGRp
bmdBbmRSZW1vdmluZ1JlbmRlclN1cmZhY2VzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKLSAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF07CisgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNl
cygpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZDEgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgp
OwogICAgIEZsb2F0UmVjdCBjaGlsZERhbWFnZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1h
Z2VSZWN0OwogCkBAIC01MTAsOCArNTE0LDggQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvckFkZGluZ0FuZFJlbW92aW5nUmVuZGVyU3VyZmFjZXMpCiAKIFRFU1Rf
RihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZVdoZW5Ob3RoaW5nQ2hhbmdlZCkK
IHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVl
V2l0aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290
LT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZUFu
ZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQx
ID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VS
ZWN0OwogICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApAQCAtNTM0LDggKzUzOCw4IEBA
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlOb0RhbWFnZVdoZW5Ob3RoaW5nQ2hh
bmdlZCkKIAogVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeU5vRGFtYWdlRm9yVXBk
YXRlUmVjdFRoYXREb2VzTm90RHJhd0NvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZh
Y2VzKCk7CisgICAgQ0NMYXllckltcGwqIGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0
KCk7CiAgICAgRmxvYXRSZWN0IGNoaWxkRGFtYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qgcm9vdERh
bWFnZVJlY3Q7CiAKQEAgLTU1MSwxMCArNTU1LDEwIEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlOb0RhbWFnZUZvclVwZGF0ZVJlY3RUaGF0RG9lc05vdERyYXdDb250ZW50KQog
CiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0
aFR3b1N1cmZhY2VzKCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZDEgPSByb290LT5j
aGlsZHJlbigpWzBdOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDEgPSBjaGls
ZDEtPmNoaWxkcmVuKClbMF07Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMiA9
IGNoaWxkMS0+Y2hpbGRyZW4oKVsxXTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBj
cmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCk7CisgICAgQ0NMYXllckltcGwq
IGNoaWxkMSA9IHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CisgICAgQ0NMYXllckltcGwqIGdy
YW5kQ2hpbGQxID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdLmdldCgpOworICAgIENDTGF5ZXJJbXBs
KiBncmFuZENoaWxkMiA9IGNoaWxkMS0+Y2hpbGRyZW4oKVsxXS5nZXQoKTsKIAogICAgIC8vIERh
bWFnZSBvbiBhIHN1cmZhY2UgdGhhdCBoYXMgYSByZWZsZWN0aW9uIHNob3VsZCBjYXVzZSB0aGUg
dGFyZ2V0IHN1cmZhY2UgdG8KICAgICAvLyByZWNlaXZlIHRoZSBzdXJmYWNlJ3MgZGFtYWdlIGFu
ZCB0aGUgc3VyZmFjZSdzIHJlZmxlY3RlZCBkYW1hZ2UuCkBAIC01NjMsMjQgKzU2NywyOCBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKICAgICAv
LyBvZiBjaGlsZDEncyBzdXJmYWNlLiBUaGlzIHdheSwgd2UgY2FuIHRlc3QgcmVmbGVjdGlvbiBj
aGFuZ2VzIHdpdGhvdXQgY2hhbmdpbmcKICAgICAvLyBjb250ZW50Qm91bmRzIG9mIHRoZSBzdXJm
YWNlLgogICAgIGdyYW5kQ2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDE4MCwgMTgwKSk7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkMyA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoNik7Ci0gICAgZ3JhbmRDaGlsZDMtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMjQwLCAyNDAp
KTsKLSAgICBncmFuZENoaWxkMy0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsK
LSAgICBncmFuZENoaWxkMy0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7Ci0gICAgZ3JhbmRD
aGlsZDMtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICB7CisgICAgICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZDMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDYpOworICAgICAgICBn
cmFuZENoaWxkMy0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyNDAsIDI0MCkpOworICAgICAgICBn
cmFuZENoaWxkMy0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKKyAgICAgICAg
Z3JhbmRDaGlsZDMtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBncmFuZENo
aWxkMy0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAgICBjaGlsZDEtPmFkZENoaWxkKGdy
YW5kQ2hpbGQzLnJlbGVhc2UoKSk7CisgICAgfQogICAgIGNoaWxkMS0+c2V0T3BhY2l0eSgwLjUp
OwotICAgIGNoaWxkMS0+YWRkQ2hpbGQoZ3JhbmRDaGlsZDMpOwogICAgIGVtdWxhdGVEcmF3aW5n
T25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICAvLyBDQVNFIDE6IGFkZGluZyBhIHJlZmxlY3Rp
b24gYWJvdXQgdGhlIGxlZnQgZWRnZSBvZiBncmFuZENoaWxkMS4KICAgICAvLwotICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3
KTsKLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8o
KSk7Ci0gICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6
ZXJvKCkpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247Ci0gICAgcmVmbGVj
dGlvbi5zY2FsZTNkKC0xLjAsIDEuMCwgMS4wKTsKLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNl
dFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKLSAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVy
KGdyYW5kQ2hpbGQxUmVwbGljYSk7CisgICAgeworICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+
IGdyYW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNyk7CisgICAgICAgIGdy
YW5kQ2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKKyAgICAg
ICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkp
OworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOworICAgICAgICByZWZs
ZWN0aW9uLnNjYWxlM2QoLTEuMCwgMS4wLCAxLjApOworICAgICAgICBncmFuZENoaWxkMVJlcGxp
Y2EtPnNldFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKKyAgICAgICAgZ3JhbmRDaGlsZDEtPnNldFJl
cGxpY2FMYXllcihncmFuZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKKyAgICB9CiAgICAgZW11
bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIEZsb2F0UmVjdCBncmFuZENo
aWxkRGFtYWdlUmVjdCA9IGdyYW5kQ2hpbGQxLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNr
ZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKQEAgLTYxNCw3ICs2MjIsNyBAQCBURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYSkKIAogICAgIC8vIENBU0Ug
MzogcmVtb3ZpbmcgdGhlIHJlZmxlY3Rpb24gc2hvdWxkIGNhdXNlIHRoZSBlbnRpcmUgcmVnaW9u
IGluY2x1ZGluZyByZWZsZWN0aW9uCiAgICAgLy8gICAgICAgICB0byBkYW1hZ2UgdGhlIHRhcmdl
dCBzdXJmYWNlLgotICAgIGdyYW5kQ2hpbGQxLT5zZXRSZXBsaWNhTGF5ZXIoMCk7CisgICAgZ3Jh
bmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihudWxscHRyKTsKICAgICBlbXVsYXRlRHJhd2luZ09u
ZUZyYW1lKHJvb3QuZ2V0KCkpOwogICAgIEFTU0VSVF9FUShvbGRDb250ZW50UmVjdC53aWR0aCgp
LCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKS53aWR0aCgpKTsKICAgICBB
U1NFUlRfRVEob2xkQ29udGVudFJlY3QuaGVpZ2h0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgp
LT5jb250ZW50UmVjdCgpLmhlaWdodCgpKTsKQEAgLTYyOSwyNyArNjM3LDMyIEBAIFRFU1RfRihD
Q0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogCiBURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTWFzaykKIHsKLSAgICBSZWZQdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9u
ZVN1cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBd
LmdldCgpOwogCiAgICAgLy8gSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRh
bWFnZSB0cmFja2VyLCBjaGFuZ2VzIHRvIG1hc2sgbGF5ZXJzIHNob3VsZAogICAgIC8vIGRhbWFn
ZSB0aGUgZW50aXJlIGNvcnJlc3BvbmRpbmcgc3VyZmFjZS4KIAogICAgIC8vIFNldCB1cCB0aGUg
bWFzayBsYXllci4KLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllciA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMyk7Ci0gICAgbWFza0xheWVyLT5zZXRQb3NpdGlvbihjaGlsZC0+cG9zaXRp
b24oKSk7Ci0gICAgbWFza0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkp
OwotICAgIG1hc2tMYXllci0+c2V0Qm91bmRzKGNoaWxkLT5ib3VuZHMoKSk7Ci0gICAgY2hpbGQt
PnNldE1hc2tMYXllcihtYXNrTGF5ZXIpOworICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBtYXNrTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgICAgICBtYXNrTGF5
ZXItPnNldFBvc2l0aW9uKGNoaWxkLT5wb3NpdGlvbigpKTsKKyAgICAgICAgbWFza0xheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgICAgICBtYXNrTGF5ZXItPnNl
dEJvdW5kcyhjaGlsZC0+Ym91bmRzKCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza0xheWVyKG1h
c2tMYXllci5yZWxlYXNlKCkpOworICAgIH0KKyAgICBDQ0xheWVySW1wbCogbWFza0xheWVyID0g
Y2hpbGQtPm1hc2tMYXllcigpOwogCiAgICAgLy8gQWRkIG9wYWNpdHkgYW5kIGEgZ3JhbmRDaGls
ZCBzbyB0aGF0IHRoZSByZW5kZXIgc3VyZmFjZSBwZXJzaXN0cyBldmVuIGFmdGVyIHdlIHJlbW92
ZSB0aGUgbWFzay4KICAgICBjaGlsZC0+c2V0T3BhY2l0eSgwLjUpOwotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7Ci0gICAgZ3JhbmRD
aGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLjAsIDIuMCkpOwotICAgIGdyYW5kQ2hpbGQt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgZ3JhbmRDaGlsZC0+c2V0
Qm91bmRzKEludFNpemUoMiwgMikpOwotICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0
cnVlKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CisgICAgeworICAgICAgICBP
d25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwor
ICAgICAgICBncmFuZENoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDIuMCwgMi4wKSk7Cisg
ICAgICAgIGdyYW5kQ2hpbGQtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7Cisg
ICAgICAgIGdyYW5kQ2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDIsIDIpKTsKKyAgICAgICAgZ3Jh
bmRDaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAgICBjaGlsZC0+YWRkQ2hpbGQo
Z3JhbmRDaGlsZC5yZWxlYXNlKCkpOworICAgIH0KICAgICBlbXVsYXRlRHJhd2luZ09uZUZyYW1l
KHJvb3QuZ2V0KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgYSBuZXcgc3VyZmFjZSB3
YXMgY3JlYXRlZCBmb3IgdGhlIGNoaWxkLgpAQCAtNjg1LDcgKzY5OCw3IEBAIFRFU1RfRihDQ0Rh
bWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogICAgIEVYUEVDVF9UUlVFKGNo
aWxkRGFtYWdlUmVjdC5pc0VtcHR5KCkpOwogCiAgICAgLy8gVGhlbiB0ZXN0IG1hc2sgcmVtb3Zh
bC4KLSAgICBjaGlsZC0+c2V0TWFza0xheWVyKDApOworICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIo
bnVsbHB0cik7CiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkp
OwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKQEAgLTY5OCwyOCAr
NzExLDM0IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNr
KQogCiBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1h
c2spCiB7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0
VHJlZVdpdGhUd29TdXJmYWNlcygpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQxID0g
cm9vdC0+Y2hpbGRyZW4oKVswXTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQx
ID0gY2hpbGQxLT5jaGlsZHJlbigpWzBdOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IGNyZWF0ZUFuZFNldFVwVGVzdFRyZWVXaXRoVHdvU3VyZmFjZXMoKTsKKyAgICBDQ0xheWVySW1w
bCogY2hpbGQxID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBDQ0xheWVySW1wbCog
Z3JhbmRDaGlsZDEgPSBjaGlsZDEtPmNoaWxkcmVuKClbMF0uZ2V0KCk7CiAKICAgICAvLyBDaGFu
Z2VzIHRvIGEgcmVwbGljYSdzIG1hc2sgc2hvdWxkIG5vdCBkYW1hZ2UgdGhlIG9yaWdpbmFsIHN1
cmZhY2UsIGJlY2F1c2UgaXQgaXMKICAgICAvLyBub3QgbWFza2VkLiBCdXQgaXQgZG9lcyBkYW1h
Z2UgdGhlIGFuY2VzdG9yIHRhcmdldCBzdXJmYWNlLgogCiAgICAgLy8gQ3JlYXRlIGEgcmVmbGVj
dGlvbiBhYm91dCB0aGUgbGVmdCBlZGdlIG9mIGdyYW5kQ2hpbGQxLgotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2KTsKLSAg
ICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0g
ICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkp
OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247Ci0gICAgcmVmbGVjdGlvbi5z
Y2FsZTNkKC0xLjAsIDEuMCwgMS4wKTsKLSAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRyYW5z
Zm9ybShyZWZsZWN0aW9uKTsKLSAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKGdyYW5k
Q2hpbGQxUmVwbGljYSk7CisgICAgeworICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5k
Q2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNik7CisgICAgICAgIGdyYW5kQ2hp
bGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKKyAgICAgICAgZ3Jh
bmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOworICAgICAgICByZWZsZWN0aW9u
LnNjYWxlM2QoLTEuMCwgMS4wLCAxLjApOworICAgICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNl
dFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKKyAgICAgICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FM
YXllcihncmFuZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKKyAgICB9CisgICAgQ0NMYXllcklt
cGwqIGdyYW5kQ2hpbGQxUmVwbGljYSA9IGdyYW5kQ2hpbGQxLT5yZXBsaWNhTGF5ZXIoKTsKIAog
ICAgIC8vIFNldCB1cCB0aGUgbWFzayBsYXllciBvbiB0aGUgcmVwbGljYSBsYXllcgotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYU1hc2tMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
Nyk7Ci0gICAgcmVwbGljYU1hc2tMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygp
KTsKLSAgICByZXBsaWNhTWFza0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJv
KCkpOwotICAgIHJlcGxpY2FNYXNrTGF5ZXItPnNldEJvdW5kcyhncmFuZENoaWxkMS0+Ym91bmRz
KCkpOwotICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0TWFza0xheWVyKHJlcGxpY2FNYXNrTGF5
ZXIpOworICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTWFza0xheWVy
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSg3KTsKKyAgICAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKKyAgICAgICAgcmVwbGljYU1hc2tMYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKKyAgICAgICAgcmVwbGljYU1hc2tM
YXllci0+c2V0Qm91bmRzKGdyYW5kQ2hpbGQxLT5ib3VuZHMoKSk7CisgICAgICAgIGdyYW5kQ2hp
bGQxUmVwbGljYS0+c2V0TWFza0xheWVyKHJlcGxpY2FNYXNrTGF5ZXIucmVsZWFzZSgpKTsKKyAg
ICB9CisgICAgQ0NMYXllckltcGwqIHJlcGxpY2FNYXNrTGF5ZXIgPSBncmFuZENoaWxkMVJlcGxp
Y2EtPm1hc2tMYXllcigpOwogCiAgICAgZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgp
KTsKIApAQCAtNzM4LDcgKzc1Nyw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJp
ZnlEYW1hZ2VGb3JSZXBsaWNhTWFzaykKIAogICAgIC8vIENBU0UgMjogcmVtb3ZpbmcgdGhlIHJl
cGxpY2EgbWFzayBkYW1hZ2VzIG9ubHkgdGhlIHJlZmxlY3RlZCByZWdpb24gb24gdGhlIHRhcmdl
dCBzdXJmYWNlLgogICAgIC8vCi0gICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIo
MCk7CisgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRNYXNrTGF5ZXIobnVsbHB0cik7CiAgICAg
ZW11bGF0ZURyYXdpbmdPbmVGcmFtZShyb290LmdldCgpKTsKIAogICAgIGdyYW5kQ2hpbGREYW1h
Z2VSZWN0ID0gZ3JhbmRDaGlsZDEtPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5j
dXJyZW50RGFtYWdlUmVjdCgpOwpAQCAtNzUwLDggKzc2OSw4IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFzaykKIAogVEVTVF9GKENDRGFtYWdl
VHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZVdoZW5SZXNldCkKIHsKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKLSAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXTsKKyAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1
cmZhY2UoKTsKKyAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdl
dCgpOwogCiAgICAgLy8gQ2FzZSAxOiBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHdoZW4gdGhlIHRy
YWNrZXIgaXMgZm9yY2VkIHRvIGhhdmUgZnVsbCBkYW1hZ2UsIHRoYXQKICAgICAvLyAgICAgICAg
IGl0IHRha2VzIHByaW9yaXR5IG92ZXIgYW55IG90aGVyIHBhcnRpYWwgZGFtYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCmluZGV4IDE2
YTI1ZTEyZTk3OWRkNjAxMmM1NjgxYTlkZTRhNGQ4NmQxNjQzZGIuLjhhOWYzNWRjOGE3Yjg5YzBj
OTRiZDc1MzdjNjg0NjRmYTc4YTZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTY1LDE0ICs2NSwxMSBAQCBURVNUKENDTGF5
ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzZXRJbXBsVGhyZWFkOwogCiAgICAgLy8gQ3JlYXRlIGEg
c2ltcGxlIENDTGF5ZXJJbXBsIHRyZWU6Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0g
Q0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0g
Q0NMYXllckltcGw6OmNyZWF0ZSgyKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hp
bGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkKTsK
LSAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7Ci0KLSAgICBSZWZQdHI8Q0NMYXllcklt
cGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7Ci0gICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBkdW1teVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOworICAgIE93blB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgcm9vdC0+
YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSgyKSk7CisgICAgQ0NMYXllckltcGwqIGNoaWxk
ID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKKyAgICBjaGlsZC0+YWRkQ2hpbGQoQ0NMYXll
ckltcGw6OmNyZWF0ZSgzKSk7CisgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQgPSBjaGlsZC0+
Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAogICAgIC8vIEFkZGluZyBjaGlsZHJlbiBpcyBhbiBpbnRl
cm5hbCBvcGVyYXRpb24gYW5kIHNob3VsZCBub3QgbWFyayBsYXllcnMgYXMgY2hhbmdlZC4KICAg
ICBFWFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CkBAIC05NSwxMSAr
OTIsMTEgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNr
ZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3Qt
PnNldEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1i
ZXIpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEZp
bHRlcnMoYXJiaXRyYXJ5RmlsdGVycykpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOworICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza0xheWVyKENDTGF5ZXJJbXBsOjpj
cmVhdGUoNCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3Qt
PnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0T3BhcXVlKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE9wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRSZXBsaWNhTGF5ZXIo
ZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChy
b290LT5zZXRSZXBsaWNhTGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSg1KSkpOwogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5
RmxvYXRQb2ludCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0UHJlc2VydmVzM0QodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwpAQCAtMTM0
LDkgKzEzMSw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVU
cmFja2VkUHJvcGVybHkpCiAgICAgLy8gbm90IGNhdXNlIGFueSBjaGFuZ2UuCiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9pbnQo
YXJiaXRyYXJ5RmxvYXRQb2ludCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKLSAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNr
TGF5ZXIoZHVtbXlNYXNrKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05P
VF9DSEFOR0Uocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7Ci0gICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UmVwbGljYUxheWVyKGR1bW15
UmVwbGljYSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldFBvc2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVl
KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+
c2V0VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKaW5kZXggYmZmN2UxYmE5
NzExNDU2OGNhYmUzOTZjZmFlNzc0NmYwNzM0MDk4ZS4uMmY1YTdhMjVkOWVkMTZmMmNjNDE5ODFj
YmM0YTJlNjU2NTI4NzEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJJdGVyYXRvclRlc3QuY3BwCkBAIC02Nyw4ICs2Nyw4IEBAIHByaXZhdGU6CiAg
ICAgRVhQRUNUX0VRKGNvbnRyaWIsIGxheWVyLT5tX2NvdW50UmVwcmVzZW50aW5nQ29udHJpYnV0
aW5nU3VyZmFjZSk7ICAgXAogICAgIEVYUEVDVF9FUShpdHNlbGYsIGxheWVyLT5tX2NvdW50UmVw
cmVzZW50aW5nSXRzZWxmKTsKIAotdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRv
QmFjaz4gRnJvbnRUb0JhY2s7Ci10eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zy
b250PiBCYWNrVG9Gcm9udDsKK3R5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0s
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gRnJvbnRUb0JhY2s7Cit0eXBlZGVm
IENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFj
a1RvRnJvbnQ+IEJhY2tUb0Zyb250OwogCiB2b2lkIHJlc2V0Q291bnRzKFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBURVNUKENDTGF5ZXJJdGVyYXRvclRlc3QsIHNpbXBsZVRyZWUpCiAKICAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocm9vdExheWVyLmdldCgpKTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIuZ2V0KCksIHJvb3RM
YXllci5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGxheWVyTGlzdCwKQEAg
LTE4NCw3ICsxODQsNyBAQCBURVNUKENDTGF5ZXJJdGVyYXRvclRlc3QsIGNvbXBsZXhUcmVlKQog
CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKLSAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllci5nZXQoKSk7CiAgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLmdl
dCgpLCByb290TGF5ZXIuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXll
ckxpc3QsCkBAIC0yNDMsNyArMjQzLDcgQEAgVEVTVChDQ0xheWVySXRlcmF0b3JUZXN0LCBjb21w
bGV4VHJlZU11bHRpU3VyZmFjZSkKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBsYXllckxpc3Q7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExh
eWVyKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkp
OwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcAppbmRleCA2OTM0MmNkYTdjNjNiNjE1NDUw
NzQ1ZWFiZDhiMWQxY2RiZWZjZTVlLi5hNTMzYzkzNzM4OGVlYTU2YjdhNGExYmM2MWMxZjI4MjFh
YmZlY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJT
b3J0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJT
b3J0ZXJUZXN0LmNwcApAQCAtMTc0LDExICsxNzQsMTEgQEAgVEVTVChDQ0xheWVyU29ydGVyVGVz
dCwgdmVyaWZ5RXhpc3RpbmdPcmRlcmluZ1ByZXNlcnZlZFdoZW5Ob1pEaWZmKQogICAgIC8vICAg
IC0gMyBhbmQgNCBkbyBub3QgaGF2ZSBhIDNkIHogZGlmZmVyZW5jZSwgYW5kIHRoZXJlZm9yZSB0
aGVpciByZWxhdGl2ZSBvcmRlcmluZyBzaG91bGQgYmUgcmV0YWluZWQuCiAgICAgLy8gICAgLSAz
IGFuZCA0IHNob3VsZCBiZSByZS1zb3J0ZWQgc28gdGhleSBhcmUgaW4gZnJvbnQgb2YgMSwgMiwg
YW5kIDUuCiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyMSA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMSk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcjIgPSBDQ0xheWVySW1wbDo6
Y3JlYXRlKDIpOwotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXIzID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgzKTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVyNCA9IENDTGF5ZXJJbXBs
OjpjcmVhdGUoNCk7Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllcjUgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDUpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXIxID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyMiA9IENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMik7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjMgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDMpOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXI0ID0gQ0NMYXll
ckltcGw6OmNyZWF0ZSg0KTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyNSA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoNSk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBCZWhpbmRNYXRy
aXg7CiAgICAgQmVoaW5kTWF0cml4LnRyYW5zbGF0ZTNkKDAsIDAsIDIpOwpAQCAtMjA1LDEyICsy
MDUsMTIgQEAgVEVTVChDQ0xheWVyU29ydGVyVGVzdCwgdmVyaWZ5RXhpc3RpbmdPcmRlcmluZ1By
ZXNlcnZlZFdoZW5Ob1pEaWZmKQogICAgIGxheWVyNS0+c2V0RHJhd1RyYW5zZm9ybShCZWhpbmRN
YXRyaXgpOwogICAgIGxheWVyNS0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxDQ0xheWVySW1wbD4gPiBsYXllckxpc3Q7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChs
YXllcjEpOwotICAgIGxheWVyTGlzdC5hcHBlbmQobGF5ZXIyKTsKLSAgICBsYXllckxpc3QuYXBw
ZW5kKGxheWVyMyk7Ci0gICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjQpOwotICAgIGxheWVyTGlz
dC5hcHBlbmQobGF5ZXI1KTsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBsYXllckxpc3Q7Cisg
ICAgbGF5ZXJMaXN0LmFwcGVuZChsYXllcjEuZ2V0KCkpOworICAgIGxheWVyTGlzdC5hcHBlbmQo
bGF5ZXIyLmdldCgpKTsKKyAgICBsYXllckxpc3QuYXBwZW5kKGxheWVyMy5nZXQoKSk7CisgICAg
bGF5ZXJMaXN0LmFwcGVuZChsYXllcjQuZ2V0KCkpOworICAgIGxheWVyTGlzdC5hcHBlbmQobGF5
ZXI1LmdldCgpKTsKIAogICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDUpLCBsYXll
ckxpc3Quc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXJMaXN0WzBdLT5pZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QuY3BwCmluZGV4IGQyZTFjZmVmOTNlMjgyMTY2ZGE4NTEyNTZjOTVjMGU2NTEy
YzY5YmEuLmU2MjA2Y2M1OGY5MDMzYjVmZmNhYTY5ZWViNGQyOTBmMzUxZWQzZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcApAQCAtNTczLDcgKzU3Myw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgdmVyaWZ5Q2xpcFJlY3RDdWxsc1JlbmRlclN1cmZhY2VzKQogCiAgICAgLy8gRklY
TUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBiZWhhdmlvciBp
biBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwgdG9vLgogICAg
IHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJv
dW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQuZ2V0KCkpOwogCiAgICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDVlODJiZmI0MmY5MjMwYTg4M2M4YWYyNDdl
YzNhY2Q2N2Y0MzgxMTYuLjI2MzBiOGM4MmM3ODVkZGYwYWUzNTE2MGRlNTIwZWU0YmM3YjI0OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXpl
KQogICAgIHsKLSAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgwKTsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgwKTsKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICAg
ICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgICAgICByb290
LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihjb250ZW50U2l6ZSk7Ci0gICAgICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gY29udGVudHMgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgICAgICBPd25Q
dHI8Q0NMYXllckltcGw+IGNvbnRlbnRzID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKICAgICAg
ICAgY29udGVudHMtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAgY29udGVudHMtPnNl
dEJvdW5kcyhjb250ZW50U2l6ZSk7CiAgICAgICAgIGNvbnRlbnRzLT5zZXRDb250ZW50Qm91bmRz
KGNvbnRlbnRTaXplKTsKLSAgICAgICAgcm9vdC0+YWRkQ2hpbGQoY29udGVudHMpOwotICAgICAg
ICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgICAgIHJvb3QtPmFkZENoaWxk
KGNvbnRlbnRzLnJlbGVhc2UoKSk7CisgICAgICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihy
b290LnJlbGVhc2UoKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC0xMTIsMzcgKzExMiw0MyBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhTm9MYXllcnMpCiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFUcmVlQnV0Tm9DaGFu
Z2VzKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMCk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSk7Ci0gICAg
cm9vdC0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSgyKSk7Ci0gICAgcm9vdC0+Y2hpbGRy
ZW4oKVsxXS0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSgzKSk7Ci0gICAgcm9vdC0+Y2hp
bGRyZW4oKVsxXS0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSg0KSk7Ci0gICAgcm9vdC0+
Y2hpbGRyZW4oKVsxXS0+Y2hpbGRyZW4oKVswXS0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0
ZSg1KSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIHsKKyAgICAg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAg
ICAgICAgcm9vdC0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSk7CisgICAgICAgIHJv
b3QtPmFkZENoaWxkKENDTGF5ZXJJbXBsOjpjcmVhdGUoMikpOworICAgICAgICByb290LT5jaGls
ZHJlbigpWzFdLT5hZGRDaGlsZChDQ0xheWVySW1wbDo6Y3JlYXRlKDMpKTsKKyAgICAgICAgcm9v
dC0+Y2hpbGRyZW4oKVsxXS0+YWRkQ2hpbGQoQ0NMYXllckltcGw6OmNyZWF0ZSg0KSk7CisgICAg
ICAgIHJvb3QtPmNoaWxkcmVuKClbMV0tPmNoaWxkcmVuKClbMF0tPmFkZENoaWxkKENDTGF5ZXJJ
bXBsOjpjcmVhdGUoNSkpOworICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5y
ZWxlYXNlKCkpOworICAgIH0KKyAgICBDQ0xheWVySW1wbCogcm9vdCA9IG1faG9zdEltcGwtPnJv
b3RMYXllcigpOwogCi0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290
LmdldCgpKTsKKyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwog
CiAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CiAKICAgICBzY3Jv
bGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9F
UShzY3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwgMHUpOwotICAgIGV4cGVjdENsZWFyZWRTY3Jv
bGxEZWx0YXNSZWN1cnNpdmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERl
bHRhc1JlY3Vyc2l2ZShyb290KTsKIAogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9j
ZXNzU2Nyb2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6
ZSgpLCAwdSk7Ci0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290Lmdl
dCgpKTsKKyAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QpOwogfQog
CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3Jv
bGxzKQogewogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKDIwLCAzMCk7CiAgICAgSW50U2l6
ZSBzY3JvbGxEZWx0YSgxMSwgLTE1KTsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDEwKTsKLSAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihzY3Jv
bGxQb3NpdGlvbik7Ci0gICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKLSAgICByb290LT5z
ZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgcm9vdC0+c2Nyb2xs
Qnkoc2Nyb2xsRGVsdGEpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAg
ICB7CisgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVh
dGUoMTApOworICAgICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7
CisgICAgICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgICAgIHJvb3QtPnNldE1h
eFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgcm9vdC0+c2Nyb2xs
Qnkoc2Nyb2xsRGVsdGEpOworICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5y
ZWxlYXNlKCkpOworICAgIH0KKyAgICBDQ0xheWVySW1wbCogcm9vdCA9IG1faG9zdEltcGwtPnJv
b3RMYXllcigpOwogCiAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87
CiAKQEAgLTE2NSwxMSArMTcxLDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
c2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgc2Nyb2xsUm9vdENhbGxzQ29tbWl0QW5kUmVkcmF3KQogewotICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Ci0gICAgcm9vdC0+c2V0U2Ny
b2xsYWJsZSh0cnVlKTsKLSAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAw
KSk7Ci0gICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwot
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICB7CisgICAgICAgIE93blB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgICAgIHJv
b3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KDAsIDApKTsKKyAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50
U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5y
ZWxlYXNlKCkpOworICAgIH0KKwogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdp
bihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwogICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KElu
dFNpemUoMCwgMTApKTsKICAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKQEAgLTE3OSwxMSAr
MTg4LDE1IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdENhbGxz
Q29tbWl0QW5kUmVkcmF3KQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHdoZWVs
RXZlbnRIYW5kbGVycykKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7Ci0gICAgcm9v
dC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwotICAgIHJvb3QtPnNldE1heFNj
cm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290
TGF5ZXIocm9vdCk7CisgICAgeworICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUp
OworICAgICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CisgICAg
ICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKKyAgICAg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKyAgICB9CisgICAg
Q0NMYXllckltcGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsKKwogICAgIHJvb3Qt
PnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnModHJ1ZSk7CiAgICAgLy8gV2l0aCByZWdpc3RlcmVk
IGV2ZW50IGhhbmRsZXJzLCB3aGVlbCBzY3JvbGxzIGhhdmUgdG8gZ28gdG8gdGhlIG1haW4gdGhy
ZWFkLgogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAw
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbEZhaWxlZCk7CkBAIC0zMjEsNyArMzM0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAKIGNsYXNzIERpZERyYXdDaGVja0xheWVyIDog
cHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaWRE
cmF3Q2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERpZERy
YXdDaGVja0xheWVyKGlkKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxEaWREcmF3Q2hlY2tM
YXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERpZERyYXdDaGVja0xh
eWVyKGlkKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkKICAgICB7CkBAIC0zNTks
OCArMzcyLDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2Fs
bGVkT25IaWRkZW5MYXllcikKICAgICAvLyBFbnN1cmUgdmlzaWJsZUxheWVyUmVjdCBmb3Igcm9v
dCBsYXllciBpcyBlbXB0eQogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDAsIDApKTsKIAotICAgIFJlZlB0cjxEaWREcmF3Q2hlY2tMYXllcj4gcm9vdCA9IERpZERyYXdD
aGVja0xheWVyOjpjcmVhdGUoMCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3Qp
OworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRl
KDApKTsKKyAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdD
aGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogCiAgICAgRVhQRUNUX0ZBTFNF
KHJvb3QtPndpbGxEcmF3Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWREcmF3
Q2FsbGVkKCkpOwpAQCAtMzkyLDE0ICs0MDUsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CiAKLSAgICBSZWZQdHI8RGlkRHJhd0NoZWNrTGF5ZXI+IHJv
b3QgPSBEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApOwotICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihyb290KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNf
Y2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKIAotICAg
IFJlZlB0cjxEaWREcmF3Q2hlY2tMYXllcj4gbGF5ZXIxID0gRGlkRHJhd0NoZWNrTGF5ZXI6OmNy
ZWF0ZSgxKTsKLSAgICByb290LT5hZGRDaGlsZChsYXllcjEpOworICAgIHJvb3QtPmFkZENoaWxk
KERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMSkpOworICAgIERpZERyYXdDaGVja0xheWVyKiBs
YXllcjEgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KHJvb3QtPmNoaWxkcmVuKClb
MF0uZ2V0KCkpOwogCi0gICAgUmVmUHRyPERpZERyYXdDaGVja0xheWVyPiBsYXllcjIgPSBEaWRE
cmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDIpOwotICAgIGxheWVyMS0+YWRkQ2hpbGQobGF5ZXIyKTsK
KyAgICBsYXllcjEtPmFkZENoaWxkKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMikpOworICAg
IERpZERyYXdDaGVja0xheWVyKiBsYXllcjIgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXll
cio+KGxheWVyMS0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CiAKICAgICBsYXllcjEtPnNldE9wYWNp
dHkoMC4zKTsKICAgICBsYXllcjEtPnNldFByZXNlcnZlczNEKGZhbHNlKTsKQEAgLTQ0Miw3ICs0
NTUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tMYXllciA6IHB1YmxpYyBD
Q0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmxlbmRTdGF0ZUNo
ZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbGVuZFN0YXRl
Q2hlY2tMYXllcihpZCkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNr
TGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbGVuZFN0YXRlQ2hl
Y2tMYXllcihpZCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiAg
ICAgewpAQCAtNDkxLDE0ICs1MDQsMTcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50KDAsIDApKTsKLSAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKLSAg
ICByb290LT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihyb290KTsKKyAgICB7CisgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQoMCwgMCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsK
KyAgICAgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICAgICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKKyAgICB9CisgICAgQ0NMYXllckltcGwq
IHJvb3QgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsKIAotICAgIFJlZlB0cjxCbGVuZFN0YXRl
Q2hlY2tMYXllcj4gbGF5ZXIxID0gQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKTsKLSAg
ICByb290LT5hZGRDaGlsZChsYXllcjEpOworICAgIHJvb3QtPmFkZENoaWxkKEJsZW5kU3RhdGVD
aGVja0xheWVyOjpjcmVhdGUoMSkpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjEg
PSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCkpOwogCiAgICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgog
ICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtNTM3LDggKzU1Myw4IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVy
cykKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBs
YXllcjIgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpOwotICAgIGxheWVyMS0+YWRk
Q2hpbGQobGF5ZXIyKTsKKyAgICBsYXllcjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVy
OjpjcmVhdGUoMikpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjIgPSBzdGF0aWNf
Y2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KGxheWVyMS0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7
CiAKICAgICAvLyAyIG9wYXF1ZSBsYXllcnMsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAg
bGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CkBAIC02NTYsMTEgKzY3MiwxMSBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwor
ICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwog
ICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNl
dEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVl
KTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisgICAgbV9ob3N0SW1wbC0+
c2V0Um9vdExheWVyKGFkb3B0UHRyKHJvb3QpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzaGFwZVRy
YWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiAKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CkBAIC03MDMsOCArNzE5LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0
aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwotICAgIFJl
ZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXll
ckltcGwoMikpOworICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5
ZXJJbXBsKDEpOworICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xh
eWVySW1wbCgyKTsKICAgICBjaGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxMiwgMTMpKTsK
ICAgICBjaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgY2hpbGQt
PnNldEJvdW5kcyhJbnRTaXplKDE0LCAxNSkpOwpAQCAtNzEyLDggKzcyOCw4IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAg
ICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0
Qm91bmRzKEludFNpemUoNTAwLCA1MDApKTsKICAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1
ZSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5z
ZXRSb290TGF5ZXIocm9vdCk7CisgICAgcm9vdC0+YWRkQ2hpbGQoYWRvcHRQdHIoY2hpbGQpKTsK
KyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKGFkb3B0UHRyKHJvb3QpKTsKIAog
ICAgIC8vIEZpcnN0IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBzaG91bGQgZ2V0IHN3YXBwZWQu
CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGMzYjM2
NmRkYTMyMzc0Njg2ODZmYmY4M2VkNGZlMzM5MGY4MmYzMzQuLjEyMDE1ODdjNzhkZjdiNTg0MDI3
NzRkZjBjNjkzZjRlZWRkZGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBURVNUKEND
UmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5
KQogICAgIC8vIFRoaXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0IHRocmVh
ZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0
SW1wbFRocmVhZDsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gb3duaW5nTGF5ZXIg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIG93bmluZ0xheWVyLT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7CiAgICAgQVNTRVJUX1RSVUUob3duaW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gb3duaW5nTGF5ZXItPnJlbmRl
clN1cmZhY2UoKTsKQEAgLTc0LDcgKzc0LDcgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2
ZXJpZnlTdXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5zZXRDbGlwUmVjdCh0
ZXN0UmVjdCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdF
KHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KHRlc3RSZWN0KSk7CiAKLSAgICBSZWZQdHI8
Q0NMYXllckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGR1bW15TWF0cml4OwogICAgIGR1bW15TWF0cml4LnRyYW5z
bGF0ZSgxLjAsIDIuMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDA1OWVmMmFkY2Y1NWVk
M2JmYWE1MDc5MTRhNDEzMzQ3ODg2ZWVjNTQuLjAyZGM5MDhhYmRhNzc0NTNhNGZhNjlkZTJiOTZk
M2RiOTA3OTdmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBURVNU
KENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeVRpbGluZ0NvbXBsZXRlQW5kTm9PdmVy
bGFwKQogICAgIEludFNpemUgbGF5ZXJTaXplID0gSW50U2l6ZSg4MDAsIDYwMCk7CiAgICAgSW50
UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwog
Ci0gICAgUmVmUHRyPENDU29saWRDb2xvckxheWVySW1wbD4gbGF5ZXIgPSBDQ1NvbGlkQ29sb3JM
YXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBs
YXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMo
bGF5ZXJTaXplKTsKIApAQCAtNjYsNyArNjYsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1w
bFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgSW50U2l6ZSBs
YXllclNpemUgPSBJbnRTaXplKDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJl
Y3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAKLSAgICBSZWZQdHI8Q0NTb2xp
ZENvbG9yTGF5ZXJJbXBsPiBsYXllciA9IENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKDAp
OworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IGxheWVyID0gQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qodmlz
aWJsZUxheWVyUmVjdCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogICAgIGxh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IodGVzdENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggZDU1YzBi
YzE2NDRlMmE4OTA3NGYyYjg5ZjYxZWRmMjIwZjc4NmZjMy4uZmY3ZGFhM2M5YjI3NmY1YTJkYTdh
MzkzZGIxOGI1NWFkNDU4ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNw
YWNlIHsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB0aWxlZCBsYXllciB3aXRoIHRleHR1cmVzIGZv
ciBhbGwgdGlsZXMgYW5kIGEgZGVmYXVsdAogLy8gdmlzaWJpbGl0eSBvZiB0aGUgZW50aXJlIGxh
eWVyIHNpemUuCi1zdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXll
cihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxzKQorc3RhdGljIFBh
c3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRl
clRleGVsT3B0aW9uIGJvcmRlclRleGVscykKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1w
bD4gbGF5ZXIgPSBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIE93
blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRl
KHRpbGVTaXplLCBib3JkZXJUZXhlbHMpOwogICAgIHRpbGVyLT5zZXRCb3VuZHMobGF5ZXJTaXpl
KTsKICAgICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwpAQCAtNjgsNyArNjgsNyBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gVmVyaWZ5
IGRlZmF1bHQgbGF5ZXIgZG9lcyBjcmVhdGVzIHF1YWRzCiAgICAgewotICAgICAgICBSZWZQdHI8
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBD
Q0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBDQ1F1YWRMaXN0IHF1
YWRzOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICAgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwpAQCAtNzgsNyArNzgsNyBAQCBURVNU
KENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8gTGF5ZXIgd2l0
aCBlbXB0eSB2aXNpYmxlIGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAg
ICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgQ0NRdWFkTGlz
dCBxdWFkczsKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1w
dHlRdWFkTGlzdCkKIAogICAgIC8vIExheWVyIHdpdGggbm9uLWludGVyc2VjdGluZyB2aXNpYmxl
IGxheWVyIHJlY3QgcHJvZHVjZXMgbm8gcXVhZHMKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIEND
TGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIE93blB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5
ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAKICAgICAgICAgSW50UmVjdCBvdXRzaWRl
Qm91bmRzKEludFBvaW50KC0xMDAsIC0xMDApLCBJbnRTaXplKDUwLCA1MCkpOwogICAgICAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChvdXRzaWRlQm91bmRzKTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgLy8g
TGF5ZXIgd2l0aCBza2lwcyBkcmF3IHByb2R1Y2VzIG5vIHF1YWRzCiAgICAgewotICAgICAgICBS
ZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5
ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJT
aXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBsYXllci0+
c2V0U2tpcHNEcmF3KHRydWUpOwogCiAgICAgICAgIENDUXVhZExpc3QgcXVhZHM7CkBAIC0xMjEs
NyArMTIxLDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQog
ICAgIGNvbnN0IGludCBudW1UaWxlc1kgPSAyOwogICAgIGNvbnN0IEludFNpemUgbGF5ZXJTaXpl
KHRpbGVTaXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXplLmhlaWdodCgpICogbnVtVGls
ZXNZKTsKIAotICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVy
KHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7
CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNp
emUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVT
aGFyZWRRdWFkU3RhdGUoKTsKIAogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwpAQCAtMTUwLDcg
KzE1MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAog
c3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdldFF1YWRzKENDUXVhZExpc3Qm
IHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5
ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3Qg
SW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKIHsKLSAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1w
bD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9w
dGlvbik7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIo
dGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMo
bGF5ZXJTaXplKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRl
c3QsIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKICAgICBjb25zdCBpbnQgbnVtVGlsZXNZID0g
MjsKICAgICBjb25zdCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsK
ICAgICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNY
LCB0aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAgUmVmUHRyPENDVGlsZWRMYXll
ckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRp
bGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
bGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0
YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6
OmdyYXkpOwogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGVjMGNlMGM2YWJjYTEyNGZlOWIyYWU5NzljMzA0OGEw
ZDIyY2UyMjguLmJiYzIxYzVhMmVjYjZiZmExMjBlZGU2ZjRlZWY2ZmFlNmNmNDAwZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7
CiAKLSAgICAgICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5j
cmVhdGVDQ0xheWVySW1wbCgpOworICAgICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXll
ckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+
dGV4dHVyZUlkKCkpOwogCiAgICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZTAz
NTU5MDQ2N2E2NDI3YmZjYjYwNDdkYWQ0NDRhMzZhMjcwYzg4ZC4uYzY3MmQyM2IxOWQ0MDlmZDVh
MTQ5YjgyMmQ3MjlmMDExZGE5OWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBh
ZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxl
cykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKQEAgLTMzMiw3ICszMzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludE91dE9mTWVtb3J5KQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIs
IDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0g
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJl
QWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTM2OCw3ICszNjgsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0g
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsID0gYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAog
ICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50
c1NjYWxlQ2hhbmdlcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgUmVmUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpOworICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRQ
dHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
cmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggNDcyNGI0YTQzNTY3YjQzOTc4ZGRhN2MwZDYx
YTg0MmQ4ZDQ4Mjk4NC4uZWIzODUwZGFiMTIyNmIxNGI3MWViMjZhM2E1MTMyY2QyYmE2MTAwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25p
emVyVGVzdC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgTW9ja0ND
TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxNb2NrQ0NMYXllckltcGw+IGNyZWF0ZShpbnQgbGF5ZXJJZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja0NDTGF5ZXJJbXBsKGxheWVySWQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrQ0NMYXllckltcGwobGF5ZXJJZCkpOwogICAg
IH0KICAgICB2aXJ0dWFsIH5Nb2NrQ0NMYXllckltcGwoKQogICAgIHsKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW9ja0xheWVyQ2hyb21pdW0oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKQorICAg
IHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiAg
ICAgfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsKiBjY0xheWVyKQogICAgICAgICBleHBlY3RU
cmVlc0FyZUlkZW50aWNhbChsYXllci0+cmVwbGljYUxheWVyKCksIGNjTGF5ZXItPnJlcGxpY2FM
YXllcigpKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5
ZXJDaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q0NMYXllckltcGw+ID4mIGNjTGF5ZXJDaGlsZHJlbiA9IGNjTGF5ZXItPmNoaWxkcmVuKCk7Cisg
ICAgY29uc3QgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiYgY2NMYXllckNoaWxkcmVuID0g
Y2NMYXllci0+Y2hpbGRyZW4oKTsKIAogICAgIEFTU0VSVF9FUShsYXllckNoaWxkcmVuLnNpemUo
KSwgY2NMYXllckNoaWxkcmVuLnNpemUoKSk7CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBURVNUKFRy
ZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKICAgICBsYXllclRy
ZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiAgICAgbGF5ZXJUcmVl
Um9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogCi0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6
ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOworICAgIE93blB0cjxDQ0xheWVySW1wbD4g
Y2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXll
clRyZWVSb290LmdldCgpLCBudWxscHRyKTsKIAogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2Fs
KGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiB9CkBAIC0xNjUs
NyArMTY1LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVSZXVz
aW5nTGF5ZXJzKQogICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVt
OjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKICAgICBsYXllclRyZWVSb290LT5h
ZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0
KSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5j
aHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOwogICAgIGV4cGVj
dFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5n
ZXQoKSk7CiAKICAgICAvLyBBZGQgYSBuZXcgbGF5ZXIgdG8gdGhlIExheWVyQ2hyb21pdW0gc2lk
ZQpAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1w
bGVUcmVlQW5kUHJvcGVydGllcykKICAgICBJbnRTaXplIHNlY29uZENoaWxkQm91bmRzID0gSW50
U2l6ZSgyNSwgNTMpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPnNldEJvdW5k
cyhzZWNvbmRDaGlsZEJvdW5kcyk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJU
cmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9v
dC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBU
cmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51
bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCks
IGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcm9wZXJ0
eSB2YWx1ZXMgd2Ugc2V0IG9uIHRoZSBMYXllckNocm9taXVtIHRyZWUgYXJlIHJlZmxlY3RlZCBp
biB0aGUgQ0NMYXllckltcGwgdHJlZS4KQEAgLTIzNiw3ICsyMzYsNyBAQCBURVNUKFRyZWVTeW5j
aHJvbml6ZXJUZXN0LCByZXVzZUNDTGF5ZXJzQWZ0ZXJTdHJ1Y3R1cmFsQ2hhbmdlKQogICAgIGxh
eWVyQi0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0
aW9uTGlzdCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllckQgPSBsYXllckItPmNo
aWxkcmVuKClbMV0uZ2V0KCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVl
Um9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5n
ZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxw
dHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNj
TGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBOb3cgcmVzdHJ1Y3R1cmUgdGhlIHRyZWUg
dG8gbG9vayBsaWtlIHRoaXM6CkBAIC0yNzQsNyArMjc0LDcgQEAgVEVTVChUcmVlU3luY2hyb25p
emVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBpbnQgb2xkVHJlZUZpcnN0
Q2hpbGRMYXllcklkID0gb2xkTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKICAg
ICBpbnQgb2xkVHJlZVNlY29uZENoaWxkTGF5ZXJJZCA9IG9sZExheWVyVHJlZVJvb3QtPmNoaWxk
cmVuKClbMV0tPmlkKCk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9v
dCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMob2xkTGF5ZXJUcmVlUm9vdC5n
ZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVl
U3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKG9sZExheWVyVHJlZVJvb3QuZ2V0KCksIG51
bGxwdHIpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKG9sZExheWVyVHJlZVJvb3QuZ2V0
KCksIGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKICAgICAvLyBSZW1vdmUgYWxsIGNoaWxkcmVu
IG9uIHRoZSBMYXllckNocm9taXVtIHNpZGUuCkBAIC0zMTQsMjMgKzMxNCwyMyBAQCBURVNUKFRy
ZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBsaWNhTWFza0xheWVycykK
ICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFza0xheWVyKHJlcGxpY2FNYXNrTGF5ZXIu
Z2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMl0tPnNldFJlcGxpY2FMYXll
cihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJl
ZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3Qu
Z2V0KCksIG51bGxwdHIpOwogCiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVl
Um9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUg
bWFzayBsYXllci4KICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5zZXRNYXNrTGF5
ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAg
IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5
ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0
VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290Lmdl
dCgpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgcmVwbGljYSBsYXllci4KICAgICBsYXllclRyZWVS
b290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5ZXIoMCk7Ci0gICAgY2NMYXllclRyZWVS
b290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290Lmdl
dCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVT
eW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXll
clRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJU
cmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIAogICAgIC8vIFJlbW92ZSB0
aGUgcmVwbGljYSBtYXNrLgogICAgIHJlcGxpY2FMYXllcldpdGhNYXNrLT5zZXRNYXNrTGF5ZXIo
MCk7Ci0gICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVU
cmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAgIGNj
TGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJU
cmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJl
ZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgp
KTsKIH0KIApAQCAtMzQzLDggKzM0Myw4IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNocm9uaXplQW5pbWF0aW9ucykKIAogICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxGYWtl
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKj4obGF5ZXJUcmVlUm9vdC0+bGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKCkpLT5zeW5jaHJvbml6ZWRBbmltYXRpb25zKCkpOwogCi0gICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6
ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOwotICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NM
YXllclRyZWVSb290LmdldCgpKTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVl
Um9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5n
ZXQoKSwgbnVsbHB0cik7CisgICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6
c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QucmVs
ZWFzZSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PEZha2VMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIqPihsYXllclRyZWVSb290LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSkt
PnN5bmNocm9uaXplZEFuaW1hdGlvbnMoKSk7CiB9Cg==
</data>
<flag name="review"
          id="131339"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>