<?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>109966</bug_id>
          
          <creation_ts>2013-02-15 13:24:59 -0800</creation_ts>
          <short_desc>Early out of RenderLayer::updateCanBeStackingContainer more often</short_desc>
          <delta_ts>2013-04-02 17:55:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          
          <blocked>109591</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Glenn Hartmann">hartmanng</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834324</commentid>
    <comment_count>0</comment_count>
    <who name="Glenn Hartmann">hartmanng</who>
    <bug_when>2013-02-15 13:24:59 -0800</bug_when>
    <thetext>We can early-out of this function more often if we maintain a dirty bit for the m_canBePromotedToStackingcontainer property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834330</commentid>
    <comment_count>1</comment_count>
    <who name="">vollick</who>
    <bug_when>2013-02-15 13:28:28 -0800</bug_when>
    <thetext>More context: If we don&apos;t scroll overflow, then the value of m_canBeStackingContainer isn&apos;t useful. It would be nice to avoid computing it if we don&apos;t have to. For this to work reliably, we need to dirty this value whenever we start scrolling overflow, and freshen it in RenderLayer::styleChanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845666</commentid>
    <comment_count>2</comment_count>
      <attachid>191080</attachid>
    <who name="Glenn Hartmann">hartmanng</who>
    <bug_when>2013-03-01 17:27:23 -0800</bug_when>
    <thetext>Created attachment 191080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845680</commentid>
    <comment_count>3</comment_count>
      <attachid>191080</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-01 17:57:00 -0800</bug_when>
    <thetext>Comment on attachment 191080
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:360
&gt; +            if (layer())
&gt; +                layer()-&gt;dirtyAncestorStackingContextDescendantsAreContiguousInStackingOrder();

I think this should call a function on RenderLayer with a simpler name that describes when it&apos;s called, but I can&apos;t tell from this call site what actually matters.

&gt; Source/WebCore/rendering/RenderLayer.cpp:710
&gt; +    // Overflow are a box concept.

is a?

&gt; Source/WebCore/rendering/RenderLayer.cpp:721
&gt; +    bool overflowXHasChanged = overflowX == OSCROLL &amp;&amp; (!oldStyle || oldStyle-&gt;overflowX() != OSCROLL);
&gt; +    bool overflowYHasChanged = overflowY == OSCROLL &amp;&amp; (!oldStyle || oldStyle-&gt;overflowY() != OSCROLL);
&gt; +    if (overflowXHasChanged || overflowYHasChanged)
&gt; +        dirtyAncestorStackingContextDescendantsAreContiguousInStackingOrder();

It&apos;s odd that you&apos;re dirtying a flag related to stacking order when overflow changes. Sure, it&apos;s related to composited overflow, but you&apos;re making the assumption that only composited overflow cares about the flag.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1140
&gt; +            ScopedNeedsCompositedScrollingUpdater(this);

This seems like an odd place for a Scope thing. Won&apos;t it be destroyed two lines below?

&gt; Source/WebCore/rendering/RenderLayer.h:1319
&gt; +    RenderLayer* m_nextLayerToUpdateNeedsCompositedScrolling;
&gt; +    RenderLayer* m_lastLayerToUpdateNeedsCompositedScrolling;

It seems wrong to take up space on RenderLayer with these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846696</commentid>
    <comment_count>4</comment_count>
      <attachid>191282</attachid>
    <who name="Glenn Hartmann">hartmanng</who>
    <bug_when>2013-03-04 12:00:32 -0800</bug_when>
    <thetext>Created attachment 191282
Patch

(In reply to comment #3)
&gt; (From update of attachment 191080 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191080&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:360
&gt; &gt; +            if (layer())
&gt; &gt; +                layer()-&gt;dirtyAncestorStackingContextDescendantsAreContiguousInStackingOrder();
&gt; 
&gt; I think this should call a function on RenderLayer with a simpler name that describes when it&apos;s called, but I can&apos;t tell from this call site what actually matters.

done.


&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:710
&gt; &gt; +    // Overflow are a box concept.
&gt; 
&gt; is a?

yup, fixed.


&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:721
&gt; &gt; +    bool overflowXHasChanged = overflowX == OSCROLL &amp;&amp; (!oldStyle || oldStyle-&gt;overflowX() != OSCROLL);
&gt; &gt; +    bool overflowYHasChanged = overflowY == OSCROLL &amp;&amp; (!oldStyle || oldStyle-&gt;overflowY() != OSCROLL);
&gt; &gt; +    if (overflowXHasChanged || overflowYHasChanged)
&gt; &gt; +        dirtyAncestorStackingContextDescendantsAreContiguousInStackingOrder();
&gt; 
&gt; It&apos;s odd that you&apos;re dirtying a flag related to stacking order when overflow changes. Sure, it&apos;s related to composited overflow, but you&apos;re making the assumption that only composited overflow cares about the flag.

I&apos;ve abstracted this out into a new overflowDidChange() function, it should be more generalizable.


&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1140
&gt; &gt; +            ScopedNeedsCompositedScrollingUpdater(this);
&gt; 
&gt; This seems like an odd place for a Scope thing. Won&apos;t it be destroyed two lines below?

Yes, that&apos;s intentional. This works together with the other scoped objects further up in the stack to add itself to its stacking context&apos;s m_nextLayerToUpdateNeedsCompositedScrolling list.


&gt; &gt; Source/WebCore/rendering/RenderLayer.h:1319
&gt; &gt; +    RenderLayer* m_nextLayerToUpdateNeedsCompositedScrolling;
&gt; &gt; +    RenderLayer* m_lastLayerToUpdateNeedsCompositedScrolling;
&gt; 
&gt; It seems wrong to take up space on RenderLayer with these.

I&apos;ve modified this to be a LIFO list instead of FIFO, which allows us to use only one pointer instead of two. Alternatively, instead of storing a list of layers that need updating, we could store a dirty bit on each layer, and then walk the subtree from the stacking context and update any dirty layers when ScopedNeedsCompositedScrollingUpdater goes out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868300</commentid>
    <comment_count>5</comment_count>
      <attachid>196242</attachid>
    <who name="">vollick</who>
    <bug_when>2013-04-02 15:37:14 -0700</bug_when>
    <thetext>Created attachment 196242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868318</commentid>
    <comment_count>6</comment_count>
      <attachid>196246</attachid>
    <who name="">vollick</who>
    <bug_when>2013-04-02 15:58:39 -0700</bug_when>
    <thetext>Created attachment 196246
Patch

(In reply to comment #6)
&gt; Is this all really worth the benefit?

Ack, I&apos;m sorry. I think I misunderstood you. I think you were asking if all of
these optimizations were really worth the benefit. Turns out they weren&apos;t. I
went ahead and implemented them, but I found that even with the naive approach,
we only spend about 0.3ms in ::hasOutOfFlowPositionedDescendant while loading
gmail on my desktop machine. This simplifies things a lot.

This patch includes the changes for 109966. It doesn&apos;t perform correctly without
the fixes in that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868319</commentid>
    <comment_count>7</comment_count>
      <attachid>196247</attachid>
    <who name="">vollick</who>
    <bug_when>2013-04-02 16:00:40 -0700</bug_when>
    <thetext>Created attachment 196247
Patch

Sorry for the noise. That last patch was attached to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868345</commentid>
    <comment_count>8</comment_count>
      <attachid>196247</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-02 16:52:35 -0700</bug_when>
    <thetext>Comment on attachment 196247
Patch

Attachment 196247 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17357944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868355</commentid>
    <comment_count>9</comment_count>
      <attachid>196247</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-02 17:14:35 -0700</bug_when>
    <thetext>Comment on attachment 196247
Patch

Attachment 196247 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17323729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868374</commentid>
    <comment_count>10</comment_count>
      <attachid>196262</attachid>
    <who name="">vollick</who>
    <bug_when>2013-04-02 17:55:10 -0700</bug_when>
    <thetext>Created attachment 196262
Patch

Fixing mac ews bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191080</attachid>
            <date>2013-03-01 17:27:23 -0800</date>
            <delta_ts>2013-03-04 12:00:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130301202333.patch</filename>
            <type>text/plain</type>
            <size>26769</size>
            <attacher name="Glenn Hartmann">hartmanng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiM2I4ZWYxYTgzMTAw
ODUxMjI2ZWE5MjZmYzU4MDgwNzAxZjQxYS4uNzVhOGIzMmJlZjJlODkyMWFjOGFlMjQ2OTkwNWNj
Nzk2MDhhNzAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTAxICBHbGVu
biBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRWFybHkgb3V0
IG9mIFJlbmRlckxheWVyOjp1cGRhdGVDYW5CZVN0YWNraW5nQ29udGFpbmVyIG1vcmUgb2Z0ZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTk2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhlcmUgd2Ug
aW50cm9kdWNlIGEgZGlydHkgYml0IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlciBpbiBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAg
ICBmcmVzaCB2YWx1ZXMuIFRoaXMgY2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBl
bmRlbmNpZXMgaW4KKyAgICAgICAgdXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2Vu
ZGFudERlcGVuZGVudEZsYWdzKCksIHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2Nv
cGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBSQUlJIG9iamVjdCB0byBjYWxsCisg
ICAgICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpIG9ubHkgd2hlbiBpdCByZWFs
bHkgbmVlZHMgdG8gYmUgdG8KKyAgICAgICAgYXZvaWQgYSByZWN1cnNpdmUgbG9vcC4gVGhlIG9i
amVjdCBtYWludGFpbnMgYSBsaXN0IG9mIGxheWVycyB3aGljaAorICAgICAgICBoYXZlIHBvdGVu
dGlhbGx5IGRpcnR5IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nIHZhbHVlcyBhbmQgdXBkYXRl
cworICAgICAgICB0aGVtIHdoZW4gc2FmZS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9v
dmVyZmxvdy9hdXRvLW9wdC1pbi1keW5hbWljLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4
dERlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9yU3RhY2tp
bmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVySWZOZWVkZWRB
ZnRlclN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGVhbkRl
c2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVOZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3Jv
bGxhYmxlQXJlYVNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgIChSZW5kZXJMYXllcik6CisKIDIwMTMtMDMtMDEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbU3R5bGVzXSBJbXBs
ZW1lbnQgbmF2aWdhdGlvbiB0byBVSSBsb2NhdGlvbnMgb2YgcHJvcGVydHkgbmFtZXMvdmFsdWVz
IGluIHRoZSBzb3VyY2UgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBlN2M5NWNiNzMyNjg2NzYxYmU5NDcxNWJlNjZiNDA2NDdjNDk4OTQ4Li5iMDZlZmUwYTRm
YjkzNWM5NTY4YzQ0ZTdhMzlkYmFhNmExOWUxMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMzU2LDYgKzM1Niw4IEBAIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVG
cm9tU3R5bGUoKQogICAgICAgICAgICAgaWYgKCFzX2hhZE92ZXJmbG93Q2xpcCkKICAgICAgICAg
ICAgICAgICAvLyBFcmFzZSB0aGUgb3ZlcmZsb3cKICAgICAgICAgICAgICAgICByZXBhaW50KCk7
CisgICAgICAgICAgICBpZiAobGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBsYXllcigpLT5kaXJ0
eUFuY2VzdG9yU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCk7CiAgICAgICAgICAgICBzZXRIYXNPdmVyZmxvd0NsaXAoKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDhhMGUw
YzY3OGViOGI4NzJhOTNmZjczZTQ5YTBmM2UyMWExOTA5NjMuLmVlNDg3YmUxYjhkMzQyYWUyZjBi
YTE5OTY3NzM0ZmQ5OWJlNDgwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1faGFzT3V0T2ZGbG93UG9zaXRp
b25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQogICAgICwgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoZmFsc2UpCiAgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRl
cihmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVy
RGlydHkodHJ1ZSkKICAgICAsIG1faXNSb290TGF5ZXIocmVuZGVyZXItPmlzUmVuZGVyVmlldygp
KQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5KGZhbHNlKQogICAgICwgbV9wYWludGluZ0luc2lk
ZVJlZmxlY3Rpb24oZmFsc2UpCkBAIC0xOTMsNiArMTk0LDggQEAgUmVuZGVyTGF5ZXI6OlJlbmRl
ckxheWVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVyKQogICAgICwgbV9yZWZsZWN0
aW9uKDApCiAgICAgLCBtX3Njcm9sbENvcm5lcigwKQogICAgICwgbV9yZXNpemVyKDApCisgICAg
LCBtX25leHRMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKDApCisgICAgLCBt
X2xhc3RMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKDApCiAgICAgLCBtX2Vu
Y2xvc2luZ1BhZ2luYXRpb25MYXllcigwKQogewogICAgIG1faXNOb3JtYWxGbG93T25seSA9IHNo
b3VsZEJlTm9ybWFsRmxvd09ubHkoKTsKQEAgLTYxNSw3ICs2MTgsNyBAQCBib29sIFJlbmRlckxh
eWVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29u
c3QKIC8vICBBbmQgd2Ugd291bGQgY29uY2x1ZGUgdGhhdCBDIGNvdWxkIGJlIHByb21vdGVkLgog
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCkKIHsKLSAgICBpZiAoIWlzU3RhY2tpbmdDb250ZXh0KCkgfHwgIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fZGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgfHwgIWlzU3RhY2tpbmdDb250
ZXh0KCkgfHwgIWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX25vcm1hbEZsb3dMaXN0RGlydHkp
OwpAQCAtNjU1LDYgKzY1OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRz
QXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiAgICAgaW50IGNvdW50ID0gMDsKICAgICBi
b29sIGZpcnN0SXRlcmF0aW9uID0gdHJ1ZTsKICAgICB1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUobG9va3VwLCBtaW5JbmRleCwgbWF4SW5kZXgs
IGNvdW50LCBmaXJzdEl0ZXJhdGlvbik7CisKKyAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlckRpcnR5ID0gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlclJlY3Vyc2l2ZShjb25z
dCBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgaW50PiYgbG9va3VwLCBpbnQmIG1pbkluZGV4
LCBpbnQmIG1heEluZGV4LCBpbnQmIGNvdW50LCBib29sIGZpcnN0SXRlcmF0aW9uKQpAQCAtNjkz
LDYgKzY5OCwzOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29uc3QgSAogICAgIH0KIH0KIAordm9pZCBS
ZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzQXJlQ29u
dGlndW91c0luU3RhY2tpbmdPcmRlcigpCit7CisgICAgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lciA9
IHN0YWNraW5nQ29udGFpbmVyKCk7CisgICAgaWYgKGNvbnRhaW5lcikKKyAgICAgICAgY29udGFp
bmVyLT5tX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5ID0gdHJ1
ZTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcklmTmVlZGVkQWZ0ZXJTdHlsZUNo
YW5nZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgLy8gT3ZlcmZsb3cgYXJl
IGEgYm94IGNvbmNlcHQuCisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBp
ZiAoIWJveCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRU92ZXJmbG93IG92ZXJmbG93WCA9IGJv
eC0+c3R5bGUoKS0+b3ZlcmZsb3dYKCk7CisgICAgRU92ZXJmbG93IG92ZXJmbG93WSA9IGJveC0+
c3R5bGUoKS0+b3ZlcmZsb3dZKCk7CisKKyAgICBib29sIG92ZXJmbG93WEhhc0NoYW5nZWQgPSBv
dmVyZmxvd1ggPT0gT1NDUk9MTCAmJiAoIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT5vdmVyZmxvd1go
KSAhPSBPU0NST0xMKTsKKyAgICBib29sIG92ZXJmbG93WUhhc0NoYW5nZWQgPSBvdmVyZmxvd1kg
PT0gT1NDUk9MTCAmJiAoIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT5vdmVyZmxvd1koKSAhPSBPU0NS
T0xMKTsKKyAgICBpZiAob3ZlcmZsb3dYSGFzQ2hhbmdlZCB8fCBvdmVyZmxvd1lIYXNDaGFuZ2Vk
KQorICAgICAgICBkaXJ0eUFuY2VzdG9yU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFuRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCkKK3sKKyAgICBSZW5kZXJMYXll
ciogY29udGFpbmVyID0gc3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBpZiAoY29udGFpbmVyICYm
IGNvbnRhaW5lci0+bV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0
eSAmJiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpIHsK
KyAgICAgICAgY29udGFpbmVyLT51cGRhdGVaT3JkZXJMaXN0cygpOworICAgICAgICBjb250YWlu
ZXItPnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CisgICAgICAgIGNvbnRhaW5lci0+dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgfQorfQorCiB2b2lk
IFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRy
eU1hcCkKIHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSk7CkBAIC0x
MDk5LDcgKzExMzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5k
ZW50RmxhZ3MoSGFzaFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogbwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICBpZiAobV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVk
RGVzY2VuZGFudERpcnR5KQotICAgICAgICAgICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nKCk7CisgICAgICAgICAgICBTY29wZWROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVy
KHRoaXMpOwogI2VuZGlmCiAgICAgICAgIG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRh
bnREaXJ0eSA9IGZhbHNlOwogICAgIH0KQEAgLTE2OTIsNiArMTczMCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmFkZENoaWxkKFJlbmRlckxheWVyKiBjaGlsZCwgUmVuZGVyTGF5ZXIqIGJlZm9yZUNo
aWxkKQogICAgICAgICAvLyBjYXNlIHdoZXJlIHdlJ3JlIGJ1aWxkaW5nIHVwIGdlbmVyYXRlZCBj
b250ZW50IGxheWVycy4gVGhpcyBpcyBvaywgc2luY2UgdGhlIGxpc3RzIHdpbGwgc3RhcnQKICAg
ICAgICAgLy8gb2ZmIGRpcnR5IGluIHRoYXQgY2FzZSBhbnl3YXkuCiAgICAgICAgIGNoaWxkLT5k
aXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAgICAgICAgY2hpbGQtPmRpcnR5
QW5jZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXIoKTsKICAgICB9CiAKICAgICBjaGlsZC0+dXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZs
YWdzKCk7CkBAIC0xNzM0LDYgKzE3NzMsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnJl
bW92ZUNoaWxkKFJlbmRlckxheWVyKiBvbGRDaGlsZCkKICAgICAgICAgLy8gcmVhdHRhY2htZW50
IHByb2Nlc3MgaW4gcmVtb3ZlT25seVRoaXNMYXllciwgdGhlIGxheWVyIG1heSBhbHJlYWR5IGJl
IGRpc2Nvbm5lY3RlZAogICAgICAgICAvLyBmcm9tIHRoZSBtYWluIGxheWVyIHRyZWUsIHNvIHdl
IG5lZWQgdG8gbnVsbC1jaGVjayB0aGUgfHN0YWNraW5nQ29udGFpbmVyfCB2YWx1ZS4KICAgICAg
ICAgb2xkQ2hpbGQtPmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygpOworICAgICAg
ICBvbGRDaGlsZC0+ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzQXJlQ29u
dGlndW91c0luU3RhY2tpbmdPcmRlcigpOwogICAgIH0KIAogICAgIGlmICgob2xkQ2hpbGQtPnJl
bmRlcmVyKCkgJiYgb2xkQ2hpbGQtPnJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSB8fCBvbGRDaGlsZC0+aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKSkKQEAgLTE5
NzUsNiArMjAxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpCiAgICAgaWYgKCFmcmFtZVZpZXcgfHwgIWZyYW1lVmlldy0+Y29udGFpbnNTY3Jv
bGxhYmxlQXJlYSh0aGlzKSkKICAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSBm
YWxzZTsKICAgICBlbHNlIHsKKyAgICAgICAgY2xlYW5EZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKTsKICAgICAgICAgYm9vbCBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxp
bmcgPSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkKICAg
ICAgICAgICAgICYmIGNhbkJlU3RhY2tpbmdDb250YWluZXIoKQogICAgICAgICAgICAgJiYgIWhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCk7CkBAIC01NzA0LDcgKzU3NDUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywg
Q29sbGVjdExheWVyc0JlaGF2aW9yCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyTGlz
dHNJZk5lZWRlZCgpCiB7Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXIgPSBpc1N0YWNraW5nQ29udGV4dCgpICYmIChtX3pPcmRlckxp
c3RzRGlydHkgfHwgbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKKyAgICBib29sIHNob3VsZFVwZGF0
ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciA9IGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSAmJiBpc1N0YWNraW5nQ29udGV4dCgp
ICYmIChtX3pPcmRlckxpc3RzRGlydHkgfHwgbV9ub3JtYWxGbG93TGlzdERpcnR5KSAmJiBtX2Rl
c2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5OwogICAgIHVwZGF0ZVpP
cmRlckxpc3RzKCk7CiAgICAgdXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsKIApAQCAtNTkxNSw2ICs1
OTU2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5
bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFMKICAgICAgICAgaWYgKGlzU3RhY2tpbmdD
b250ZXh0KQogICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOwogICAgIH0KKworICAgIGRp
cnR5QW5jZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNr
aW5nT3JkZXIoKTsKIH0KIAogc3RhdGljIGJvb2wgb3ZlcmZsb3dSZXF1aXJlc1Njcm9sbGJhcihF
T3ZlcmZsb3cgb3ZlcmZsb3cpCkBAIC02MDUyLDYgKzYwOTUsOCBAQCB2b2lkIFJlbmRlckxheWVy
OjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCiAgICAgdXBkYXRlT3JSZW1vdmVGaWx0ZXJDbGllbnRzKCk7CiAjZW5kaWYKIAorICAgIGRp
cnR5QW5jZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNr
aW5nT3JkZXJJZk5lZWRlZEFmdGVyU3R5bGVDaGFuZ2Uob2xkU3R5bGUpOworCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
ZygpOwogICAgIGlmIChjb21wb3NpdG9yKCktPnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSh0
aGlzKSkKQEAgLTYwOTMsMTIgKzYxMzgsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Ny
b2xsYWJsZUFyZWFTZXQoYm9vbCBoYXNPdmVyZmxvdykKICAgICBpZiAoSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lciA9IGZyYW1lLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgaXNWaXNpYmxl
VG9IaXRUZXN0ICY9IG93bmVyLT5yZW5kZXJlcigpICYmIG93bmVyLT5yZW5kZXJlcigpLT52aXNp
YmxlVG9IaXRUZXN0aW5nKCk7CiAKLSAgICBpZiAoaGFzT3ZlcmZsb3cgJiYgaXNWaXNpYmxlVG9I
aXRUZXN0ID8gZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKSA6IGZyYW1lVmlldy0+
cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcykpCisgICAgaWYgKGhhc092ZXJmbG93ICYmIGlzVmlz
aWJsZVRvSGl0VGVzdCA/IGZyYW1lVmlldy0+YWRkU2Nyb2xsYWJsZUFyZWEodGhpcykgOiBmcmFt
ZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpKSB7CisgICAgICAgIGRpcnR5QW5jZXN0
b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIo
KTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIHVwZGF0ZU5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZygpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuOwogI2VuZGlmCisg
ICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDM5ZjEwYzMwOGM2OTdkMzNj
MTBkMjM2ZDBlNWQ5N2VmZDg0OTVkOWIuLjI2MTMwZTZhODUyOTM4OWZhYjI3ZmQ0OTk0ZGUxZDRh
ZGNhNmJiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC04MzUs
NiArODM1LDggQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNPdXRPZkZsb3dSZW5kZXJGbG93
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dSZW5kZXJGbG93
VGhyZWFkKCk7IH0KIAorICAgIHZvaWQgZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4dERlc2Nl
bmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOworCiBwcml2YXRlOgogICAgIGVu
dW0gQ29sbGVjdExheWVyc0JlaGF2aW9yIHsgU3RvcEF0U3RhY2tpbmdDb250ZXh0cywgU3RvcEF0
U3RhY2tpbmdDb250YWluZXJzIH07CiAKQEAgLTg1NSw2ICs4NTcsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNv
bnN0OwogICAgIHZvaWQgdXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09y
ZGVyKCk7CiAgICAgdm9pZCB1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXJSZWN1cnNpdmUoY29uc3QgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIGludD4mLCBp
bnQmIG1pbkluZGV4LCBpbnQmIG1heEluZGV4LCBpbnQmIGNvdW50LCBib29sIGZpcnN0SXRlcmF0
aW9uKTsKKyAgICB2b2lkIGRpcnR5QW5jZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0Fy
ZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJJZk5lZWRlZEFmdGVyU3R5bGVDaGFuZ2UoY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2b2lkIGNsZWFuRGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAKICAgICB2b2lkIGNvbXB1dGVSZXBhaW50UmVjdHMo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVu
ZGVyR2VvbWV0cnlNYXAqID0gMCk7CiAgICAgdm9pZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVk
aW5nRGVzY2VuZGFudHMoKTsKQEAgLTg3OCw2ICs4ODIsNTUgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAKKyAgICAvLyBSQUlJIG9iamVj
dCB1c2VkIHRvIGRlbGF5IGNhbGxpbmcgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nIHVu
dGlsCisgICAgLy8gaXQncyByZWFsbHkgbmVjZXNzYXJ5LiBUaGlzIG1haW50YWlucyBhIGxpc3Qg
b2YgbGF5ZXJzIHdobyBuZWVkIHRvIGNhbGwKKyAgICAvLyB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKSBhdCB0aGVpciBlbmNsb3Npbmcgc3RhY2tpbmcgY29udGV4dC4KKyAgICAvLyBX
aGVuIGl0J3Mgc2FmZSAoaWUsIHdoZW4gdGhlIG9yaWdpbmFsIFJBSUkgb2JqZWN0IGZvciB0aGUg
Zmlyc3QgaXRlbSBpbgorICAgIC8vIHRoZSBsaXN0IGlzIGRlc3RydWN0ZWQpLCB3ZSBjYWxsIHVw
ZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpIG9uIHRoZQorICAgIC8vIHdob2xlIGxpc3Qu
CisgICAgY2xhc3MgU2NvcGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciB7CisgICAg
cHVibGljOgorICAgICAgICBTY29wZWROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKFJl
bmRlckxheWVyKiBsYXllcikKKyAgICAgICAgICAgIDogbV9lbmNsb3NpbmdTdGFja2luZ0NvbnRl
eHQoMCkKKyAgICAgICAgICAgICwgbV9zaG91bGRDbGVhblVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZ0xpc3RPbkRlc3RydWN0aW9uKGZhbHNlKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dCA9IGxheWVyOworICAgICAgICAgICAgd2hpbGUgKG1f
ZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0ICYmICFtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dC0+
aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICBtX2VuY2xvc2luZ1N0YWNraW5n
Q29udGV4dCA9IG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0LT5wYXJlbnQoKTsKKyAgICAgICAg
ICAgIGlmIChtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dCAmJiBtX2VuY2xvc2luZ1N0YWNraW5n
Q29udGV4dC0+bV9uZXh0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewor
ICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxpc3Qgb2YgbGF5ZXJzIHdhaXRp
bmcgdG8gYmUgdXBkYXRlZCwganVzdAorICAgICAgICAgICAgICAgIC8vIGFkZCBvdXJzZWxmIHRv
IHRoZSBsaXN0LgorICAgICAgICAgICAgICAgIEFTU0VSVChtX2VuY2xvc2luZ1N0YWNraW5nQ29u
dGV4dC0+bV9sYXN0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyk7CisgICAg
ICAgICAgICAgICAgbV9lbmNsb3NpbmdTdGFja2luZ0NvbnRleHQtPm1fbGFzdExheWVyVG9VcGRh
dGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmctPm1fbmV4dExheWVyVG9VcGRhdGVOZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcgPSBsYXllcjsKKyAgICAgICAgICAgICAgICBtX2VuY2xvc2luZ1N0YWNr
aW5nQ29udGV4dC0+bV9sYXN0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9
IGxheWVyOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4
dCkgeworICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGEgbGlzdCBvZiBsYXllcnMgdG8gdXBkYXRl
LgorICAgICAgICAgICAgICAgIG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0LT5tX25leHRMYXll
clRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gbV9lbmNsb3NpbmdTdGFja2luZ0Nv
bnRleHQtPm1fbGFzdExheWVyVG9VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSBsYXll
cjsKKyAgICAgICAgICAgICAgICBtX3Nob3VsZENsZWFuVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nTGlzdE9uRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAg
ICAgICB9CisKKyAgICAgICAgflNjb3BlZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9zaG91bGRDbGVhblVwZGF0ZU5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZ0xpc3RPbkRlc3RydWN0aW9uKSB7CisgICAgICAgICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0LT5tX25l
eHRMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nOworICAgICAgICAgICAgICAg
IHdoaWxlIChjdXJyZW50TGF5ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIq
IG5leHRMYXllciA9IGN1cnJlbnRMYXllci0+bV9uZXh0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZzsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudExheWVyLT5tX25leHRM
YXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgY3VycmVudExheWVyLT51cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudExheWVyID0gbmV4dExheWVyOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dC0+bV9uZXh0
TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IDA7CisgICAgICAgICAgICAg
ICAgbV9lbmNsb3NpbmdTdGFja2luZ0NvbnRleHQtPm1fbGFzdExheWVyVG9VcGRhdGVOZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBSZW5kZXJMYXllciogbV9lbmNsb3NpbmdTdGFja2luZ0NvbnRleHQ7
CisgICAgICAgIGJvb2wgbV9zaG91bGRDbGVhblVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
Z0xpc3RPbkRlc3RydWN0aW9uOworICAgIH07CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IHBvc2l0aW9uIGNoYW5nZWQuCiAgICAgYm9vbCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CiAKQEAg
LTExNTYsNiArMTIwOSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBkZXNjZW5kYW50cyBpbiBzdGFj
a2luZyBvcmRlci4gVGhpcyBpcyBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyBvZiBiZWluZwogICAg
IC8vIGFibGUgdG8gc2FmZWx5IGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQuCiAgICAgYm9vbCBt
X2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciA6IDE7CisgICAgYm9vbCBt
X2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5IDogMTsKIAogICAg
IGNvbnN0IGJvb2wgbV9pc1Jvb3RMYXllciA6IDE7CiAKQEAgLTEyNjEsNiArMTMxNSw5IEBAIHBy
b3RlY3RlZDoKICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKICAgICBS
ZW5kZXJTY3JvbGxiYXJQYXJ0KiBtX3Jlc2l6ZXI7CiAKKyAgICBSZW5kZXJMYXllciogbV9uZXh0
TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZzsKKyAgICBSZW5kZXJMYXllciog
bV9sYXN0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZzsKKwogICAgIC8vIFBv
aW50ZXIgdG8gdGhlIGVuY2xvc2luZyBSZW5kZXJMYXllciB0aGF0IGNhdXNlZCB1cyB0byBiZSBw
YWdpbmF0ZWQuIEl0IGlzIDAgaWYgd2UgYXJlIG5vdCBwYWdpbmF0ZWQuCiAgICAgUmVuZGVyTGF5
ZXIqIG1fZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyOwogCkBAIC0xMjgyLDYgKzEzMzksNyBAQCBp
bmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCiAKIGlubGluZSB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCiB7CisgICAgU2NvcGVkTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlciB1cGRhdGVyKHRoaXMpOwogICAgIGlmICghbV96T3JkZXJM
aXN0c0RpcnR5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NDg4NjgwZTQzN2QzZWVlMmQ2
NmU5NDRiNzk4MDE1OWM2NjA1YjNlLi5hMWIxYWY3OTNkNjliNDRlN2NiYmZiYWNiZWY1MDUyNjA1
MDZhNzkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDMtMDEgIEdsZW5uIEhhcnRtYW5u
ICA8aGFydG1hbm5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2YgUmVuZGVy
TGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSB3ZSBpbnRyb2R1Y2Ug
YSBkaXJ0eSBiaXQgZm9yCisgICAgICAgIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyIGluIG9yZGVyIHRvIGF2b2lkIHJlY29tcHV0aW5nCisgICAgICAgIGZyZXNoIHZh
bHVlcy4gVGhpcyBjYXVzZWQgYSBwb3RlbnRpYWwgZm9yIGN5Y2xpY2FsIGRlcGVuZGVuY2llcyBp
bgorICAgICAgICB1cGRhdGVaT3JkZXJMaXN0cygpIGFuZCB1cGRhdGVEZXNjZW5kYW50RGVwZW5k
ZW50RmxhZ3MoKSwgc28gd2UgYWxzbworICAgICAgICBpbnRyb2R1Y2UgYSBTY29wZWROZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIFJBSUkgb2JqZWN0IHRvIGNhbGwKKyAgICAgICAgdXBk
YXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgb25seSB3aGVuIGl0IHJlYWxseSBuZWVkcyB0
byBiZSB0bworICAgICAgICBhdm9pZCBhIHJlY3Vyc2l2ZSBsb29wLiBUaGUgb2JqZWN0IG1haW50
YWlucyBhIGxpc3Qgb2YgbGF5ZXJzIHdoaWNoCisgICAgICAgIGhhdmUgcG90ZW50aWFsbHkgZGly
dHkgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgdmFsdWVzIGFuZCB1cGRhdGVzCisgICAgICAg
IHRoZW0gd2hlbiBzYWZlLgorCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0by1v
cHQtaW4tZHluYW1pYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5n
L292ZXJmbG93L2F1dG8tb3B0LWluLWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0tbGludXgvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9z
aXRlZHNjcm9sbGluZy9vdmVyZmxvdy9hdXRvLW9wdC1pbi1keW5hbWljLWV4cGVjdGVkLnBuZzog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9zaXRl
ZHNjcm9sbGluZy9vdmVyZmxvdy9hdXRvLW9wdC1pbi1keW5hbWljLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTMtMDMtMDEgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZ2FyZGVuaW5nLCB1cGRhdGUgaW1h
Z2UgZXhwZWN0YXRpb24gYWdhaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0
ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXIt
c3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGRjMjkxNTY1MDU0OTJkYmRk
Zjg2N2QxOWVmMjkwNzk5ZDNhZDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9s
bGluZy1hZnRlci1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzkgQEAKK2l0
ZXJhdGlvbiAwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTog
UEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI6IFBBU1MsIGRvZXMg
bm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gNDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
NTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDY6IFBBU1MsIGhh
cyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDc6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJl
ZS4KK2l0ZXJhdGlvbiA4OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA5OiBQQVNT
LCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTA6IFBBU1MsIGRvZXMgbm90
IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMTI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDEzOiBQQVNTLCBo
YXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMTU6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE2OiBQQVNTLCBoYXMg
bGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNzogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDE4OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRp
b24gMTk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIwOiBQQVNTLCBoYXMgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
MjI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIzOiBQQVNTLCBoYXMgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiAyNDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjU6
IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNjogUEFTUywgZG9l
cyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI3OiBQQVNTLCBoYXMgbGF5ZXIgdHJl
ZS4KK2l0ZXJhdGlvbiAyODogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjk6IFBB
U1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMwOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4K
K2l0ZXJhdGlvbiAzMTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzI6IFBBU1Ms
IGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0
ZXJhdGlvbiAzNDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzU6IFBBU1MsIGRv
ZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNjogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMzc6IFBBU1MsIGhhcyBsYXllciB0cmVlLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNv
bXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNj
cm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjdkNmUwY2IwYmY1
MTY2OGRjODM4YzgzMTdmYWRhOGUyMjM5MjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVk
LXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbApAQCAtMCwwICsxLDE2NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgI3ByZWRlY2Vzc29y
IHsKKyAgICAgIHdpZHRoOiA3MHB4OworICAgICAgaGVpZ2h0OiA3MHB4OworICAgICAgbGVmdDog
MjVweDsKKyAgICAgIHRvcDogMjVweDsKKyAgICAgIHotaW5kZXg6IDI7CisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBkaXNwbGF5
OiBub25lOworICAgIH0KKworICAgICNjb250YWluZXIgeworICAgICAgd2lkdGg6IDUwMHB4Owor
ICAgICAgaGVpZ2h0OiA1MDBweDsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB9CisK
KyAgICAjY29udGVudCB7CisgICAgICB3aWR0aDogMXB4OworICAgICAgaGVpZ2h0OiAxcHg7Cisg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgfQorCisgICAgI2NvbnRlbnRQcmVkZWNlc3NvciB7CisgICAgICB6LWluZGV4OiAzOwor
ICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgZGlzcGxheTog
bm9uZTsKKyAgICB9CisKKyAgICAjY29udGVudFN1Y2Nlc3NvciB7CisgICAgICB3aWR0aDogMTAw
MHB4OworICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
fQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+CisgICAgdmFyIGRlYnVnID0gZmFsc2U7CisKKyAgICB2YXIgcmVzdWx0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAgIHZhciBjb250ZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgIHZhciBjb250ZW50UHJlZGVjZXNz
b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudFByZWRlY2Vzc29yJyk7CisgICAg
dmFyIGNvbnRlbnRTdWNjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudFN1
Y2Nlc3NvcicpOworCisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoZmFsc2UpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JP
dmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiB3cml0ZVJlc3VsdChp
dGVyYXRpb24sIGV4cGVjdGVkUmVzdWx0KQorICAgIHsKKyAgICAgIGlmICghd2luZG93LmludGVy
bmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAgICBpZiAoZGVidWcpCisgICAgICAgIHdyaXRl
RGVidWcoaXRlcmF0aW9uKTsKKworICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiaXRlcmF0aW9u
ICIgKyBpdGVyYXRpb24gKyAiOiAiOworCisgICAgICB2YXIgaGFzTGF5ZXJUcmVlID0gISF3aW5k
b3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICBpZiAoaGFzTGF5
ZXJUcmVlID09PSBleHBlY3RlZFJlc3VsdCkKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAi
UEFTUywgIjsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiRkFJTCwg
IjsKKworICAgICAgaWYgKGhhc0xheWVyVHJlZSkKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiaGFzIGxheWVyIHRyZWUuXG4iOworICAgICAgZWxzZQorICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuXG4iOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHdyaXRlRGVidWcoaXRlcmF0aW9uKQorICAgIHsKKyAgICAgIHZhciBlbGVtZW50cyA9IFtj
b250YWluZXIsIGNvbnRlbnRQcmVkZWNlc3NvciwgY29udGVudCwgY29udGVudFN1Y2Nlc3Nvcl07
CisKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgdmFyIGNvbXB1dGVkU3R5
bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOworCisgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gIml0ZXJhdGlvbiAiICsgaXRlcmF0aW9uICsgIjpcbiI7CisgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgKz0gIlx0ZWxlbWVudDogIiArIGVsZW1lbnQuaWQgKyAiXG4iOworICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICJcdGhlaWdodDogIiArIGNvbXB1dGVkU3R5bGUuaGVpZ2h0ICsg
IlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHR3aWR0aDogIiArIGNvbXB1dGVk
U3R5bGUud2lkdGggKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdG92ZXJm
bG93WDogIiArIGNvbXB1dGVkU3R5bGUub3ZlcmZsb3dYICsgIlxuIjsKKyAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiXHRvdmVyZmxvd1k6ICIgKyBjb21wdXRlZFN0eWxlLm92ZXJmbG93WSAr
ICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0ZGlzcGxheTogIiArIGNvbXB1
dGVkU3R5bGUuZGlzcGxheSArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0
ekluZGV4OiAiICsgY29tcHV0ZWRTdHlsZS56SW5kZXggKyAiXG4iOworICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAgICAgcmVzdWx0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAgICAgY29udGVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250ZW50Jyk7CisgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJyk7CisgICAgICBjb250ZW50UHJlZGVjZXNzb3IgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGVudFByZWRlY2Vzc29yJyk7CisgICAgICBjb250ZW50U3Vj
Y2Vzc29yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRTdWNjZXNzb3InKTsKKwor
ICAgICAgdmFyIGNvdW50ID0gMDsKKworICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywgZmFsc2Up
OworCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICBjb250ZW50
LnN0eWxlLmhlaWdodCA9IGkgPyAnMTAwMHB4JyA6ICcxcHgnOworICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgIGNvbnRlbnQuc3R5bGUud2lkdGggPSBqID8g
JzEwMDBweCcgOiAnMXB4JzsKKyAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDI7IGsrKykg
eworICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLm92ZXJmbG93WCA9IGsgPyAnc2Nyb2xsJyA6
ICd2aXNpYmxlJzsKKyAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgMjsgbSsrKSB7Cisg
ICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5vdmVyZmxvd1kgPSBtID8gJ3Njcm9sbCcgOiAn
dmlzaWJsZSc7CisgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgMjsgbisrKSB7Cisg
ICAgICAgICAgICAgICAgY29udGVudFN1Y2Nlc3Nvci5zdHlsZS5kaXNwbGF5ID0gbiA/ICdibG9j
aycgOiAnbm9uZSc7CisKKyAgICAgICAgICAgICAgICB3cml0ZVJlc3VsdChjb3VudCsrLCAhISgo
aSB8fCBqIHx8IG4pICYmIChrIHx8IG0pKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgY29udGVudC5zdHls
ZS5oZWlnaHQgPSAnMTAwMHB4JzsKKyAgICAgIGNvbnRlbnQuc3R5bGUud2lkdGggPSAnMTAwMHB4
JzsKKyAgICAgIGNvbnRhaW5lci5zdHlsZS5vdmVyZmxvd1ggPSAnc2Nyb2xsJzsKKyAgICAgIGNv
bnRhaW5lci5zdHlsZS5vdmVyZmxvd1kgPSAnc2Nyb2xsJzsKKyAgICAgIGNvbnRlbnRTdWNjZXNz
b3Iuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgIHByZWRlY2Vzc29yLnN0eWxlLmRpc3Bs
YXkgPSAnYmxvY2snOworCisgICAgICB3cml0ZVJlc3VsdChjb3VudCsrLCB0cnVlKTsKKworICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgY29udGVudFByZWRlY2Vz
c29yLnN0eWxlLmRpc3BsYXkgPSBpID8gJ25vbmUnIDogJ2Jsb2NrJzsKKyAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICBjb250YWluZXIuc3R5bGUuekluZGV4
ID0gaiA/ICdhdXRvJyA6ICcxJzsKKworICAgICAgICAgIHdyaXRlUmVzdWx0KGNvdW50KyssIGkg
IT09IDAgfHwgaiAhPT0gMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOworICA8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgaWQ9InByZWRlY2Vzc29yIj48L2Rpdj4KKyAgPGRp
diBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJjb250ZW50UHJlZGVjZXNzb3IiPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImNvbnRlbnQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnRlbnRTdWNj
ZXNzb3IiPjwvZGl2PgorICA8L2Rpdj4KKyAgPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9w
dC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9jb21wb3NpdGVk
c2Nyb2xsaW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3Jv
bGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGRjMjkx
NTY1MDU0OTJkYmRkZjg2N2QxOWVmMjkwNzk5ZDNhZDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGlu
Zy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFm
dGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAoraXRlcmF0aW9u
IDA6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxOiBQQVNTLCBk
b2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjogUEFTUywgZG9lcyBub3QgaGF2
ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDM6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJl
ZS4KK2l0ZXJhdGlvbiA0OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA1OiBQQVNT
LCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gNjogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gNzogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDg6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDk6IFBBU1MsIGRvZXMg
bm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMDogUEFTUywgZG9lcyBub3QgaGF2ZSBs
YXllciB0cmVlLgoraXRlcmF0aW9uIDExOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlv
biAxMjogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTM6IFBBU1MsIGhhcyBsYXll
ciB0cmVlLgoraXRlcmF0aW9uIDE0OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAx
NTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTY6IFBBU1MsIGhhcyBsYXllciB0
cmVlLgoraXRlcmF0aW9uIDE3OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMTg6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxOTog
UEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjA6IFBBU1MsIGhhcyBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDIxOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMjogUEFT
UywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjM6IFBBU1MsIGhhcyBsYXllciB0cmVlLgor
aXRlcmF0aW9uIDI0OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNTogUEFTUywg
ZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI2OiBQQVNTLCBkb2VzIG5vdCBo
YXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjc6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDI4OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyOTogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzA6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0
aW9uIDMxOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMjogUEFTUywgaGFzIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMzM6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDM0OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNTogUEFTUywgZG9lcyBub3Qg
aGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDM2OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0
ZXJhdGlvbiAzNzogUEFTUywgaGFzIGxheWVyIHRyZWUuCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191282</attachid>
            <date>2013-03-04 12:00:32 -0800</date>
            <delta_ts>2013-04-02 15:37:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130304145640.patch</filename>
            <type>text/plain</type>
            <size>26401</size>
            <attacher name="Glenn Hartmann">hartmanng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiM2I4ZWYxYTgzMTAw
ODUxMjI2ZWE5MjZmYzU4MDgwNzAxZjQxYS4uZGNiODZlZDBjNjNmZGQwNDFkOWY0OGJiNTQ0NjNl
YjY3NWYxMTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA0ICBHbGVu
biBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRWFybHkgb3V0
IG9mIFJlbmRlckxheWVyOjp1cGRhdGVDYW5CZVN0YWNraW5nQ29udGFpbmVyIG1vcmUgb2Z0ZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTk2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhlcmUgd2Ug
aW50cm9kdWNlIGEgZGlydHkgYml0IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlciBpbiBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAg
ICBmcmVzaCB2YWx1ZXMuIFRoaXMgY2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBl
bmRlbmNpZXMgaW4KKyAgICAgICAgdXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2Vu
ZGFudERlcGVuZGVudEZsYWdzKCksIHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2Nv
cGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBSQUlJIG9iamVjdCB0byBjYWxsCisg
ICAgICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpIG9ubHkgd2hlbiBpdCByZWFs
bHkgbmVlZHMgdG8gYmUgdG8KKyAgICAgICAgYXZvaWQgYSByZWN1cnNpdmUgbG9vcC4gVGhlIG9i
amVjdCBtYWludGFpbnMgYSBsaXN0IG9mIGxheWVycyB3aGljaAorICAgICAgICBoYXZlIHBvdGVu
dGlhbGx5IGRpcnR5IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nIHZhbHVlcyBhbmQgdXBkYXRl
cworICAgICAgICB0aGVtIHdoZW4gc2FmZS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9v
dmVyZmxvdy9hdXRvLW9wdC1pbi1keW5hbWljLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4
dERlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9yU3RhY2tp
bmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVySWZOZWVkZWRB
ZnRlclN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGVhbkRl
c2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVOZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3Jv
bGxhYmxlQXJlYVNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgIChSZW5kZXJMYXllcik6CisKIDIwMTMtMDMtMDEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbU3R5bGVzXSBJbXBs
ZW1lbnQgbmF2aWdhdGlvbiB0byBVSSBsb2NhdGlvbnMgb2YgcHJvcGVydHkgbmFtZXMvdmFsdWVz
IGluIHRoZSBzb3VyY2UgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBlN2M5NWNiNzMyNjg2NzYxYmU5NDcxNWJlNjZiNDA2NDdjNDk4OTQ4Li45NTE1OGQxMjVh
MTcyOTQ2YTgxNjRhYTQ1ODczZDIwZDE1NjY1MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMzU2LDYgKzM1Niw4IEBAIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVG
cm9tU3R5bGUoKQogICAgICAgICAgICAgaWYgKCFzX2hhZE92ZXJmbG93Q2xpcCkKICAgICAgICAg
ICAgICAgICAvLyBFcmFzZSB0aGUgb3ZlcmZsb3cKICAgICAgICAgICAgICAgICByZXBhaW50KCk7
CisgICAgICAgICAgICBpZiAobGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBsYXllcigpLT5ib3hI
YXNPdmVyZmxvd0NsaXBFbmFibGVkKCk7CiAgICAgICAgICAgICBzZXRIYXNPdmVyZmxvd0NsaXAo
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDhhMGUwYzY3OGViOGI4NzJhOTNmZjczZTQ5YTBmM2UyMWExOTA5NjMuLmEwYzZk
NzQ5Mzc4NzhlZDQ1YzYwMTA1MTU2NGNkZjkyYTQ4ZjM4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIFJlbmRlckxheWVyOjpS
ZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1faGFz
T3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQogICAgICwgbV9uZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcoZmFsc2UpCiAgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlcihmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3Vz
SW5TdGFja2luZ09yZGVyRGlydHkodHJ1ZSkKICAgICAsIG1faXNSb290TGF5ZXIocmVuZGVyZXIt
PmlzUmVuZGVyVmlldygpKQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5KGZhbHNlKQogICAgICwg
bV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24oZmFsc2UpCkBAIC0xOTMsNiArMTk0LDcgQEAgUmVu
ZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVyKQog
ICAgICwgbV9yZWZsZWN0aW9uKDApCiAgICAgLCBtX3Njcm9sbENvcm5lcigwKQogICAgICwgbV9y
ZXNpemVyKDApCisgICAgLCBtX25leHRMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nKDApCiAgICAgLCBtX2VuY2xvc2luZ1BhZ2luYXRpb25MYXllcigwKQogewogICAgIG1faXNO
b3JtYWxGbG93T25seSA9IHNob3VsZEJlTm9ybWFsRmxvd09ubHkoKTsKQEAgLTYxNSw3ICs2MTcs
NyBAQCBib29sIFJlbmRlckxheWVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxFbmFibGVkKCkgY29uc3QKIC8vICBBbmQgd2Ugd291bGQgY29uY2x1ZGUgdGhhdCBDIGNv
dWxkIGJlIHByb21vdGVkLgogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVD
b250aWd1b3VzSW5TdGFja2luZ09yZGVyKCkKIHsKLSAgICBpZiAoIWlzU3RhY2tpbmdDb250ZXh0
KCkgfHwgIWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSkK
KyAgICBpZiAoIW1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkg
fHwgIWlzU3RhY2tpbmdDb250ZXh0KCkgfHwgIWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX25v
cm1hbEZsb3dMaXN0RGlydHkpOwpAQCAtNjU1LDYgKzY1Nyw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiAgICAgaW50
IGNvdW50ID0gMDsKICAgICBib29sIGZpcnN0SXRlcmF0aW9uID0gdHJ1ZTsKICAgICB1cGRhdGVE
ZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUobG9va3VwLCBt
aW5JbmRleCwgbWF4SW5kZXgsIGNvdW50LCBmaXJzdEl0ZXJhdGlvbik7CisKKyAgICBtX2Rlc2Nl
bmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5ID0gZmFsc2U7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlclJlY3Vyc2l2ZShjb25zdCBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgaW50PiYgbG9v
a3VwLCBpbnQmIG1pbkluZGV4LCBpbnQmIG1heEluZGV4LCBpbnQmIGNvdW50LCBib29sIGZpcnN0
SXRlcmF0aW9uKQpAQCAtNjkzLDYgKzY5Nyw0NCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVE
ZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29uc3QgSAog
ICAgIH0KIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4
dERlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCit7CisgICAgUmVuZGVy
TGF5ZXIqIGNvbnRhaW5lciA9IHN0YWNraW5nQ29udGFpbmVyKCk7CisgICAgaWYgKGNvbnRhaW5l
cikKKyAgICAgICAgY29udGFpbmVyLT5tX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tp
bmdPcmRlckRpcnR5ID0gdHJ1ZTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6b3ZlcmZsb3dEaWRD
aGFuZ2UoKQoreworICAgIGRpcnR5QW5jZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0Fy
ZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6Y2hl
Y2tJZk92ZXJmbG93Q2hhbmdlZEFmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKQoreworICAgIC8vIE92ZXJmbG93IGlzIGEgYm94IGNvbmNlcHQuCisgICAgUmVuZGVy
Qm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBpZiAoIWJveCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRU92ZXJmbG93IG92ZXJmbG93WCA9IGJveC0+c3R5bGUoKS0+b3ZlcmZsb3dYKCk7Cisg
ICAgRU92ZXJmbG93IG92ZXJmbG93WSA9IGJveC0+c3R5bGUoKS0+b3ZlcmZsb3dZKCk7CisKKyAg
ICBib29sIG92ZXJmbG93WEhhc0NoYW5nZWQgPSBvdmVyZmxvd1ggPT0gT1NDUk9MTCAmJiAoIW9s
ZFN0eWxlIHx8IG9sZFN0eWxlLT5vdmVyZmxvd1goKSAhPSBPU0NST0xMKTsKKyAgICBib29sIG92
ZXJmbG93WUhhc0NoYW5nZWQgPSBvdmVyZmxvd1kgPT0gT1NDUk9MTCAmJiAoIW9sZFN0eWxlIHx8
IG9sZFN0eWxlLT5vdmVyZmxvd1koKSAhPSBPU0NST0xMKTsKKyAgICBpZiAob3ZlcmZsb3dYSGFz
Q2hhbmdlZCB8fCBvdmVyZmxvd1lIYXNDaGFuZ2VkKQorICAgICAgICBvdmVyZmxvd0RpZENoYW5n
ZSgpOworfQorCit2b2lkIFJlbmRlckxheWVyOjpjbGVhbkRlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlcigpCit7CisgICAgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lciA9IHN0YWNr
aW5nQ29udGFpbmVyKCk7CisgICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluZXItPm1fZGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgJiYgYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKSB7CisgICAgICAgIGNvbnRhaW5lci0+
dXBkYXRlWk9yZGVyTGlzdHMoKTsKKyAgICAgICAgY29udGFpbmVyLT51cGRhdGVOb3JtYWxGbG93
TGlzdCgpOworICAgICAgICBjb250YWluZXItPnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlcigpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0
ZVJlcGFpbnRSZWN0cyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBjb25zdCBSZW5kZXJHZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXApCiB7CiAgICAgQVNTRVJU
KCFtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkpOwpAQCAtMTA5OSw3ICsxMTQxLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKEhhc2hTZXQ8Y29u
c3QgUmVuZGVyT2JqZWN0Kj4qIG8KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICAgICAgaWYgKG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkKLSAg
ICAgICAgICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAgICAgICAgICAg
U2NvcGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcih0aGlzKTsKICNlbmRpZgogICAg
ICAgICBtX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50RGlydHkgPSBmYWxzZTsKICAg
ICB9CkBAIC0xNjkyLDYgKzE3MzQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjphZGRDaGlsZChSZW5k
ZXJMYXllciogY2hpbGQsIFJlbmRlckxheWVyKiBiZWZvcmVDaGlsZCkKICAgICAgICAgLy8gY2Fz
ZSB3aGVyZSB3ZSdyZSBidWlsZGluZyB1cCBnZW5lcmF0ZWQgY29udGVudCBsYXllcnMuIFRoaXMg
aXMgb2ssIHNpbmNlIHRoZSBsaXN0cyB3aWxsIHN0YXJ0CiAgICAgICAgIC8vIG9mZiBkaXJ0eSBp
biB0aGF0IGNhc2UgYW55d2F5LgogICAgICAgICBjaGlsZC0+ZGlydHlTdGFja2luZ0NvbnRhaW5l
clpPcmRlckxpc3RzKCk7CisgICAgICAgIGNoaWxkLT5kaXJ0eUFuY2VzdG9yU3RhY2tpbmdDb250
ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAgICAgfQogCiAg
ICAgY2hpbGQtPnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwpAQCAtMTczNCw2ICsx
Nzc3LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpyZW1vdmVDaGlsZChSZW5kZXJMYXll
ciogb2xkQ2hpbGQpCiAgICAgICAgIC8vIHJlYXR0YWNobWVudCBwcm9jZXNzIGluIHJlbW92ZU9u
bHlUaGlzTGF5ZXIsIHRoZSBsYXllciBtYXkgYWxyZWFkeSBiZSBkaXNjb25uZWN0ZWQKICAgICAg
ICAgLy8gZnJvbSB0aGUgbWFpbiBsYXllciB0cmVlLCBzbyB3ZSBuZWVkIHRvIG51bGwtY2hlY2sg
dGhlIHxzdGFja2luZ0NvbnRhaW5lcnwgdmFsdWUuCiAgICAgICAgIG9sZENoaWxkLT5kaXJ0eVN0
YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAgICAgICAgb2xkQ2hpbGQtPmRpcnR5QW5j
ZXN0b3JTdGFja2luZ0NvbnRleHREZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXIoKTsKICAgICB9CiAKICAgICBpZiAoKG9sZENoaWxkLT5yZW5kZXJlcigpICYmIG9sZENoaWxk
LT5yZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgfHwgb2xkQ2hpbGQtPmhhc091
dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCkpCkBAIC0xOTc1LDYgKzIwMTksNyBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKQogICAgIGlmICgh
ZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEodGhpcykpCiAg
ICAgICAgIG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gZmFsc2U7CiAgICAgZWxzZSB7Cisg
ICAgICAgIGNsZWFuRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAg
ICAgICAgIGJvb2wgZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xsaW5nID0gYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpCiAgICAgICAgICAgICAmJiBjYW5CZVN0
YWNraW5nQ29udGFpbmVyKCkKICAgICAgICAgICAgICYmICFoYXNPdXRPZkZsb3dQb3NpdGlvbmVk
RGVzY2VuZGFudCgpOwpAQCAtNTcwNCw3ICs1NzQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29s
bGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlv
cgogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewotICAg
IGJvb2wgc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVy
ID0gaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFs
Rmxvd0xpc3REaXJ0eSk7CisgICAgYm9vbCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXIgPSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxFbmFibGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0Rp
cnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSkgJiYgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXJEaXJ0eTsKICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVw
ZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAKQEAgLTU5MTUsNiArNTk2MCw4IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTCiAgICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKICAgICAgICAgICAg
IGRpcnR5Wk9yZGVyTGlzdHMoKTsKICAgICB9CisKKyAgICBkaXJ0eUFuY2VzdG9yU3RhY2tpbmdD
b250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiB9CiAKIHN0
YXRpYyBib29sIG92ZXJmbG93UmVxdWlyZXNTY3JvbGxiYXIoRU92ZXJmbG93IG92ZXJmbG93KQpA
QCAtNjA1Miw2ICs2MDk5LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogICAgIHVwZGF0ZU9yUmVt
b3ZlRmlsdGVyQ2xpZW50cygpOwogI2VuZGlmCiAKKyAgICBjaGVja0lmT3ZlcmZsb3dDaGFuZ2Vk
QWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAgICAgaWYgKGNv
bXBvc2l0b3IoKS0+dXBkYXRlTGF5ZXJDb21wb3NpdGluZ1N0YXRlKHRoaXMpKQpAQCAtNjA5Mywx
MiArNjE0MiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxhYmxlQXJlYVNldChi
b29sIGhhc092ZXJmbG93KQogICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0g
ZnJhbWUtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBpc1Zpc2libGVUb0hpdFRlc3QgJj0gb3du
ZXItPnJlbmRlcmVyKCkgJiYgb3duZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3Rpbmco
KTsKIAotICAgIGlmIChoYXNPdmVyZmxvdyAmJiBpc1Zpc2libGVUb0hpdFRlc3QgPyBmcmFtZVZp
ZXctPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpIDogZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxl
QXJlYSh0aGlzKSkKKyAgICBpZiAoaGFzT3ZlcmZsb3cgJiYgaXNWaXNpYmxlVG9IaXRUZXN0ID8g
ZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKSA6IGZyYW1lVmlldy0+cmVtb3ZlU2Ny
b2xsYWJsZUFyZWEodGhpcykpIHsKKyAgICAgICAgZGlydHlBbmNlc3RvclN0YWNraW5nQ29udGV4
dERlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm47CiAjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggMzlmMTBjMzA4YzY5N2QzM2MxMGQyMzZkMGU1ZDk3ZWZk
ODQ5NWQ5Yi4uNjMyOTU5M2NlMWMwNWQ0ZGJjM2M1MDE0YmYyZDllYTQzNzliZjA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTgzNSw2ICs4MzUsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7
IHJldHVybiByZW5kZXJlcigpLT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKTsgfQogCisg
ICAgdm9pZCBkaXJ0eUFuY2VzdG9yU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1
b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgdm9pZCBib3hIYXNPdmVyZmxvd0NsaXBFbmFibGVk
KCkgeyBkaXJ0eUFuY2VzdG9yU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHNBcmVDb250aWd1b3Vz
SW5TdGFja2luZ09yZGVyKCk7IH0KKwogcHJpdmF0ZToKICAgICBlbnVtIENvbGxlY3RMYXllcnNC
ZWhhdmlvciB7IFN0b3BBdFN0YWNraW5nQ29udGV4dHMsIFN0b3BBdFN0YWNraW5nQ29udGFpbmVy
cyB9OwogCkBAIC04NTUsNiArODU4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOwogICAgIHZvaWQg
dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKGNv
bnN0IEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+JiwgaW50JiBtaW5JbmRleCwgaW50
JiBtYXhJbmRleCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlvbik7CisgICAgdm9pZCBv
dmVyZmxvd0RpZENoYW5nZSgpOworICAgIHZvaWQgY2hlY2tJZk92ZXJmbG93Q2hhbmdlZEFmdGVy
U3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2b2lkIGNsZWFu
RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAKICAgICB2b2lkIGNv
bXB1dGVSZXBhaW50UmVjdHMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgY29uc3QgUmVuZGVyR2VvbWV0cnlNYXAqID0gMCk7CiAgICAgdm9pZCBjb21wdXRl
UmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKQEAgLTg3OCw2ICs4ODQsNTMgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAK
KyAgICAvLyBSQUlJIG9iamVjdCB1c2VkIHRvIGRlbGF5IGNhbGxpbmcgdXBkYXRlTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nIHVudGlsCisgICAgLy8gaXQncyByZWFsbHkgbmVjZXNzYXJ5LiBUaGlz
IG1haW50YWlucyBhIGxpc3Qgb2YgbGF5ZXJzIHdobyBuZWVkIHRvIGNhbGwKKyAgICAvLyB1cGRh
dGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBhdCB0aGVpciBlbmNsb3Npbmcgc3RhY2tpbmcg
Y29udGV4dC4KKyAgICAvLyBXaGVuIGl0J3Mgc2FmZSAoaWUsIHdoZW4gdGhlIG9yaWdpbmFsIFJB
SUkgb2JqZWN0IGZvciB0aGUgZmlyc3QgaXRlbSBpbgorICAgIC8vIHRoZSBsaXN0IGlzIGRlc3Ry
dWN0ZWQpLCB3ZSBjYWxsIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpIG9uIHRoZQor
ICAgIC8vIHdob2xlIGxpc3QuCisgICAgY2xhc3MgU2NvcGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWROZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVyKFJlbmRlckxheWVyKiBsYXllcikKKyAgICAgICAgICAgIDogbV9lbmNs
b3NpbmdTdGFja2luZ0NvbnRleHQoMCkKKyAgICAgICAgICAgICwgbV9zaG91bGRDbGVhblVwZGF0
ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZ0xpc3RPbkRlc3RydWN0aW9uKGZhbHNlKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dCA9IGxheWVyOworICAg
ICAgICAgICAgd2hpbGUgKG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0ICYmICFtX2VuY2xvc2lu
Z1N0YWNraW5nQ29udGV4dC0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICBt
X2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dCA9IG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0LT5w
YXJlbnQoKTsKKyAgICAgICAgICAgIGlmIChtX2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dCAmJiBt
X2VuY2xvc2luZ1N0YWNraW5nQ29udGV4dC0+bV9uZXh0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZykgeworICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxp
c3Qgb2YgbGF5ZXJzIHdhaXRpbmcgdG8gYmUgdXBkYXRlZCwganVzdAorICAgICAgICAgICAgICAg
IC8vIGFkZCBvdXJzZWxmIHRvIHRoZSBsaXN0LgorICAgICAgICAgICAgICAgIGxheWVyLT5tX25l
eHRMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gbV9lbmNsb3NpbmdTdGFj
a2luZ0NvbnRleHQtPm1fbmV4dExheWVyVG9VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmc7
CisgICAgICAgICAgICAgICAgbV9lbmNsb3NpbmdTdGFja2luZ0NvbnRleHQtPm1fbmV4dExheWVy
VG9VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSBsYXllcjsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9lbmNsb3NpbmdTdGFja2luZ0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAv
LyBTdGFydCBhIGxpc3Qgb2YgbGF5ZXJzIHRvIHVwZGF0ZS4KKyAgICAgICAgICAgICAgICBtX2Vu
Y2xvc2luZ1N0YWNraW5nQ29udGV4dC0+bV9uZXh0TGF5ZXJUb1VwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZyA9IGxheWVyOworICAgICAgICAgICAgICAgIG1fc2hvdWxkQ2xlYW5VcGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdMaXN0T25EZXN0cnVjdGlvbiA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlTmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICB+U2NvcGVkTmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nVXBkYXRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Nob3VsZENs
ZWFuVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nTGlzdE9uRGVzdHJ1Y3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gbV9lbmNsb3NpbmdTdGFj
a2luZ0NvbnRleHQtPm1fbmV4dExheWVyVG9VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmc7
CisgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRMYXllcikgeworICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJMYXllciogbmV4dExheWVyID0gY3VycmVudExheWVyLT5tX25leHRMYXllclRv
VXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nOworICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50TGF5ZXItPm1fbmV4dExheWVyVG9VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSAw
OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGF5ZXItPnVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGF5ZXIgPSBuZXh0TGF5
ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fZW5jbG9zaW5nU3RhY2tp
bmdDb250ZXh0LT5tX25leHRMYXllclRvVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0g
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVu
ZGVyTGF5ZXIqIG1fZW5jbG9zaW5nU3RhY2tpbmdDb250ZXh0OworICAgICAgICBib29sIG1fc2hv
dWxkQ2xlYW5VcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdMaXN0T25EZXN0cnVjdGlvbjsK
KyAgICB9OworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBjaGFuZ2VkLgog
ICAgIGJvb2wgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogCkBAIC0xMTU2LDYgKzEyMDksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gZGVzY2VuZGFudHMgaW4gc3RhY2tpbmcgb3JkZXIuIFRoaXMgaXMg
b25lIG9mIHRoZSByZXF1aXJlbWVudHMgb2YgYmVpbmcKICAgICAvLyBhYmxlIHRvIHNhZmVseSBi
ZWNvbWUgYSBzdGFja2luZyBjb250ZXh0LgogICAgIGJvb2wgbV9kZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXIgOiAxOworICAgIGJvb2wgbV9kZXNjZW5kYW50c0FyZUNvbnRp
Z3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0eSA6IDE7CiAKICAgICBjb25zdCBib29sIG1faXNSb290
TGF5ZXIgOiAxOwogCkBAIC0xMjYxLDYgKzEzMTUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
U2Nyb2xsYmFyUGFydCogbV9zY3JvbGxDb3JuZXI7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCog
bV9yZXNpemVyOwogCisgICAgUmVuZGVyTGF5ZXIqIG1fbmV4dExheWVyVG9VcGRhdGVOZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmc7CisKICAgICAvLyBQb2ludGVyIHRvIHRoZSBlbmNsb3NpbmcgUmVu
ZGVyTGF5ZXIgdGhhdCBjYXVzZWQgdXMgdG8gYmUgcGFnaW5hdGVkLiBJdCBpcyAwIGlmIHdlIGFy
ZSBub3QgcGFnaW5hdGVkLgogICAgIFJlbmRlckxheWVyKiBtX2VuY2xvc2luZ1BhZ2luYXRpb25M
YXllcjsKIApAQCAtMTI4Miw2ICsxMzM4LDcgQEAgaW5saW5lIHZvaWQgUmVuZGVyTGF5ZXI6OmNs
ZWFyWk9yZGVyTGlzdHMoKQogCiBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlWk9yZGVy
TGlzdHMoKQogeworICAgIFNjb3BlZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgdXBk
YXRlcih0aGlzKTsKICAgICBpZiAoIW1fek9yZGVyTGlzdHNEaXJ0eSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODQ4ODY4MGU0MzdkM2VlZTJkNjZlOTQ0Yjc5ODAxNTljNjYwNWIzZS4uNzRk
OGQ4Y2Q5MWI5MDY1NDczNTkxOGJkNWY2NzI0NDcyNmQ4NjBlYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEzLTAzLTA0ICBHbGVubiBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgRWFybHkgb3V0IG9mIFJlbmRlckxheWVyOjp1cGRhdGVDYW5CZVN0YWNraW5n
Q29udGFpbmVyIG1vcmUgb2Z0ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0IGZvcgorICAgICAgICBt
X2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBpbiBvcmRlciB0byBhdm9p
ZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMgY2F1c2VkIGEgcG90ZW50
aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgdXBkYXRlWk9yZGVyTGlz
dHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCksIHNvIHdlIGFsc28KKyAg
ICAgICAgaW50cm9kdWNlIGEgU2NvcGVkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBS
QUlJIG9iamVjdCB0byBjYWxsCisgICAgICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
ZygpIG9ubHkgd2hlbiBpdCByZWFsbHkgbmVlZHMgdG8gYmUgdG8KKyAgICAgICAgYXZvaWQgYSBy
ZWN1cnNpdmUgbG9vcC4gVGhlIG9iamVjdCBtYWludGFpbnMgYSBsaXN0IG9mIGxheWVycyB3aGlj
aAorICAgICAgICBoYXZlIHBvdGVudGlhbGx5IGRpcnR5IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nIHZhbHVlcyBhbmQgdXBkYXRlcworICAgICAgICB0aGVtIHdoZW4gc2FmZS4KKworICAgICAg
ICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2F1dG8tb3B0LWluLWR5bmFtaWMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvLW9wdC1pbi1keW5h
bWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3BsYXRm
b3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZsb3cvYXV0
by1vcHQtaW4tZHluYW1pYy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZsb3cvYXV0by1v
cHQtaW4tZHluYW1pYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEzLTAzLTAxICBUYWthc2hp
IFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGNocm9taXVtIGdhcmRlbmluZywgdXBkYXRlIGltYWdlIGV4cGVjdGF0aW9uIGFnYWluCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9w
dC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1p
bnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRkYzI5MTU2NTA1NDkyZGJkZGY4NjdkMTllZjI5MDc5OWQzYWQ5ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRp
Y2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitpdGVyYXRpb24gMDogUEFTUywgZG9lcyBub3Qg
aGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiAyOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMzogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDQ6IFBB
U1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiA2OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA3
OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gODogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gOTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDEwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRp
b24gMTE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDEyOiBQQVNTLCBoYXMgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
MTQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE1OiBQQVNTLCBoYXMgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiAxNjogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTc6
IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxODogUEFTUywgZG9l
cyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE5OiBQQVNTLCBoYXMgbGF5ZXIgdHJl
ZS4KK2l0ZXJhdGlvbiAyMDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjE6IFBB
U1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIyOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4K
K2l0ZXJhdGlvbiAyMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjQ6IFBBU1Ms
IGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI1OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMjY6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0
ZXJhdGlvbiAyNzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjg6IFBBU1MsIGhh
cyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI5OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJh
dGlvbiAzMDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzE6IFBBU1MsIGhhcyBs
YXllciB0cmVlLgoraXRlcmF0aW9uIDMyOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlv
biAzMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzQ6IFBBU1MsIGhhcyBsYXll
ciB0cmVlLgoraXRlcmF0aW9uIDM1OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMzY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDM3OiBQQVNTLCBo
YXMgbGF5ZXIgdHJlZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1z
dHlsZS1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9t
YXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODI3ZDZlMGNiMGJmNTE2NjhkYzgzOGM4MzE3ZmFkYThlMjIzOTIw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1
dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hh
bmdlLmh0bWwKQEAgLTAsMCArMSwxNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgPHN0eWxlPgorICAgICNwcmVkZWNlc3NvciB7CisgICAgICB3aWR0aDogNzBweDsKKyAg
ICAgIGhlaWdodDogNzBweDsKKyAgICAgIGxlZnQ6IDI1cHg7CisgICAgICB0b3A6IDI1cHg7Cisg
ICAgICB6LWluZGV4OiAyOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9CisKKyAgICAjY29u
dGFpbmVyIHsKKyAgICAgIHdpZHRoOiA1MDBweDsKKyAgICAgIGhlaWdodDogNTAwcHg7CisgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgfQorCisgICAgI2NvbnRlbnQgeworICAgICAgd2lk
dGg6IDFweDsKKyAgICAgIGhlaWdodDogMXB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0KKworICAgICNjb250ZW50UHJl
ZGVjZXNzb3IgeworICAgICAgei1pbmRleDogMzsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
aGVpZ2h0OiA1MHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorCisgICAgI2NvbnRl
bnRTdWNjZXNzb3IgeworICAgICAgd2lkdGg6IDEwMDBweDsKKyAgICAgIGhlaWdodDogMTAwMHB4
OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgICBkaXNwbGF5OiBub25lOworICAgIH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIHZhciBkZWJ1ZyA9
IGZhbHNlOworCisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKTsKKyAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50
Jyk7CisgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWlu
ZXInKTsKKyAgICB2YXIgY29udGVudFByZWRlY2Vzc29yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRlbnRQcmVkZWNlc3NvcicpOworICAgIHZhciBjb250ZW50U3VjY2Vzc29yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRTdWNjZXNzb3InKTsKKworCisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKHRydWUp
OworCisgICAgZnVuY3Rpb24gd3JpdGVSZXN1bHQoaXRlcmF0aW9uLCBleHBlY3RlZFJlc3VsdCkK
KyAgICB7CisgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKwor
ICAgICAgaWYgKGRlYnVnKQorICAgICAgICB3cml0ZURlYnVnKGl0ZXJhdGlvbik7CisKKyAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gIml0ZXJhdGlvbiAiICsgaXRlcmF0aW9uICsgIjogIjsKKwor
ICAgICAgdmFyIGhhc0xheWVyVHJlZSA9ICEhd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1Rl
eHQoZG9jdW1lbnQpOworICAgICAgaWYgKGhhc0xheWVyVHJlZSA9PT0gZXhwZWN0ZWRSZXN1bHQp
CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBBU1MsICI7CisgICAgICBlbHNlCisgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZBSUwsICI7CisKKyAgICAgIGlmIChoYXNMYXllclRy
ZWUpCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gImhhcyBsYXllciB0cmVlLlxuIjsKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiZG9lcyBub3QgaGF2ZSBsYXll
ciB0cmVlLlxuIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3cml0ZURlYnVnKGl0ZXJhdGlvbikK
KyAgICB7CisgICAgICB2YXIgZWxlbWVudHMgPSBbY29udGFpbmVyLCBjb250ZW50UHJlZGVjZXNz
b3IsIGNvbnRlbnQsIGNvbnRlbnRTdWNjZXNzb3JdOworCisgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZWxlbWVu
dHNbaV07CisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVt
ZW50KTsKKworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJpdGVyYXRpb24gIiArIGl0ZXJh
dGlvbiArICI6XG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdGVsZW1lbnQ6ICIg
KyBlbGVtZW50LmlkICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRoZWln
aHQ6ICIgKyBjb21wdXRlZFN0eWxlLmhlaWdodCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5l
clRleHQgKz0gIlx0d2lkdGg6ICIgKyBjb21wdXRlZFN0eWxlLndpZHRoICsgIlxuIjsKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRvdmVyZmxvd1g6ICIgKyBjb21wdXRlZFN0eWxlLm92
ZXJmbG93WCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0b3ZlcmZsb3dZ
OiAiICsgY29tcHV0ZWRTdHlsZS5vdmVyZmxvd1kgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9ICJcdGRpc3BsYXk6ICIgKyBjb21wdXRlZFN0eWxlLmRpc3BsYXkgKyAiXG4iOwor
ICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdHpJbmRleDogIiArIGNvbXB1dGVkU3R5bGUu
ekluZGV4ICsgIlxuIjsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQor
ICAgIHsKKyAgICAgIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsK
KyAgICAgIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpOworICAg
ICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAg
ICAgY29udGVudFByZWRlY2Vzc29yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRQ
cmVkZWNlc3NvcicpOworICAgICAgY29udGVudFN1Y2Nlc3NvciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250ZW50U3VjY2Vzc29yJyk7CisKKyAgICAgIHZhciBjb3VudCA9IDA7CisKKyAg
ICAgIHdyaXRlUmVzdWx0KGNvdW50KyssIGZhbHNlKTsKKworICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAyOyBpKyspIHsKKyAgICAgICAgY29udGVudC5zdHlsZS5oZWlnaHQgPSBpID8gJzEwMDBw
eCcgOiAnMXB4JzsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAg
ICAgICBjb250ZW50LnN0eWxlLndpZHRoID0gaiA/ICcxMDAwcHgnIDogJzFweCc7CisgICAgICAg
ICAgZm9yICh2YXIgayA9IDA7IGsgPCAyOyBrKyspIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5z
dHlsZS5vdmVyZmxvd1ggPSBrID8gJ3Njcm9sbCcgOiAndmlzaWJsZSc7CisgICAgICAgICAgICBm
b3IgKHZhciBtID0gMDsgbSA8IDI7IG0rKykgeworICAgICAgICAgICAgICBjb250YWluZXIuc3R5
bGUub3ZlcmZsb3dZID0gbSA/ICdzY3JvbGwnIDogJ3Zpc2libGUnOworICAgICAgICAgICAgICBm
b3IgKHZhciBuID0gMDsgbiA8IDI7IG4rKykgeworICAgICAgICAgICAgICAgIGNvbnRlbnRTdWNj
ZXNzb3Iuc3R5bGUuZGlzcGxheSA9IG4gPyAnYmxvY2snIDogJ25vbmUnOworCisgICAgICAgICAg
ICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywgISEoKGkgfHwgaiB8fCBuKSAmJiAoayB8fCBtKSkp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9CisKKyAgICAgIGNvbnRlbnQuc3R5bGUuaGVpZ2h0ID0gJzEwMDBweCc7CisgICAg
ICBjb250ZW50LnN0eWxlLndpZHRoID0gJzEwMDBweCc7CisgICAgICBjb250YWluZXIuc3R5bGUu
b3ZlcmZsb3dYID0gJ3Njcm9sbCc7CisgICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0g
J3Njcm9sbCc7CisgICAgICBjb250ZW50U3VjY2Vzc29yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CisgICAgICBwcmVkZWNlc3Nvci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKKworICAgICAgd3Jp
dGVSZXN1bHQoY291bnQrKywgdHJ1ZSk7CisKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsg
aSsrKSB7CisgICAgICAgIGNvbnRlbnRQcmVkZWNlc3Nvci5zdHlsZS5kaXNwbGF5ID0gaSA/ICdu
b25lJyA6ICdibG9jayc7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMjsgaisrKSB7Cisg
ICAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IGogPyAnYXV0bycgOiAnMSc7CisKKyAg
ICAgICAgICB3cml0ZVJlc3VsdChjb3VudCsrLCBpICE9PSAwIHx8IGogIT09IDEpOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBkb1Rlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2
IGlkPSJwcmVkZWNlc3NvciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRp
diBpZD0iY29udGVudFByZWRlY2Vzc29yIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250ZW50Ij48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250ZW50U3VjY2Vzc29yIj48L2Rpdj4KKyAgPC9kaXY+Cisg
IDxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3Jv
bGxpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGlu
Zy1hZnRlci1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGluZy9vdmVyZmxvdy9hdXRvbWF0
aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRkYzI5MTU2NTA1NDkyZGJkZGY4NjdkMTllZjI5MDc5
OWQzYWQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1v
cHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzkgQEAKK2l0ZXJhdGlvbiAwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgor
aXRlcmF0aW9uIDI6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAz
OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gNDogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gNTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDc6IFBBU1Ms
IGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA4OiBQQVNTLCBoYXMgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiA5OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMTA6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMTog
UEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTI6IFBBU1MsIGhhcyBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDEzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNDogUEFT
UywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTU6IFBBU1MsIGhhcyBsYXllciB0cmVlLgor
aXRlcmF0aW9uIDE2OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNzogUEFTUywg
ZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE4OiBQQVNTLCBkb2VzIG5vdCBo
YXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDIwOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMTogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0
aW9uIDIzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNDogUEFTUywgaGFzIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMjU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4K
K2l0ZXJhdGlvbiAyNjogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDI3OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyODogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMjk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMw
OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMTogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMzI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMzOiBQ
QVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNDogUEFTUywgaGFzIGxheWVyIHRyZWUu
CitpdGVyYXRpb24gMzU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlv
biAzNjogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzc6IFBBU1MsIGhhcyBsYXll
ciB0cmVlLgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196242</attachid>
            <date>2013-04-02 15:37:14 -0700</date>
            <delta_ts>2013-04-02 15:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130402183705.patch</filename>
            <type>text/plain</type>
            <size>49970</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEyOTEyNjg2NmI0YTZm
YzU4NGIzMjVjOWNlYzE2N2YwZjc0NGZjZi4uYzE0NGI5OTAzNTcxYjQ3NGFkMGZkNGRmZjQ4NzI5
OWNiNTM5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNC0wMiAgSWFu
IFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2Yg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAg
ICAgICAgTm90ZTogVGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5
IEdsZW5uIEhhcnRtYW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0
IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBp
biBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMg
Y2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAg
dXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCks
IHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgUkFJSSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0
ZWRTY3JvbGxpbmcoKSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBU
aGlzIGhhcyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1
cyB0bworICAgICAgICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8g
YSBzdHlsZSBjaGFuZ2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhh
dCBzaG91bGRuJ3QgYmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAg
IEl0IGFsc28gbGV0cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5
ZXIuIElmIHdlCisgICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xl
IGxheWVyLCBvbmx5IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0
ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAgIFdlIGNyZWF0ZSBhIFNjb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIGluc3RhbmNlIGhlcmUgdG8KKyAgICAgICAgcG9zdHBv
bmUgdXBkYXRlcyB1bnRpbCBhZnRlciBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAgIEluaXRpYWxpemVzIHRoZSBuZXcgZGlydHkg
Yml0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAg
ICAgICAgQ2FuY2VscyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlzIGxheWVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MpOgor
ICAgICAgICAgIE1ha2VzIHVzZSBvZiB0aGUgbmV3IGRpcnR5IGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQpOgorICAgICAgICAgIEFkZGVkIGZvciBj
b3JyZWN0bmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAgIFRo
ZXNlIGZ1bmN0aW9ucyBub3cgc2NoZWR1bGUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIHNldHRpbmcgb2YgbmVlZHMgY29tcG9zaXRlZCBzY3JvbGxpbmcgKHNlZSBi
ZWxvdykuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0TmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKToKKyAgICAgICAgICBUaGlzIHdhcyByZWZhY3RvcmVkIG91dCBvZiB1cGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5T
dGFja2luZ09yZGVyKToKKyAgICAgICAgICBTY2hlZHVsZXMgYW4gdXBkYXRlIHRoYXQgd2lsbCBi
ZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkgaWYgbm8gb3RoZXIKKyAgICAgICAgICBpbnN0YW5jZSBv
ZiB0aGUgUkFJSSBvYmplY3QgaXMgYWxpdmUgZm9yIHRoaXMgcmVuZGVyIHZpZXcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMpOgorICAgICAgICAgIENsZWFycyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlz
IGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXI6OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjp+U2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIpOgorICAgICAgICAgIFBlcmZvcm1zIHRoZSBkZWxheWVkIHVwZGF0ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
clNjcm9sbCk6CisgICAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAg
ICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0
ZUxheWVyQm91bmRzKToKKyAgICAgICAgICBUaGVzZSBub3cgY3JlYXRlIGEgc2NvcGVkIHVwZGF0
ZXIgdG8gcHJldmVudCBwcmVtYXR1cmUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKToKKyAgICAgICAgICBEaXJ0aWVzIG1fZGVzY2VuZGFu
dHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyIGFuZCBzY2hlZHVsZXMKKyAgICAgICAgICB1
cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250
YWluZXJaT3JkZXJMaXN0cyk6CisgICAgICAgICAgQW55IGNoYW5nZSB0aGF0IGNvdWxkIGFmZmVj
dCBvdXIgc3RhY2tpbmcgY29udGFpbmVyJ3Mgei1vcmRlciBsaXN0IGNvdWxkCisgICAgICAgICAg
Y2F1c2Ugb3RoZXIgUmVuZGVyTGF5ZXJzIGluIG91ciBzdGFja2luZyBjb250ZXh0IHRvIGVpdGhl
ciBvcHQgaW4gb3Igb3V0CisgICAgICAgICAgb2YgY29tcG9zaXRlZCBzY3JvbGxpbmcuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIG1ha2Ugb3VyIHN0YWNraW5nCisgICAgICAgICAgY29udGV4dCBh
d2FyZSBvZiB0aGVzZSB6LW9yZGVyIGNoYW5nZXMgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgICB1cGRhdGluZyBjYW4gaGFwcGVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgICAgV2Ugbm93IGNoZWNrIHRo
ZSBkaXJ0eSBiaXQgYmVmb3JlIGRvaW5nIGNvbnRpZ3VpdHkgdXBkYXRlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHlsZUNoYW5nZSk6Cisg
ICAgICAgICAgUmVmYWN0b3JlZCB0aGUgdmlzaWJpbGl0eSBzdHVmZiBvdXQgb2YgdXBkYXRlU3Rh
Y2tpbmdDb250ZXh0cy4uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU3Rh
Y2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAgIFJlZmFjdG9yZWQgYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0QW5jZXN0b3JDaGFpbkhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFu
dFN0YXR1cyk6CisgICAgICAgICAgRGlydHkgYml0IG1hbmFnZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgICAg
U2NoZWR1bGVzIHVwZGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVD
aGFuZ2VkKToKKyAgICAgICAgICBSZW1vdmVkIGRlYWQgdW5uZWNlc3NhcnkgY29kZSBhbmQgYWRk
ZWQgY2FsbCB0bworICAgICAgICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQpOgor
ICAgICAgICAgIFNjaGVkdWxlcyB1cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9z
aXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENv
bnRlbnQpOgorICAgICAgICAgIFRoZXNlIGNvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgUkFJ
SSBvYmplY3QgdG8gcHJvdGVjdCBhZ2FpbnN0CisgICAgICAgICAgcHJlbWF0dXJlIHVwZGF0ZXMu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKToKKyAgICAgICAgICBUaGUg
cmVuZGVyIHZpZXcgaXMgdGhlIG93bmVyIG9mIHRoZSBwZW5kaW5nIHVwZGF0ZXMuCisKIDIwMTMt
MDQtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzE1MDAwOGNkNWJh
ZDJhNTcwNDcyNTlkMzc2ZDM5MjVhYTFmZmYwYS4uMDNmZjBmYjdmZjkxMTNhMWI5YjVjNWIyZTdl
OGZiM2I5ZWRmOTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUsNiArMTM1LDcg
QEAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xOTQ3LDYgKzE5
NDgsMTEgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIC8vIFVwZGF0ZXMgc2NoZWR1bGVkIGR1cmluZyBzdHlsZSB1cGRhdGUgZGVw
ZW5kIG9uIHZhbHVlcyB0aGF0CisgICAgLy8gYXJlIG5vdCBhdmFpbGFibGUgdW50aWwgYWZ0ZXIg
bGF5b3V0LiBUaGlzIGVuc3VyZXMgdGhhdCB1cGRhdGVzCisgICAgLy8gYXJlIG9ubHkgcHJvY2Vz
c2VkIHdoZW4gdGhleSBjYW4gc3VjY2VlZC4KKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMocmVuZGVyVmlldygpKTsK
KwogICAgIGlmIChFbGVtZW50KiBvZSA9IG93bmVyRWxlbWVudCgpKQogICAgICAgICBvZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDE5ODU0ZDBjM2I1MmQ5ODgzMmI1MThmZWJiZDQyODRhMzk5MDVlZTQu
LjY4YzljZWIwODAwZWJjMjQ4MTBhNjI4ZTMyMzU4Njk5YjQ4NTg1MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTU2LDYgKzE1Niw3IEBAIFJlbmRlckxh
eWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAs
IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQogICAgICwgbV9u
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoZmFsc2UpCiAgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29u
dGlndW91c0luU3RhY2tpbmdPcmRlcihmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkodHJ1ZSkKICAgICAsIG1faXNSb290TGF5ZXIocmVu
ZGVyZXItPmlzUmVuZGVyVmlldygpKQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5KGZhbHNlKQog
ICAgICwgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24oZmFsc2UpCkBAIC0yNjEsNiArMjYyLDcg
QEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgY2xlYXJCYWNraW5nKHRydWUpOworICAgIGNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CiAjZW5kaWYKICAgICAKICAgICBpZiAobV9zY3Jv
bGxDb3JuZXIpCkBAIC02MTgsNyArNjIwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNvbnN0CiAvLyAgQW5kIHdl
IHdvdWxkIGNvbmNsdWRlIHRoYXQgQyBjb3VsZCBiZSBwcm9tb3RlZC4KIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiB7Ci0g
ICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCisgICAgaWYgKCFtX2Rlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlckRpcnR5IHx8ICFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKQEAgLTY1OCw2ICs2
NjAsOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKQogICAgIGludCBjb3VudCA9IDA7CiAgICAgYm9vbCBmaXJzdEl0ZXJh
dGlvbiA9IHRydWU7CiAgICAgdXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyUmVjdXJzaXZlKGxvb2t1cCwgbWluSW5kZXgsIG1heEluZGV4LCBjb3VudCwgZmlyc3RJ
dGVyYXRpb24pOworCisgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXJEaXJ0eSA9IGZhbHNlOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50
c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29uc3QgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIGludD4mIGxvb2t1cCwgaW50JiBtaW5JbmRleCwgaW50JiBtYXhJbmRl
eCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlvbikKQEAgLTY5MSw3ICs2OTUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXJSZWN1cnNpdmUoY29uc3QgSAogICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlciA9IG5ld1ZhbHVlOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICAgICAgaWYgKGRpZFVwZGF0ZSkKLSAgICAgICAgICAgIHVwZGF0ZU5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZygpOworICAgICAgICAgICAgc2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTEwNjMsNiArMTA2Nyw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgp
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFzaFNl
dDxjb25zdCBSZW5kZXJPYmplY3QqPiogb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdCbG9j
a3MpCiB7CiAgICAgaWYgKG1fdmlzaWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSB8fCBtX2hhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudERpcnR5IHx8IG1faGFzT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnREaXJ0eSkgeworICAgICAgICBjb25zdCBib29sIGhhZFZpc2libGVEZXNjZW5k
YW50ID0gbV9oYXNWaXNpYmxlRGVzY2VuZGFudDsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQ7CisKICAgICAgICAgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAg
ICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAgICBtX2hh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50ID0gZmFsc2U7CkBAIC0xMDg0LDcgKzEwOTEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFz
aFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogbwogCiAgICAgICAgICAgICBib29sIGhhc1Zpc2li
bGVEZXNjZW5kYW50ID0gY2hpbGQtPm1faGFzVmlzaWJsZUNvbnRlbnQgfHwgY2hpbGQtPm1faGFz
VmlzaWJsZURlc2NlbmRhbnQ7CiAgICAgICAgICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVy
RGVzY2VuZGFudCA9IGNoaWxkLT5pc1NlbGZQYWludGluZ0xheWVyKCkgfHwgY2hpbGQtPmhhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpOwotICAgICAgICAgICAgYm9vbCBoYXNPdXRPZkZs
b3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9ICFjaGlsZE91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWlu
aW5nQmxvY2tzLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRp
b25lZERlc2NlbmRhbnQgPSAhY2hpbGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nr
cy5pc0VtcHR5KCkgfHwgY2hpbGQtPmhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCk7
CiAKICAgICAgICAgICAgIG1faGFzVmlzaWJsZURlc2NlbmRhbnQgfD0gaGFzVmlzaWJsZURlc2Nl
bmRhbnQ7CiAgICAgICAgICAgICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCB8PSBo
YXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQ7CkBAIC0xMDk5LDE1ICsxMTA2LDE0IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNv
bnN0IFJlbmRlck9iamVjdCo+KiBvCiAKICAgICAgICAgbV92aXNpYmxlRGVzY2VuZGFudFN0YXR1
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50
RGlydHkgPSBmYWxzZTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAg
ICAgaWYgKG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkKLSAgICAgICAg
ICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwotI2VuZGlmCiAgICAgICAgIG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA9IGZhbHNlOworCisgICAgICAg
IGlmIChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICE9IGhhZFZpc2libGVEZXNjZW5kYW50IHx8IG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQgIT0gaGFkT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpOwogICAgIH0KIAogICAgIGlmIChtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkp
IHsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRWaXNpYmxlQ29udGVudCA9IG1faGFzVmlzaWJsZUNv
bnRlbnQ7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSkKICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSB0cnVlOwogICAgICAg
ICBlbHNlIHsKQEAgLTExMzUsNiArMTE0MSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURl
c2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+KiBvCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gICAgCiAgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRTdGF0
dXNEaXJ0eSA9IGZhbHNlOyAKKyAgICAgICAgaWYgKGhhZFZpc2libGVDb250ZW50ICE9IG1faGFz
VmlzaWJsZUNvbnRlbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOwogICAgIH0KIH0KIApAQCAtMTMyMSw2ICsxMzI5LDE2IEBAIFJlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBs
YXllcjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHBhcmVudCgpOworICAgIHdoaWxlIChs
YXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIGxheWVyID0gbGF5
ZXItPnBhcmVudCgpOworCisgICAgQVNTRVJUKCFsYXllciB8fCBsYXllci0+aXNTdGFja2luZ0Nv
bnRleHQoKSk7CisgICAgcmV0dXJuIGxheWVyOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
b3NpdGlvbmVkQ29udGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikKIHsKICAgICBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CkBAIC0xNzI1
LDYgKzE3NDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXIqIGNo
aWxkLCBSZW5kZXJMYXllciogYmVmb3JlQ2hpbGQpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgd2Un
cmUgYnVpbGRpbmcgdXAgZ2VuZXJhdGVkIGNvbnRlbnQgbGF5ZXJzLiBUaGlzIGlzIG9rLCBzaW5j
ZSB0aGUgbGlzdHMgd2lsbCBzdGFydAogICAgICAgICAvLyBvZmYgZGlydHkgaW4gdGhhdCBjYXNl
IGFueXdheS4KICAgICAgICAgY2hpbGQtPmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0
cygpOworICAgICAgICBjaGlsZC0+c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIoKTsKKworICAgICAgICAvLyBBZGRpbmcgYW4gb3V0IG9mIGZsb3cg
cG9zaXRpb25lZCBkZXNjZW5kYW50IGNhbiBvbmx5IGFmZmVjdAorICAgICAgICAvLyB0aGUgb3B0
LWluIGRlY2lzaW9uIGZvciBsYXllcnMgYmVuZWF0aCBhbmQgaW5jbHVkaW5nIG91cgorICAgICAg
ICAvLyBjb250YWluaW5nIGJsb2NrLgorICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdC
bG9jayA9IGNoaWxkLT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgZm9y
IChSZW5kZXJMYXllciogbGF5ZXIgPSBjaGlsZDsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVu
dCgpKSB7CisgICAgICAgICAgICBsYXllci0+c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKTsKKyAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKSA9PSBjb250YWlu
aW5nQmxvY2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBjaGlsZC0+dXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CkBAIC0xNzYwLDEzICsx
Nzg5LDIzIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyTGF5
ZXIqIG9sZENoaWxkKQogICAgIGlmIChtX2xhc3QgPT0gb2xkQ2hpbGQpCiAgICAgICAgIG1fbGFz
dCA9IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBvbGRDaGlsZC0+Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXMoKTsKKyNlbmRpZgorCiAgICAgaWYgKG9sZENoaWxkLT5pc05vcm1hbEZsb3dP
bmx5KCkpCiAgICAgICAgIGRpcnR5Tm9ybWFsRmxvd0xpc3QoKTsKLSAgICBpZiAoIW9sZENoaWxk
LT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQoKSkgeyAKKyAgICBp
ZiAoIW9sZENoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQo
KSkgewogICAgICAgICAvLyBEaXJ0eSB0aGUgei1vcmRlciBsaXN0IGluIHdoaWNoIHdlIGFyZSBj
b250YWluZWQuICBXaGVuIGNhbGxlZCB2aWEgdGhlCiAgICAgICAgIC8vIHJlYXR0YWNobWVudCBw
cm9jZXNzIGluIHJlbW92ZU9ubHlUaGlzTGF5ZXIsIHRoZSBsYXllciBtYXkgYWxyZWFkeSBiZSBk
aXNjb25uZWN0ZWQKICAgICAgICAgLy8gZnJvbSB0aGUgbWFpbiBsYXllciB0cmVlLCBzbyB3ZSBu
ZWVkIHRvIG51bGwtY2hlY2sgdGhlIHxzdGFja2luZ0NvbnRhaW5lcnwgdmFsdWUuCiAgICAgICAg
IG9sZENoaWxkLT5kaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAgICAgICAg
c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKTsK
KworICAgICAgICAvLyBUaGlzIGNvdWxkIGFmZmVjdCB3aGV0aGVyIG9yIG5vdCBhIGxheWVyIGhh
cyBhbiBvdXQgb2YgZmxvdworICAgICAgICAvLyBwb3NpdGlvbmVkIGRlc2NlbmRhbnQgc28gd2Ug
bmVlZCB0byBzY2hlZHVsZSBzb21lIHVwZGF0ZXMuCisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIq
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAg
ICAgbGF5ZXItPnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAgICAg
fQogCiAgICAgaWYgKChvbGRDaGlsZC0+cmVuZGVyZXIoKSAmJiBvbGRDaGlsZC0+cmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHx8IG9sZENoaWxkLT5oYXNPdXRPZkZsb3dQb3Np
dGlvbmVkRGVzY2VuZGFudCgpKQpAQCAtMTc3NSw3ICsxODE0LDcgQEAgUmVuZGVyTGF5ZXIqIFJl
bmRlckxheWVyOjpyZW1vdmVDaGlsZChSZW5kZXJMYXllciogb2xkQ2hpbGQpCiAgICAgb2xkQ2hp
bGQtPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICBvbGRDaGlsZC0+c2V0TmV4dFNpYmxpbmco
MCk7CiAgICAgb2xkQ2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICAKKwogICAgIG9sZENoaWxkLT51
cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKICAgICBpZiAob2xkQ2hpbGQtPm1faGFz
VmlzaWJsZUNvbnRlbnQgfHwgb2xkQ2hpbGQtPm1faGFzVmlzaWJsZURlc2NlbmRhbnQpCiAgICAg
ICAgIGRpcnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCk7CkBAIC0xOTk5
LDQwICsyMDM4LDEyOCBAQCBib29sIFJlbmRlckxheWVyOjpuZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSBjb25zdAogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKQogewotICAgIGJvb2wgb2xkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gbV9uZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcg
PSBmYWxzZTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygp
LT5mcmFtZVZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT5jb250YWlu
c1Njcm9sbGFibGVBcmVhKHRoaXMpKQotICAgICAgICBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
ZyA9IGZhbHNlOwotICAgIGVsc2UgeworICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5j
b250YWluc1Njcm9sbGFibGVBcmVhKHRoaXMpKSB7CisgICAgICAgIHVwZGF0ZURlc2NlbmRhbnRE
ZXBlbmRlbnRGbGFncygpOworCiAgICAgICAgIGJvb2wgZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xs
aW5nID0gYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpCiAg
ICAgICAgICAgICAmJiBjYW5CZVN0YWNraW5nQ29udGFpbmVyKCkKICAgICAgICAgICAgICYmICFo
YXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgpOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOworICAgICAgICBuZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOwogI2Vsc2UKLSAgICAgICAgbV9uZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgICAg
IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IGZvcmNlVXNlQ29tcG9zaXRlZFNjcm9sbGluZzsK
ICNlbmRpZgotICAgICAgICAvLyBXZSBnYXRoZXIgYSBib29sZWFuIHZhbHVlIGZvciB1c2Ugd2l0
aCBHb29nbGUgVU1BIGhpc3RvZ3JhbXMgdG8KLSAgICAgICAgLy8gcXVhbnRpZnkgdGhlIGFjdHVh
bCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGluZyB0bwotICAgICAgICAvLyBy
ZWxheCBjb21wb3NpdGVkIHNjcm9sbGluZyByZXF1aXJlbWVudHMsIHRoZXJlYnkgaW5jcmVhc2lu
ZyB0aGUKLSAgICAgICAgLy8gbnVtYmVyIG9mIGNvbXBvc2l0ZWQgb3ZlcmZsb3cgZGl2cy4KLSAg
ICAgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQo
KSkKLSAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJS
ZW5kZXJlci5OZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmciLCBtX25lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAgICAgfQogCi0gICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyAh
PSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewotICAgICAgICB1cGRhdGVTZWxmUGFpbnRp
bmdMYXllcigpOwotICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQotICAgICAgICAg
ICAgZGlydHlaT3JkZXJMaXN0cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhclpP
cmRlckxpc3RzKCk7CisgICAgc2V0TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKG5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZyk7Cit9CiAKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRl
ckxpc3RzKCk7Cit2b2lkIFJlbmRlckxheWVyOjpzZXROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmco
Ym9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCit7CisgICAgLy8gV2UgZ2F0aGVyIGEgYm9v
bGVhbiB2YWx1ZSBmb3IgdXNlIHdpdGggR29vZ2xlIFVNQSBoaXN0b2dyYW1zIHRvCisgICAgLy8g
cXVhbnRpZnkgdGhlIGFjdHVhbCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGlu
ZyB0bworICAgIC8vIHJlbGF4IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIHJlcXVpcmVtZW50cywgdGhl
cmVieSBpbmNyZWFzaW5nIHRoZQorICAgIC8vIG51bWJlciBvZiBjb21wb3NpdGVkIG92ZXJmbG93
IGRpdnMuCisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVu
YWJsZWQoKSkKKyAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24o
IlJlbmRlcmVyLk5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyIsIG5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2YWx1YXRlQ29t
cG9zaXRpbmdBZnRlckxheW91dCgpOwotICAgICAgICBjb21wb3NpdG9yKCktPnNldENvbXBvc2l0
aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsKKyAgICBpZiAobV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPT0gbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZzsKKwor
ICAgIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgaWYgKGlzU3RhY2tpbmdDb250YWlu
ZXIoKSkKKyAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworICAgIGVsc2UKKyAgICAgICAgY2xl
YXJaT3JkZXJMaXN0cygpOworCisgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3Rz
KCk7CisKKyAgICBjb21wb3NpdG9yKCktPnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0Fm
dGVyTGF5b3V0KCk7CisgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRS
ZWJ1aWxkKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkKK3sKKyAgICBpZiAoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92
ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcih0aGlzLCBVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOworfQorCit2b2lk
IFJlbmRlckxheWVyOjpzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlcigpCit7CisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbEVuYWJsZWQoKSkKKyAgICAgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXIodGhpcywgVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKTsK
K30KKwordm9pZCBSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+
dmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW5kZXJlcigpLT52aWV3KCktPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLnJlbW92ZShjb25zdF9jYXN0PFJlbmRlckxh
eWVyKj4odGhpcykpOworICAgIHJlbmRlcmVyKCktPnZpZXcoKS0+cGVuZGluZ0NvbnRpZ3VpdHlV
cGRhdGVzKCkucmVtb3ZlKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKSk7Cit9CisKK1Nj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcihSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorICAgIDogbV9yZW5kZXJWaWV3KHJlbmRl
clZpZXcpCit7CisgICAgaWYgKG1fcmVuZGVyVmlldykKKyAgICAgICAgbV9yZW5kZXJWaWV3LT5z
Y29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCgpKys7Cit9CisKK1Njb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRl
cihSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVNb2RlIG1vZGUp
CisgICAgOiBtX3JlbmRlclZpZXcoMCkKK3sKKyAgICBpZiAoIWxheWVyIHx8ICFsYXllci0+cmVu
ZGVyZXIoKS0+dmlldygpIHx8ICFsYXllci0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclZpZXcg
PSBsYXllci0+cmVuZGVyZXIoKS0+dmlldygpOworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJzQ291bnQoKSsrOworCisgICAgaWYgKG1vZGUgPT0gVXBk
YXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICBtX3JlbmRlclZpZXctPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLmFkZChsYXllcik7CisgICAgZWxzZSBpZiAo
bW9kZSA9PSBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpCisg
ICAgICAgIG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCkuYWRkKGxheWVy
KTsKK30KKworU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXI6On5TY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlcigpCit7CisgICAgaWYgKCFtX3JlbmRlclZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXJzQ291bnQoKS0tOworICAgIEFTU0VSVChtX3JlbmRlclZpZXctPnNjb3BlZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkgPj0gMCk7CisgICAgaWYgKCFtX3JlbmRlclZpZXct
PnNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkpIHsKKyAgICAgICAgSGFz
aFNldDxSZW5kZXJMYXllcio+IHBlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyA9IG1f
cmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CisgICAgICAg
IG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkuY2xlYXIo
KTsKKworICAgICAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gcGVuZGluZ0NvbnRpZ3VpdHlVcGRh
dGVzID0gbV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKTsKKyAgICAgICAg
bV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKS5jbGVhcigpOworCisgICAg
ICAgIGlmICghcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IHN0YWNraW5nQ29udGV4dHM7CisgICAgICAgICAgICBm
b3IgKEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXRlciA9IHBlbmRpbmdDb250aWd1
aXR5VXBkYXRlcy5iZWdpbigpOyBpdGVyICE9IHBlbmRpbmdDb250aWd1aXR5VXBkYXRlcy5lbmQo
KTsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4
dCA9ICppdGVyOworICAgICAgICAgICAgICAgIHdoaWxlIChzdGFja2luZ0NvbnRleHQgJiYgIXN0
YWNraW5nQ29udGV4dC0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
c3RhY2tpbmdDb250ZXh0ID0gc3RhY2tpbmdDb250ZXh0LT5wYXJlbnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc3RhY2tpbmdDb250ZXh0KQorICAgICAgICAgICAgICAgICAgICBzdGFja2luZ0Nv
bnRleHRzLmFkZChzdGFja2luZ0NvbnRleHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yIChIYXNoU2V0PFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBzdGFja2luZ0NvbnRl
eHRzLmJlZ2luKCk7IGl0ZXIgIT0gc3RhY2tpbmdDb250ZXh0cy5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisgICAg
ICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBl
bmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IGZvciAoSGFzaFNldDxSZW5kZXJMYXllcio+OjppdGVyYXRvciBpdGVyID0gcGVuZGluZ0NvbXBv
c2l0ZWRTY3JvbGxpbmdVcGRhdGVzLmJlZ2luKCk7IGl0ZXIgIT0gcGVuZGluZ0NvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVzLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgKCppdGVyKS0+
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAj
ZW5kaWYKQEAgLTIzMzMsNyArMjQ2MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBv
c2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKQogICAgICAgICAvLyByZXBvc2l0aW9uaW5nLCBzbyB1
cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGZyb20gdGhlcmUuCiAgICAgICAgIGlmIChSZW5kZXJM
YXllciogY29tcG9zaXRpbmdBbmNlc3RvciA9IHN0YWNraW5nQ29udGFpbmVyKCktPmVuY2xvc2lu
Z0NvbXBvc2l0aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3IoKS0+Y29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXAoKSkgewotICAgICAgICAgICAgICAgIGlmICh1c2VzQ29t
cG9zaXRlZFNjcm9sbGluZygpICYmICFoYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgp
KQorICAgICAgICAgICAgICAgIGlmICh1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKQogICAgICAg
ICAgICAgICAgICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBv
c2l0aW5nVXBkYXRlT25Db21wb3NpdGVkU2Nyb2xsLCBjb21wb3NpdGluZ0FuY2VzdG9yKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+dXBk
YXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVPblNjcm9sbCwgY29tcG9zaXRp
bmdBbmNlc3Rvcik7CkBAIC0zMTc5LDEyICszMzA2LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKIAogICAgIGlmIChvcmlnaW5hbFNjcm9sbE9mZnNl
dCAhPSBzY3JvbGxPZmZzZXQoKSkKICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKEludFBvaW50KHNjcm9sbE9mZnNldCgpKSk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgLy8gQ29tcG9zaXRlZCBzY3JvbGxpbmcgbWF5IG5lZWQgdG8gYmUgZW5h
YmxlZCBvciBkaXNhYmxlZCBpZiB0aGUgYW1vdW50IG9mIG92ZXJmbG93IGNoYW5nZWQuCi0gICAg
aWYgKHJlbmRlcmVyKCktPnZpZXcoKSAmJiBjb21wb3NpdG9yKCktPnVwZGF0ZUxheWVyQ29tcG9z
aXRpbmdTdGF0ZSh0aGlzKSkKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xh
eWVyc05lZWRSZWJ1aWxkKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6b3ZlcmZs
b3dDb250cm9sc0ludGVyc2VjdFJlY3QoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdApA
QCAtMzkxMSw2ICs0MDMyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQKICAgICBpZiAoIWhh
c1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKHJlbmRlcmVyKCktPnZp
ZXcoKSk7CisjZW5kaWYKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIodGhpcyk7CiAjZW5kaWYKQEAgLTUzNzMsNiArNTQ5
Nyw5IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zCiAgICAgCiAgICAgQVNTRVJUKGlzU3RhY2tp
bmdDb250YWluZXIoKSB8fCAoIXBvc1pPcmRlckxpc3QoKSB8fCAhcG9zWk9yZGVyTGlzdCgpLT5z
aXplKCkpKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBTY29wZWRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXModGhpcy0+cmVuZGVyZXIoKS0+dmlldygpKTsKKyNlbmRpZgogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9j
YXN0PFJlbmRlckxheWVyKj4odGhpcykpOwogI2VuZGlmCkBAIC01NjExLDYgKzU3MzgsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKCkKICAgICBtX3pPcmRlckxpc3RzRGly
dHkgPSB0cnVlOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fZGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgPSB0cnVlOworICAgIHNj
aGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAg
Y29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgICAg
IGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCkBA
IC01NjIxLDkgKzU3NTAsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlaT3JkZXJMaXN0cygp
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygp
CiB7Ci0gICAgUmVuZGVyTGF5ZXIqIHNjID0gc3RhY2tpbmdDb250YWluZXIoKTsKLSAgICBpZiAo
c2MpCi0gICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgUmVuZGVyTGF5ZXIqIHN0
YWNraW5nQ29udGFpbmVyID0gdGhpcy0+c3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBpZiAoc3Rh
Y2tpbmdDb250YWluZXIpCisgICAgICAgIHN0YWNraW5nQ29udGFpbmVyLT5kaXJ0eVpPcmRlckxp
c3RzKCk7CisKKyAgICAvLyBBbnkgY2hhbmdlIHRoYXQgY291bGQgYWZmZWN0IG91ciBzdGFja2lu
ZyBjb250YWluZXIncyB6LW9yZGVyIGxpc3QgY291bGQKKyAgICAvLyBjYXVzZSBvdGhlciBSZW5k
ZXJMYXllcnMgaW4gb3VyIHN0YWNraW5nIGNvbnRleHQgdG8gZWl0aGVyIG9wdCBpbiBvciBvdXQK
KyAgICAvLyBvZiBjb21wb3NpdGVkIHNjcm9sbGluZy4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ug
bWFrZSBvdXIgc3RhY2tpbmcKKyAgICAvLyBjb250ZXh0IGF3YXJlIG9mIHRoZXNlIHotb3JkZXIg
Y2hhbmdlcyBzbyB0aGUgYXBwcm9wcmlhdGUgdXBkYXRpbmcgY2FuCisgICAgLy8gaGFwcGVuLgor
ICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRleHQgPSB0aGlzLT5zdGFja2luZ0NvbnRleHQo
KTsKKyAgICBpZiAoc3RhY2tpbmdDb250ZXh0ICYmIHN0YWNraW5nQ29udGV4dCAhPSBzdGFja2lu
Z0NvbnRhaW5lcikKKyAgICAgICAgc3RhY2tpbmdDb250ZXh0LT5kaXJ0eVpPcmRlckxpc3RzKCk7
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5Tm9ybWFsRmxvd0xpc3QoKQpAQCAtNTc0Miw3
ICs1ODgwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVI
aWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvcgogCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewotICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAm
JiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgYm9v
bCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgJiYgaXNTdGFj
a2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3RE
aXJ0eSkgJiYgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0eTsK
ICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAK
QEAgLTU5MzAsMjggKzYwNjgsNDAgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNWaXN1YWxseU5vbkVt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBpZiAoIW9sZFN0eWxlKQot
ICAgICAgICByZXR1cm47CisgICAgRVZpc2liaWxpdHkgb2xkVmlzaWJpbGl0eSA9IFZJU0lCTEU7
CisgICAgaWYgKG9sZFN0eWxlKQorICAgICAgICBvbGRWaXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZp
c2liaWxpdHkoKTsKIAotICAgIGJvb2wgd2FzU3RhY2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0Nv
bnRleHQob2xkU3R5bGUpOwotICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQgPSB0aGlzLT5pc1N0
YWNraW5nQ29udGV4dCgpOwotICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCAhPSB3YXNTdGFja2lu
Z0NvbnRleHQpIHsKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCk7
Ci0gICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKLSAgICAgICAgICAgIGRpcnR5Wk9yZGVy
TGlzdHMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXJaT3JkZXJMaXN0cygpOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKG9sZFZpc2liaWxpdHkgIT0gcmVuZGVyZXIoKS0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpKSB7CisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0g
dGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAgICAgbGF5ZXIt
PnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgfQorfQorCit2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTdGFja2luZ0NvbnRleHRzQWZ0ZXJTdHlsZUNoYW5nZShj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgYm9vbCB3YXNTdGFja2luZ0NvbnRl
eHQgPSBmYWxzZTsKKyAgICBFVmlzaWJpbGl0eSBvbGRWaXNpYmlsaXR5ID0gVklTSUJMRTsKKyAg
ICBpbnQgb2xkWkluZGV4ID0gMDsKKyAgICBpZiAob2xkU3R5bGUpIHsKKyAgICAgICAgd2FzU3Rh
Y2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0NvbnRleHQob2xkU3R5bGUpOworICAgICAgICBvbGRW
aXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZpc2liaWxpdHkoKTsKKyAgICAgICAgb2xkWkluZGV4ID0g
b2xkU3R5bGUtPnpJbmRleCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW5kZXJMYXllciBh
bHJlYWR5IGhhbmRsZXMgdmlzaWJpbGl0eSBjaGFuZ2VzIHRocm91Z2ggb3VyIHZpc2libGl0eSBk
aXJ0eSBiaXRzLiBUaGlzIGxvZ2ljIGNvdWxkCiAgICAgLy8gbGlrZWx5IGJlIGZvbGRlZCBhbG9u
ZyB3aXRoIHRoZSByZXN0LgotICAgIGlmIChvbGRTdHlsZS0+ekluZGV4KCkgIT0gcmVuZGVyZXIo
KS0+c3R5bGUoKS0+ekluZGV4KCkgfHwgb2xkU3R5bGUtPnZpc2liaWxpdHkoKSAhPSByZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkpIHsKKyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0
ID0gdGhpcy0+aXNTdGFja2luZ0NvbnRleHQoKTsKKyAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQg
IT0gd2FzU3RhY2tpbmdDb250ZXh0CisgICAgICAgIHx8IG9sZFZpc2liaWxpdHkgIT0gcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpCisgICAgICAgIHx8IG9sZFpJbmRleCAhPSByZW5k
ZXJlcigpLT5zdHlsZSgpLT56SW5kZXgoKSkgewogICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGFp
bmVyWk9yZGVyTGlzdHMoKTsKLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KQorICAgICAg
ICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQogICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVhclpPcmRlckxpc3RzKCk7CiAgICAg
fQogfQogCkBAIC02MDA4LDE5ICs2MTU4LDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2Vz
dG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudChSZW5kZXJPYmplY3QqCiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBsYXllci0+bV9oYXNPdXRPZkZsb3dQb3NpdGlv
bmVkRGVzY2VuZGFudERpcnR5ID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxv
d1Bvc2l0aW9uZWREZXNjZW5kYW50ID0gdHJ1ZTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgICAgIGxheWVyLT51cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsK
LSNlbmRpZgorICAgICAgICBpZiAobGF5ZXItPm1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobGF5ZXItPnJlbmRl
cmVyKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkgPT0gY29udGFpbmluZ0Jsb2NrKQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5k
YW50ID0gdHJ1ZTsKKyAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyhm
YWxzZSk7CiAgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5I
YXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1cygpCiB7Ci0gICAgbV9oYXNPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ID0gdHJ1ZTsKKyAgICBpZiAobV9oYXNPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCkgeworICAgICAgICBtX2hhc091dE9mRmxvd1Bvc2l0
aW9uZWREZXNjZW5kYW50RGlydHkgPSB0cnVlOworICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZygpOworICAgIH0KICAgICBpZiAocGFyZW50KCkpCiAgICAgICAg
IHBhcmVudCgpLT5kaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2Vu
ZGFudFN0YXR1cygpOwogfQpAQCAtNjAyOCwxMiArNjE3OSwxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1
cygpCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBib29sIHdhc091dE9mRmxvd1Bvc2l0aW9uZWQg
PSBvbGRTdHlsZSAmJiAob2xkU3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8
fCBvbGRTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKLSAgICBpZiAocGFyZW50
KCkgJiYgKChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSAhPSB3YXNPdXRPZkZsb3dQb3NpdGlvbmVkKSkgewotICAgICAgICBwYXJlbnQoKS0+ZGlydHlB
bmNlc3RvckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIGlmICghcmVuZGVyZXIoKS0+
ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpICYmIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbEVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0U2hvdWxk
UmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsKLSNlbmRpZgorICAgIGJvb2wgaXNP
dXRPZkZsb3dQb3NpdGlvbmVkID0gcmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7
CisgICAgaWYgKHBhcmVudCgpICYmIGlzT3V0T2ZGbG93UG9zaXRpb25lZCAhPSB3YXNPdXRPZkZs
b3dQb3NpdGlvbmVkKSB7CisgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQpCisgICAg
ICAgICAgICBwYXJlbnQoKS0+c2V0QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWRE
ZXNjZW5kYW50KHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcGFyZW50KCktPmRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0
aW9uZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgfQogfQogCkBAIC02MDc0LDYgKzYyMjUsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpCiAKICAgICB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNo
YW5nZShvbGRTdHlsZSk7CiAgICAgdXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFu
Z2Uob2xkU3R5bGUpOworICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlKG9sZFN0
eWxlKTsKICAgICAvLyBPdmVybGF5IHNjcm9sbGJhcnMgY2FuIG1ha2UgdGhpcyBsYXllciBzZWxm
LXBhaW50aW5nIHNvIHdlIG5lZWQKICAgICAvLyB0byByZWNvbXB1dGUgdGhlIGJpdCBvbmNlIHNj
cm9sbGJhcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgICAgdXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIo
KTsKQEAgLTYxMDcsOCArNjI1OSw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKICNlbmRpZgogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOwotCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlID0gcmVuZGVy
ZXIoKS0+c3R5bGUoKTsKICAgICBpZiAoY29tcG9zaXRvcigpLT51cGRhdGVMYXllckNvbXBvc2l0
aW5nU3RhdGUodGhpcykKICAgICAgICAgfHwgbmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRG
b3JDbGlwKG9sZFN0eWxlLCBuZXdTdHlsZSkKQEAgLTYxNDUsMTIgKzYyOTUsMTQgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoYm9vbCBoYXNPdmVyZmxvdykKICAg
ICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGZyYW1lLT5vd25lckVsZW1lbnQo
KSkKICAgICAgICAgaXNWaXNpYmxlVG9IaXRUZXN0ICY9IG93bmVyLT5yZW5kZXJlcigpICYmIG93
bmVyLT5yZW5kZXJlcigpLT52aXNpYmxlVG9IaXRUZXN0aW5nKCk7CiAKLSAgICBpZiAoaGFzT3Zl
cmZsb3cgJiYgaXNWaXNpYmxlVG9IaXRUZXN0ID8gZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJl
YSh0aGlzKSA6IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcykpCi0jaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgorICAgIGJvb2wgdXBk
YXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZmFsc2U7CisgICAgaWYgKGhhc092ZXJmbG93ICYmIGlz
VmlzaWJsZVRvSGl0VGVzdCkKKyAgICAgICAgdXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZnJh
bWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHVwZGF0
ZWRTY3JvbGxhYmxlQXJlYVNldCA9IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhp
cyk7CisKKyAgICBpZiAodXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0KQorICAgICAgICBzY2hlZHVs
ZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCiB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCmluZGV4IDVlMWM4YzlmODdiYWY0ZjQwMzZhOWYxZTc5OWFlY2IzYTZhYjk5NjAuLjZj
MzExZjczYzVhOTMyMGJhYWJkMjVkNDI1MjYyMGFhOGE3ZTQ3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMTUsOSArMzE1LDI4IEBAIHB1YmxpYzoKIAogdHlw
ZWRlZiBWZWN0b3I8TGF5ZXJGcmFnbWVudCwgMT4gTGF5ZXJGcmFnbWVudHM7CiAKK2VudW0gQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZU1vZGUgeworICAgIFVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZywKKyAgICBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXIKK307CisKKy8vIFRoaXMgUkFJSSBvYmplY3QgYWxsb3dzIHVzIHRvIGF2b2lkIGNhbGxpbmcg
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nCisvLyB3aGlsZSBhbnkgaW5zdGFuY2UgaXMg
aW4gc2NvcGUuIFdoZW4gdGhlIGxhc3QgaW5zdGFuY2UgaXMgZGVzdHJ1Y3RlZCwgYWxsIAorLy8g
dXBkYXRlcyBhcmUgcHJvY2Vzc2VkLiBUaGlzIGFsbG93cyB1cyB0byBwb3N0cG9uZSB1cGRhdGVz
IGR1cmluZyBsYXllciBsaXN0CisvLyB1cGRhdGVzLiAoSWYgd2UgZGlkbid0IHBvc3Rwb25lIHRo
ZSB1cGRhdGVzLCB0aGV5IHdvdWxkIGNhdXNlIGVycm9ycyBzaW5jZQorLy8gdGhleSByZXF1aXJl
IGNsZWFuIGxpc3RzKS4KK3N0cnVjdCBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciB7
CisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIoUmVuZGVyVmlldyopOworICAg
IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKFJlbmRlckxheWVyKiwgQ29tcG9zaXRl
ZFNjcm9sbGluZ1VwZGF0ZU1vZGUpOworICAgIH5TY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBk
YXRlcigpOworcHJpdmF0ZToKKyAgICBSZW5kZXJWaWV3KiBtX3JlbmRlclZpZXc7Cit9OworCiBj
bGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CisgICAgZnJpZW5kIHN0cnVjdCBTY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcjsKIAogICAgIFJlbmRlckxheWVyKFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqKTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKQEAgLTUwNiw2ICs1MjUsMTAgQEAgcHVi
bGljOgogICAgIC8vIGxheWVyIGl0c2VsZi4KICAgICBSZW5kZXJMYXllciogc3RhY2tpbmdDb250
YWluZXIoKSBjb25zdDsKIAorICAgIC8vIEdldHMgdGhlIGVuY2xvc2luZyBzdGFja2luZyBjb250
ZXh0IGZvciB0aGlzIGxheWVyLCBleGNsdWRpbmcgdGhpcworICAgIC8vIGxheWVyIGl0c2VsZi4K
KyAgICBSZW5kZXJMYXllciogc3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7CisKICAgICAvLyBHZXRz
IHRoZSBlbmNsb3Npbmcgc3RhY2tpbmcgY29udGFpbmVyIGZvciB0aGlzIGxheWVyLCBwb3NzaWJs
eSB0aGUgbGF5ZXIKICAgICAvLyBpdHNlbGYsIGlmIGl0IGlzIGEgc3RhY2tpbmcgY29udGFpbmVy
LgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTdGFja2luZ0NvbnRhaW5lcigpIHsgcmV0dXJu
IGlzU3RhY2tpbmdDb250YWluZXIoKSA/IHRoaXMgOiBzdGFja2luZ0NvbnRhaW5lcigpOyB9CkBA
IC04NzksNiArOTAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxh
eW91dCgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOworICAg
IHZvaWQgdXBkYXRlVmlzaWJpbGl0eUFmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKTsKICAgICB2b2lkIHVwZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bGJhcnNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CkBAIC04
ODgsNyArOTEyLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNP
dXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1cygpOwogICAgIHZvaWQgdXBkYXRlT3V0
T2ZGbG93UG9zaXRpb25lZChjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgdXBkYXRlTmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKCk7CisgICAgdm9pZCBzZXROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoYm9vbCk7
CisKKyAgICB2b2lkIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7Cisg
ICAgdm9pZCBzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlcigpOworICAgIHZvaWQgY2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXMoKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpIHsgfQorICAgIHZvaWQgc2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNv
bnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKSB7IH0KKyAgICB2b2lkIGNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkgeyB9CisjZW5kaWYKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgcG9zaXRpb24gY2hhbmdlZC4KICAgICBib29sIHVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKQEAgLTExNjYsNiArMTIwMSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBkZXNjZW5kYW50
cyBpbiBzdGFja2luZyBvcmRlci4gVGhpcyBpcyBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyBvZiBi
ZWluZwogICAgIC8vIGFibGUgdG8gc2FmZWx5IGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQuCiAg
ICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciA6IDE7Cisg
ICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5IDog
MTsKIAogICAgIGNvbnN0IGJvb2wgbV9pc1Jvb3RMYXllciA6IDE7CiAKQEAgLTEyOTIsNiArMTMy
OCwxMCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCiAKIGlu
bGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCiB7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRh
dGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhyZW5kZXJlcigpLT52aWV3KCkp
OworI2VuZGlmCisKICAgICBpZiAoIW1fek9yZGVyTGlzdHNEaXJ0eSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCmluZGV4IDA5ZjIyNTMwZjdlOTI2MThhOTljY2RkZTQ5NTA3ZGY5YjNiYWI0NWIuLmZk
NDJlOGU5MGQ0OTFhMTM1NjhhZWI2NTcwMWU4NWZiOWYzZjRiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC04MjgsNiAr
ODI4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vy
c2l2ZShPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW4KICAgICBib29sIGhhdmVDb21wdXRlZEJv
dW5kcyA9IGZhbHNlOwogICAgIGFkZFRvT3ZlcmxhcE1hcChvdmVybGFwTWFwLCBsYXllciwgYm91
bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOwogCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKG1fcmVuZGVyVmlldyk7
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0
YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgpAQCAtOTI5LDYgKzkzMCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVy
TGF5ZXIqIGFuY2VzdG9yCiAgICAgICAgIGNoaWxkU3RhdGUubV90ZXN0aW5nT3ZlcmxhcCA9IHRy
dWU7CiAgICAgfQogCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgc3VzcGVu
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKG1fcmVuZGVyVmlldyk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxh
eWVyKTsKICNlbmRpZgpAQCAtMTE0NCw2ICsxMTQ2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIFZl
Y3QKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+IGxheWVyQ2hpbGRyZW47CiAgICAgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMaXN0ID0gbGF5ZXJCYWNraW5nID8gbGF5ZXJDaGlsZHJl
biA6IGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdMYXllcjsKIAorICAgIFNjb3BlZENvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhtX3JlbmRl
clZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVj
dG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKQEAgLTEzODQsNiArMTM4Nyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5k
ZXJMYXllciogbGF5ZXIsIGludCBkZXB0CiAjZW5kaWYKICAgICB9CiAKKyAgICBTY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMo
bV9yZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xNDM1LDYgKzE0
MzksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNj
ZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGNvbQogICAgIGlmICghbGF5ZXItPmhhc0NvbXBv
c2l0aW5nRGVzY2VuZGFudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9y
ZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25E
ZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xNDc4LDYgKzE0ODMs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVyKFJl
bmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UgogICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tp
bmdOZWVkc1JlcGFpbnQoKTsKICAgICB9CiAKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0yODk1LDYgKzI5MDEsNyBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyKSBjb25zdAogCiAgICAgY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKS0+dXBk
YXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAzMjE3Mzk2NzI3ZDVjOGNl
N2VmZjUwODE4YzJmNTc0NGQ1ZTg5ZjE3Li5hYmI2OWFiYWUyMGQyY2U4MWVmYzUwY2ZhOGExZjAw
NDRhYjM2NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02
Niw2ICs2Niw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2xheW91dFN0
YXRlKDApCiAgICAgLCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50KDApCisgICAgLCBtX3Njb3Bl
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KDApCiAgICAgLCBtX3JlbmRlclF1b3Rl
SGVhZCgwKQogICAgICwgbV9yZW5kZXJDb3VudGVyQ291bnQoMCkKICAgICAsIG1fbGF5b3V0UGhh
c2UoUmVuZGVyVmlld05vcm1hbExheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCmluZGV4IDNjODRhYWMwY2JlOWQxMWEzYzg1MmE1YzQ3ZThkZDRhZjU1MzQ4YzguLmUyMmZl
NjdmY2I1NzUwM2EyZDk3MDQ3NmNiNzI2ZTczYWEyMjZiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaApAQCAtMjI3LDcgKzIyNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRSZW5kZXJDb3VudGVyKCkgeyBtX3JlbmRlckNvdW50ZXJDb3VudCsrOyB9CiAgICAgdm9pZCBy
ZW1vdmVSZW5kZXJDb3VudGVyKCkgeyBBU1NFUlQobV9yZW5kZXJDb3VudGVyQ291bnQgPiAwKTsg
bV9yZW5kZXJDb3VudGVyQ291bnQtLTsgfQogICAgIGJvb2wgaGFzUmVuZGVyQ291bnRlcnMoKSB7
IHJldHVybiBtX3JlbmRlckNvdW50ZXJDb3VudDsgfQotICAgIAorCisgICAgdW5zaWduZWQmIHNj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkgeyByZXR1cm4gbV9zY29wZWRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudDsgfQorICAgIEhhc2hTZXQ8UmVuZGVyTGF5
ZXIqPiYgcGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkgeyByZXR1cm4gbV9wZW5k
aW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXM7IH0KKyAgICBIYXNoU2V0PFJlbmRlckxheWVy
Kj4mIHBlbmRpbmdDb250aWd1aXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fcGVuZGluZ0NvbnRpZ3Vp
dHlVcGRhdGVzOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBu
ZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwogCiBwcm90
ZWN0ZWQ6CkBAIC0zMzAsNiArMzM0LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXlv
dXRTdGF0ZURpc2FibGVDb3VudDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgT3duUHRyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOworCisgICAgdW5z
aWduZWQgbV9zY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudDsKKyAgICBIYXNo
U2V0PFJlbmRlckxheWVyKj4gbV9wZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXM7Cisg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgT3du
UHRyPEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ+IG1fY3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxNGU0MDNlNWUxZDYyMWUyOGU5MzkxYWIyZjcyNjUxYzRiY2FmYjcwLi5iOGEw
MTk4ZjUwOWJhODM5ZTI1MzhlZWI1NGJmMjg4ZjhlNmMzZjFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTMtMDQtMDIgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgRWFybHkgb3V0IG9mIFJlbmRlckxheWVyOjp1cGRhdGVDYW5CZVN0YWNraW5nQ29udGFp
bmVyIG1vcmUgb2Z0ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTk2NgorCisgICAgICAgIE5vdGU6IFRoaXMgcGF0Y2ggaXMgbW9kaWZpY2F0aW9u
IG9mIGVhcmxpZXIgd29yayBieSBHbGVubiBIYXJ0bWFubi4KKworICAgICAgICBIZXJlIHdlIGlu
dHJvZHVjZSBhIGRpcnR5IGJpdCBmb3IKKyAgICAgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIgaW4gb3JkZXIgdG8gYXZvaWQgcmVjb21wdXRpbmcKKyAgICAgICAg
ZnJlc2ggdmFsdWVzLiBUaGlzIGNhdXNlZCBhIHBvdGVudGlhbCBmb3IgY3ljbGljYWwgZGVwZW5k
ZW5jaWVzIGluCisgICAgICAgIHVwZGF0ZVpPcmRlckxpc3RzKCkgYW5kIHVwZGF0ZURlc2NlbmRh
bnREZXBlbmRlbnRGbGFncygpLCBzbyB3ZSBhbHNvCisgICAgICAgIGludHJvZHVjZSBhIFNjb3Bl
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIFJBSUkgb2JqZWN0IHRvIGNhbGwKKyAgICAgICAg
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgb25seSB3aGVuIGl0IHJlYWxseSBuZWVk
cyB0byBiZS4KKyAgICAgICAgVGhpcyBoYXMgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBiZW5lZml0
cy4gSXQgYWxzbyBhbGxvd3MgdXMgdG8KKyAgICAgICAgcG9zdHBvbmUgdXBkYXRlcyB0aGF0IGFy
ZSBzY2hlZHVsZWQgZHVlIHRvIGEgc3R5bGUgY2hhbmdlIChhZGRpbmcgb3IKKyAgICAgICAgcmVt
b3ZpbmcgYSBjaGlsZCksIHRoYXQgc2hvdWxkbid0IGJlIHByb2Nlc3NlZCB1bnRpbCBsYXlvdXQg
Y29tcGxldGVzLgorICAgICAgICBJdCBhbHNvIGxldHMgdXMgYXZvaWQgcmVkdW5kYW50IHVwZGF0
ZXMgZm9yIHRoZSBzYW1lIGxheWVyLiBJZiB3ZQorICAgICAgICBzY2hlZHVsZSBtdWx0aXBsZSB1
cGRhdGVzIGZvciBhIHNpbmdsZSBsYXllciwgb25seSBvbmUgd2lsbCBiZQorICAgICAgICBwcm9j
ZXNzZWQuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9w
dC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHkt
b3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1z
Y3JvbGxpbmctc3RhdHVzLmh0bWw6CisKIDIwMTMtMDQtMDIgIFRoaWFnbyBNYXJjb3MgUC4gU2Fu
dG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxl
LWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9h
dXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNo
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRkYzI5MTU2NTA1NDkyZGJkZGY4NjdkMTll
ZjI5MDc5OWQzYWQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0
ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitpdGVyYXRpb24g
MDogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE6IFBBU1MsIGRv
ZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyOiBQQVNTLCBkb2VzIG5vdCBoYXZl
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDU6IFBBU1Ms
IGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA2OiBQQVNTLCBoYXMgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiA3OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gODogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gOTogUEFTUywgZG9lcyBu
b3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDEwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMTE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDEyOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMzogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMTQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE1
OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNjogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMTc6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJh
dGlvbiAxODogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE5OiBQ
QVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMDogUEFTUywgaGFzIGxheWVyIHRyZWUu
CitpdGVyYXRpb24gMjE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIyOiBQQVNT
LCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMjQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI1OiBQQVNTLCBk
b2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjY6IFBBU1MsIGRvZXMgbm90IGhh
dmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMjg6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI5OiBQQVNTLCBoYXMg
bGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRp
b24gMzE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMyOiBQQVNTLCBoYXMgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
MzQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDM1OiBQQVNTLCBkb2VzIG5vdCBo
YXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDM3OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVk
LXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmct
YWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhYWFlMmQ4YzY3MGI2N2YwZWM0
MWVlNWRkNDg5MjczMzczZDNjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxp
bmctYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwKQEAgLTAsMCArMSwxNjkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgICNwcmVkZWNlc3NvciB7CisgICAg
ICB3aWR0aDogNzBweDsKKyAgICAgIGhlaWdodDogNzBweDsKKyAgICAgIGxlZnQ6IDI1cHg7Cisg
ICAgICB0b3A6IDI1cHg7CisgICAgICB6LWluZGV4OiAyOworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogcmVkOworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgZGlzcGxheTogbm9uZTsK
KyAgICB9CisKKyAgICAjY29udGFpbmVyIHsKKyAgICAgIHdpZHRoOiA1MDBweDsKKyAgICAgIGhl
aWdodDogNTAwcHg7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgfQorCisgICAgI2Nv
bnRlbnQgeworICAgICAgd2lkdGg6IDFweDsKKyAgICAgIGhlaWdodDogMXB4OworICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0K
KworICAgICNjb250ZW50UHJlZGVjZXNzb3IgeworICAgICAgei1pbmRleDogMzsKKyAgICAgIHdp
ZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiA1MHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IG5vbmU7Cisg
ICAgfQorCisgICAgI2NvbnRlbnRTdWNjZXNzb3IgeworICAgICAgd2lkdGg6IDEwMDBweDsKKyAg
ICAgIGhlaWdodDogMTAwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBkaXNwbGF5OiBub25lOworICAgIH0KKyAgPC9z
dHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgorICAgIHZhciBkZWJ1ZyA9IGZhbHNlOworCisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250ZW50Jyk7CisgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICB2YXIgY29udGVudFByZWRlY2Vzc29yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRQcmVkZWNlc3NvcicpOworICAgIHZhciBjb250
ZW50U3VjY2Vzc29yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRTdWNjZXNzb3In
KTsKKworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KGZhbHNlKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxFbmFibGVkKHRydWUpOworCisgICAgZnVuY3Rpb24gd3JpdGVSZXN1bHQoaXRlcmF0aW9u
LCBleHBlY3RlZFJlc3VsdCkKKyAgICB7CisgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIHJldHVybjsKKworICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKKyAgICAg
IGlmIChkZWJ1ZykKKyAgICAgICAgd3JpdGVEZWJ1ZyhpdGVyYXRpb24pOworCisgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9ICJpdGVyYXRpb24gIiArIGl0ZXJhdGlvbiArICI6ICI7CisKKyAgICAg
IHZhciBoYXNMYXllclRyZWUgPSAhIXdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRv
Y3VtZW50KTsKKyAgICAgIGlmIChoYXNMYXllclRyZWUgPT09IGV4cGVjdGVkUmVzdWx0KQorICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJQQVNTLCAiOworICAgICAgZWxzZQorICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICJGQUlMLCAiOworCisgICAgICBpZiAoaGFzTGF5ZXJUcmVlKQor
ICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJoYXMgbGF5ZXIgdHJlZS5cbiI7CisgICAgICBl
bHNlCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gImRvZXMgbm90IGhhdmUgbGF5ZXIgdHJl
ZS5cbiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVEZWJ1ZyhpdGVyYXRpb24pCisgICAg
eworICAgICAgdmFyIGVsZW1lbnRzID0gW2NvbnRhaW5lciwgY29udGVudFByZWRlY2Vzc29yLCBj
b250ZW50LCBjb250ZW50U3VjY2Vzc29yXTsKKworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
bGVtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZWxlbWVudCA9IGVsZW1lbnRzW2ld
OworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7
CisKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiaXRlcmF0aW9uICIgKyBpdGVyYXRpb24g
KyAiOlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRlbGVtZW50OiAiICsgZWxl
bWVudC5pZCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0aGVpZ2h0OiAi
ICsgY29tcHV0ZWRTdHlsZS5oZWlnaHQgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9ICJcdHdpZHRoOiAiICsgY29tcHV0ZWRTdHlsZS53aWR0aCArICJcbiI7CisgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgKz0gIlx0b3ZlcmZsb3dYOiAiICsgY29tcHV0ZWRTdHlsZS5vdmVyZmxv
d1ggKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdG92ZXJmbG93WTogIiAr
IGNvbXB1dGVkU3R5bGUub3ZlcmZsb3dZICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCArPSAiXHRkaXNwbGF5OiAiICsgY29tcHV0ZWRTdHlsZS5kaXNwbGF5ICsgIlxuIjsKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHR6SW5kZXg6ICIgKyBjb21wdXRlZFN0eWxlLnpJbmRl
eCArICJcbiI7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7
CisgICAgICByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CisgICAg
ICBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsKKyAgICAgIGNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICAgIGNv
bnRlbnRQcmVkZWNlc3NvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50UHJlZGVj
ZXNzb3InKTsKKyAgICAgIGNvbnRlbnRTdWNjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29udGVudFN1Y2Nlc3NvcicpOworCisgICAgICB2YXIgY291bnQgPSAwOworCisgICAgICB3
cml0ZVJlc3VsdChjb3VudCsrLCBmYWxzZSk7CisKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjsgaSsrKSB7CisgICAgICAgIGNvbnRlbnQuc3R5bGUuaGVpZ2h0ID0gaSA/ICcxMDAwcHgnIDog
JzFweCc7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAg
Y29udGVudC5zdHlsZS53aWR0aCA9IGogPyAnMTAwMHB4JyA6ICcxcHgnOworICAgICAgICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgMjsgaysrKSB7CisgICAgICAgICAgICBjb250YWluZXIuc3R5bGUu
b3ZlcmZsb3dYID0gayA/ICdzY3JvbGwnIDogJ3Zpc2libGUnOworICAgICAgICAgICAgZm9yICh2
YXIgbSA9IDA7IG0gPCAyOyBtKyspIHsKKyAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLm92
ZXJmbG93WSA9IG0gPyAnc2Nyb2xsJyA6ICd2aXNpYmxlJzsKKyAgICAgICAgICAgICAgZm9yICh2
YXIgbiA9IDA7IG4gPCAyOyBuKyspIHsKKyAgICAgICAgICAgICAgICBjb250ZW50U3VjY2Vzc29y
LnN0eWxlLmRpc3BsYXkgPSBuID8gJ2Jsb2NrJyA6ICdub25lJzsKKworICAgICAgICAgICAgICAg
IHdyaXRlUmVzdWx0KGNvdW50KyssICEhKChpIHx8IGogfHwgbikgJiYgKGsgfHwgbSkpKTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBjb250ZW50LnN0eWxlLmhlaWdodCA9ICcxMDAwcHgnOworICAgICAgY29u
dGVudC5zdHlsZS53aWR0aCA9ICcxMDAwcHgnOworICAgICAgY29udGFpbmVyLnN0eWxlLm92ZXJm
bG93WCA9ICdzY3JvbGwnOworICAgICAgY29udGFpbmVyLnN0eWxlLm92ZXJmbG93WSA9ICdzY3Jv
bGwnOworICAgICAgY29udGVudFN1Y2Nlc3Nvci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAg
ICAgcHJlZGVjZXNzb3Iuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CisKKyAgICAgIHdyaXRlUmVz
dWx0KGNvdW50KyssIHRydWUpOworCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykg
eworICAgICAgICBjb250ZW50UHJlZGVjZXNzb3Iuc3R5bGUuZGlzcGxheSA9IGkgPyAnbm9uZScg
OiAnYmxvY2snOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDI7IGorKykgeworICAgICAg
ICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBqID8gJ2F1dG8nIDogJzEnOworCisgICAgICAg
ICAgd3JpdGVSZXN1bHQoY291bnQrKywgaSAhPT0gMCB8fCBqICE9PSAxKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9U
ZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBpZD0i
cHJlZGVjZXNzb3IiPjwvZGl2PgorICA8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9
ImNvbnRlbnRQcmVkZWNlc3NvciI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29udGVudCI+PC9kaXY+
CisgICAgPGRpdiBpZD0iY29udGVudFN1Y2Nlc3NvciI+PC9kaXY+CisgIDwvZGl2PgorICA8cHJl
IGlkPSJyZXN1bHQiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5n
LXN0YXR1cy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZHluYW1pYy1j
b21wb3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRtbAppbmRleCA0MGVlYTVmMmQ1MmUxOThjMjI4
YjA1NGE4ZmRjN2Q4YzZiMzFhZGYxLi4yOTJkNzEwZTdlOGFlNWUwYWVmOTU5MDA1YTU4YmQwZGVi
OTQxZmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9keW5h
bWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1zY3JvbGxpbmctc3RhdHVzLmh0
bWwKQEAgLTE2LDE4ICsxNiwyNyBAQAogICA8L3N0eWxlPgogCiAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CiAKICAgICBp
ZiAod2luZG93LmludGVybmFscykKICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCh0cnVlKTsKIAor
ICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLm5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoZG9jdW1lbnQpLmxl
bmd0aCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gZG9U
ZXN0KCkKICAgICB7CiAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Jykuc3R5bGUuaGVpZ2h0ID0gJzEwMDBweCc7
Ci0gICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubm9uRmFzdFNjcm9s
bGFibGVSZWN0cyhkb2N1bWVudCkubGVuZ3RoID8gIkZBSUwiIDogIlBBU1MiOworICAgICAgd2lu
ZG93LnNldFRpbWVvdXQocmVwb3J0UmVzdWx0LCAwKTsKICAgICB9CiAKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196246</attachid>
            <date>2013-04-02 15:58:39 -0700</date>
            <delta_ts>2013-04-02 16:00:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130402185829.patch</filename>
            <type>text/plain</type>
            <size>78324</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEyOTEyNjg2NmI0YTZm
YzU4NGIzMjVjOWNlYzE2N2YwZjc0NGZjZi4uYzE0NGI5OTAzNTcxYjQ3NGFkMGZkNGRmZjQ4NzI5
OWNiNTM5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNC0wMiAgSWFu
IFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2Yg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAg
ICAgICAgTm90ZTogVGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5
IEdsZW5uIEhhcnRtYW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0
IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBp
biBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMg
Y2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAg
dXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCks
IHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgUkFJSSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0
ZWRTY3JvbGxpbmcoKSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBU
aGlzIGhhcyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1
cyB0bworICAgICAgICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8g
YSBzdHlsZSBjaGFuZ2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhh
dCBzaG91bGRuJ3QgYmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAg
IEl0IGFsc28gbGV0cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5
ZXIuIElmIHdlCisgICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xl
IGxheWVyLCBvbmx5IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0
ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAgIFdlIGNyZWF0ZSBhIFNjb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIGluc3RhbmNlIGhlcmUgdG8KKyAgICAgICAgcG9zdHBv
bmUgdXBkYXRlcyB1bnRpbCBhZnRlciBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAgIEluaXRpYWxpemVzIHRoZSBuZXcgZGlydHkg
Yml0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAg
ICAgICAgQ2FuY2VscyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlzIGxheWVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MpOgor
ICAgICAgICAgIE1ha2VzIHVzZSBvZiB0aGUgbmV3IGRpcnR5IGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQpOgorICAgICAgICAgIEFkZGVkIGZvciBj
b3JyZWN0bmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAgIFRo
ZXNlIGZ1bmN0aW9ucyBub3cgc2NoZWR1bGUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIHNldHRpbmcgb2YgbmVlZHMgY29tcG9zaXRlZCBzY3JvbGxpbmcgKHNlZSBi
ZWxvdykuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0TmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKToKKyAgICAgICAgICBUaGlzIHdhcyByZWZhY3RvcmVkIG91dCBvZiB1cGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5T
dGFja2luZ09yZGVyKToKKyAgICAgICAgICBTY2hlZHVsZXMgYW4gdXBkYXRlIHRoYXQgd2lsbCBi
ZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkgaWYgbm8gb3RoZXIKKyAgICAgICAgICBpbnN0YW5jZSBv
ZiB0aGUgUkFJSSBvYmplY3QgaXMgYWxpdmUgZm9yIHRoaXMgcmVuZGVyIHZpZXcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMpOgorICAgICAgICAgIENsZWFycyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlz
IGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXI6OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjp+U2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIpOgorICAgICAgICAgIFBlcmZvcm1zIHRoZSBkZWxheWVkIHVwZGF0ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
clNjcm9sbCk6CisgICAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAg
ICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0
ZUxheWVyQm91bmRzKToKKyAgICAgICAgICBUaGVzZSBub3cgY3JlYXRlIGEgc2NvcGVkIHVwZGF0
ZXIgdG8gcHJldmVudCBwcmVtYXR1cmUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKToKKyAgICAgICAgICBEaXJ0aWVzIG1fZGVzY2VuZGFu
dHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyIGFuZCBzY2hlZHVsZXMKKyAgICAgICAgICB1
cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250
YWluZXJaT3JkZXJMaXN0cyk6CisgICAgICAgICAgQW55IGNoYW5nZSB0aGF0IGNvdWxkIGFmZmVj
dCBvdXIgc3RhY2tpbmcgY29udGFpbmVyJ3Mgei1vcmRlciBsaXN0IGNvdWxkCisgICAgICAgICAg
Y2F1c2Ugb3RoZXIgUmVuZGVyTGF5ZXJzIGluIG91ciBzdGFja2luZyBjb250ZXh0IHRvIGVpdGhl
ciBvcHQgaW4gb3Igb3V0CisgICAgICAgICAgb2YgY29tcG9zaXRlZCBzY3JvbGxpbmcuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIG1ha2Ugb3VyIHN0YWNraW5nCisgICAgICAgICAgY29udGV4dCBh
d2FyZSBvZiB0aGVzZSB6LW9yZGVyIGNoYW5nZXMgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgICB1cGRhdGluZyBjYW4gaGFwcGVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgICAgV2Ugbm93IGNoZWNrIHRo
ZSBkaXJ0eSBiaXQgYmVmb3JlIGRvaW5nIGNvbnRpZ3VpdHkgdXBkYXRlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHlsZUNoYW5nZSk6Cisg
ICAgICAgICAgUmVmYWN0b3JlZCB0aGUgdmlzaWJpbGl0eSBzdHVmZiBvdXQgb2YgdXBkYXRlU3Rh
Y2tpbmdDb250ZXh0cy4uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU3Rh
Y2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAgIFJlZmFjdG9yZWQgYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0QW5jZXN0b3JDaGFpbkhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFu
dFN0YXR1cyk6CisgICAgICAgICAgRGlydHkgYml0IG1hbmFnZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgICAg
U2NoZWR1bGVzIHVwZGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVD
aGFuZ2VkKToKKyAgICAgICAgICBSZW1vdmVkIGRlYWQgdW5uZWNlc3NhcnkgY29kZSBhbmQgYWRk
ZWQgY2FsbCB0bworICAgICAgICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQpOgor
ICAgICAgICAgIFNjaGVkdWxlcyB1cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9z
aXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENv
bnRlbnQpOgorICAgICAgICAgIFRoZXNlIGNvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgUkFJ
SSBvYmplY3QgdG8gcHJvdGVjdCBhZ2FpbnN0CisgICAgICAgICAgcHJlbWF0dXJlIHVwZGF0ZXMu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKToKKyAgICAgICAgICBUaGUg
cmVuZGVyIHZpZXcgaXMgdGhlIG93bmVyIG9mIHRoZSBwZW5kaW5nIHVwZGF0ZXMuCisKIDIwMTMt
MDQtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzE1MDAwOGNkNWJh
ZDJhNTcwNDcyNTlkMzc2ZDM5MjVhYTFmZmYwYS4uMDNmZjBmYjdmZjkxMTNhMWI5YjVjNWIyZTdl
OGZiM2I5ZWRmOTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUsNiArMTM1LDcg
QEAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xOTQ3LDYgKzE5
NDgsMTEgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIC8vIFVwZGF0ZXMgc2NoZWR1bGVkIGR1cmluZyBzdHlsZSB1cGRhdGUgZGVw
ZW5kIG9uIHZhbHVlcyB0aGF0CisgICAgLy8gYXJlIG5vdCBhdmFpbGFibGUgdW50aWwgYWZ0ZXIg
bGF5b3V0LiBUaGlzIGVuc3VyZXMgdGhhdCB1cGRhdGVzCisgICAgLy8gYXJlIG9ubHkgcHJvY2Vz
c2VkIHdoZW4gdGhleSBjYW4gc3VjY2VlZC4KKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMocmVuZGVyVmlldygpKTsK
KwogICAgIGlmIChFbGVtZW50KiBvZSA9IG93bmVyRWxlbWVudCgpKQogICAgICAgICBvZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDE5ODU0ZDBjM2I1MmQ5ODgzMmI1MThmZWJiZDQyODRhMzk5MDVlZTQu
LjEzNzIzYWNmMmRkZTA4YmI5ZWQ1YWI0MDk4M2JmNmI0MzNmMTVmNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTMyLDYgKzEzMiwxMCBAQAogCiAjZGVm
aW5lIE1JTl9JTlRFUlNFQ1RfRk9SX1JFVkVBTCAzMgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MiwxMCArMTU2LDExIEBAIFJlbmRlckxheWVy
OjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1f
bm9ybWFsRmxvd0xpc3REaXJ0eSh0cnVlKQogICAgICwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRl
c2NlbmRhbnQoZmFsc2UpCiAgICAgLCBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudERp
cnR5KGZhbHNlKQotICAgICwgbV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudChmYWxz
ZSkKLSAgICAsIG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQor
ICAgICwgbV9oYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50KGZhbHNlKQorICAgICwgbV9oYXNG
aXhlZFBvc2l0aW9uZWREZXNjZW5kYW50RGlydHkodHJ1ZSkKICAgICAsIG1fbmVlZHNDb21wb3Np
dGVkU2Nyb2xsaW5nKGZhbHNlKQogICAgICwgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0
YWNraW5nT3JkZXIoZmFsc2UpCisgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlckRpcnR5KHRydWUpCiAgICAgLCBtX2lzUm9vdExheWVyKHJlbmRlcmVyLT5pc1Jl
bmRlclZpZXcoKSkKICAgICAsIG1fdXNlZFRyYW5zcGFyZW5jeShmYWxzZSkKICAgICAsIG1fcGFp
bnRpbmdJbnNpZGVSZWZsZWN0aW9uKGZhbHNlKQpAQCAtMjYxLDYgKzI2Niw3IEBAIFJlbmRlckxh
eWVyOjp+UmVuZGVyTGF5ZXIoKQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIGNsZWFyQmFja2luZyh0cnVlKTsKKyAgICBjYW5jZWxTY2hlZHVsZWRDb21wb3NpdGVkU2Ny
b2xsaW5nVXBkYXRlcygpOwogI2VuZGlmCiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsQ29ybmVyKQpA
QCAtNjE4LDcgKzYyNCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdAogLy8gIEFuZCB3ZSB3b3VsZCBjb25j
bHVkZSB0aGF0IEMgY291bGQgYmUgcHJvbW90ZWQuCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVE
ZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKQogewotICAgIGlmICghaXNT
dGFja2luZ0NvbnRleHQoKSB8fCAhYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Ny
b2xsRW5hYmxlZCgpKQorICAgIGlmICghbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNr
aW5nT3JkZXJEaXJ0eSB8fCAhaXNTdGFja2luZ0NvbnRleHQoKSB8fCAhYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CkBAIC02NTgsNiArNjY0LDggQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09y
ZGVyKCkKICAgICBpbnQgY291bnQgPSAwOwogICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVl
OwogICAgIHVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlclJlY3Vy
c2l2ZShsb29rdXAsIG1pbkluZGV4LCBtYXhJbmRleCwgY291bnQsIGZpcnN0SXRlcmF0aW9uKTsK
KworICAgIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgPSBm
YWxzZTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1
b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKGNvbnN0IEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5
ZXIqLCBpbnQ+JiBsb29rdXAsIGludCYgbWluSW5kZXgsIGludCYgbWF4SW5kZXgsIGludCYgY291
bnQsIGJvb2wgZmlyc3RJdGVyYXRpb24pCkBAIC02OTEsNyArNjk5LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJz
aXZlKGNvbnN0IEgKICAgICAgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXIgPSBuZXdWYWx1ZTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
ICAgIGlmIChkaWRVcGRhdGUpCi0gICAgICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKTsKKyAgICAgICAgICAgIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nKCk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0xMDYwLDU0ICsxMDY4LDQ2IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpCiAgICAgfQog
fQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFz
aFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdC
bG9ja3MpCitzdGF0aWMgYm9vbCBpc0ZpeGVkUG9zaXRpb25lZChjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyICYmIGxheWVyLT5yZW5kZXJlcigpICYmIGxheWVy
LT5yZW5kZXJlcigpLT5zdHlsZSgpICYmIGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb247Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURl
c2NlbmRhbnREZXBlbmRlbnRGbGFncygpCiB7Ci0gICAgaWYgKG1fdmlzaWJsZURlc2NlbmRhbnRT
dGF0dXNEaXJ0eSB8fCBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudERpcnR5IHx8IG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkgeworICAgIGlmIChtX3Zpc2li
bGVEZXNjZW5kYW50U3RhdHVzRGlydHkgfHwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRh
bnREaXJ0eSB8fCBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkgeworICAgICAg
ICBjb25zdCBib29sIGhhZFZpc2libGVEZXNjZW5kYW50ID0gbV9oYXNWaXNpYmxlRGVzY2VuZGFu
dDsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50ID0gbV9o
YXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50OworCiAgICAgICAgIG1faGFzVmlzaWJsZURlc2Nl
bmRhbnQgPSBmYWxzZTsKICAgICAgICAgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQg
PSBmYWxzZTsKLSAgICAgICAgbV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9IGZh
bHNlOworICAgICAgICBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQgPSBmYWxzZTsKIAot
ICAgICAgICBIYXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+IGNoaWxkT3V0T2ZGbG93RGVzY2Vu
ZGFudENvbnRhaW5pbmdCbG9ja3M7CiAgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgY2hpbGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nrcy5jbGVhcigp
OwotICAgICAgICAgICAgY2hpbGQtPnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygmY2hp
bGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nrcyk7Ci0KLSAgICAgICAgICAgIGJv
b2wgY2hpbGRJc091dE9mRmxvd1Bvc2l0aW9uZWQgPSBjaGlsZC0+cmVuZGVyZXIoKSAmJiBjaGls
ZC0+cmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7Ci0gICAgICAgICAgICBpZiAo
Y2hpbGRJc091dE9mRmxvd1Bvc2l0aW9uZWQpCi0gICAgICAgICAgICAgICAgY2hpbGRPdXRPZkZs
b3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nrcy5hZGQoY2hpbGQtPnJlbmRlcmVyKCktPmNvbnRh
aW5pbmdCbG9jaygpKTsKLQotICAgICAgICAgICAgaWYgKG91dE9mRmxvd0Rlc2NlbmRhbnRDb250
YWluaW5nQmxvY2tzKSB7Ci0gICAgICAgICAgICAgICAgSGFzaFNldDxjb25zdCBSZW5kZXJPYmpl
Y3QqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZE91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWlu
aW5nQmxvY2tzLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGl0ICE9IGNoaWxkT3V0
T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdCbG9ja3MuZW5kKCk7ICsraXQpCi0gICAgICAgICAg
ICAgICAgICAgIG91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWluaW5nQmxvY2tzLT5hZGQoKml0KTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoaWxkLT51cGRhdGVEZXNjZW5kYW50RGVwZW5k
ZW50RmxhZ3MoKTsKIAogICAgICAgICAgICAgYm9vbCBoYXNWaXNpYmxlRGVzY2VuZGFudCA9IGNo
aWxkLT5tX2hhc1Zpc2libGVDb250ZW50IHx8IGNoaWxkLT5tX2hhc1Zpc2libGVEZXNjZW5kYW50
OwogICAgICAgICAgICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQgPSBjaGls
ZC0+aXNTZWxmUGFpbnRpbmdMYXllcigpIHx8IGNoaWxkLT5oYXNTZWxmUGFpbnRpbmdMYXllckRl
c2NlbmRhbnQoKTsKLSAgICAgICAgICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQgPSAhY2hpbGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nrcy5pc0VtcHR5
KCk7CisgICAgICAgICAgICBib29sIGhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQgPSBpc0Zp
eGVkUG9zaXRpb25lZChjaGlsZCkgfHwgY2hpbGQtPmhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRh
bnQoKTsKIAogICAgICAgICAgICAgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCB8PSBoYXNWaXNpYmxl
RGVzY2VuZGFudDsKICAgICAgICAgICAgIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50
IHw9IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudDsKLSAgICAgICAgICAgIG1faGFzT3V0
T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQgfD0gaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQ7CisgICAgICAgICAgICBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQgfD0gaGFz
Rml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudDsKIAotICAgICAgICAgICAgaWYgKG1faGFzVmlzaWJs
ZURlc2NlbmRhbnQgJiYgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQgJiYgbV9oYXNP
dXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCkKKyAgICAgICAgICAgIGlmIChtX2hhc1Zpc2li
bGVEZXNjZW5kYW50ICYmIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50ICYmIG1faGFz
Rml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChvdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2NrcyAm
JiByZW5kZXJlcigpKQotICAgICAgICAgICAgb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdC
bG9ja3MtPnJlbW92ZShyZW5kZXJlcigpKTsKLQogICAgICAgICBtX3Zpc2libGVEZXNjZW5kYW50
U3RhdHVzRGlydHkgPSBmYWxzZTsKICAgICAgICAgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2Nl
bmRhbnREaXJ0eSA9IGZhbHNlOworICAgICAgICBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRh
bnREaXJ0eSA9IGZhbHNlOwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
ICAgICBpZiAobV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5KQotICAgICAg
ICAgICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7Ci0jZW5kaWYKLSAgICAgICAg
bV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ID0gZmFsc2U7CisgICAgICAg
IGlmIChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICE9IGhhZFZpc2libGVEZXNjZW5kYW50IHx8IG1f
aGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudCAhPSBoYWRGaXhlZFBvc2l0aW9uZWREZXNjZW5k
YW50KQorICAgICAgICAgICAgc2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmco
KTsKICAgICB9CiAKICAgICBpZiAobV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5KSB7CisgICAg
ICAgIGNvbnN0IGJvb2wgaGFkVmlzaWJsZUNvbnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50Owog
ICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
CiAgICAgICAgICAgICBtX2hhc1Zpc2libGVDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7
CkBAIC0xMTM1LDYgKzExMzUsOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50
RGVwZW5kZW50RmxhZ3MoSGFzaFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogbwogICAgICAgICAg
ICAgfQogICAgICAgICB9ICAgIAogICAgICAgICBtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkg
PSBmYWxzZTsgCisgICAgICAgIGlmIChoYWRWaXNpYmxlQ29udGVudCAhPSBtX2hhc1Zpc2libGVD
b250ZW50KQorICAgICAgICAgICAgc2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKTsKICAgICB9CiB9CiAKQEAgLTEzMjEsNiArMTMyMywxNiBAQCBSZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OnN0YWNraW5nQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gbGF5ZXI7CiB9
CiAKK1JlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0KCkgY29uc3QKK3sK
KyAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBwYXJlbnQoKTsKKyAgICB3aGlsZSAobGF5ZXIgJiYg
IWxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQorICAgICAgICBsYXllciA9IGxheWVyLT5wYXJl
bnQoKTsKKworICAgIEFTU0VSVCghbGF5ZXIgfHwgbGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkp
OworICAgIHJldHVybiBsYXllcjsKK30KKwogc3RhdGljIGlubGluZSBib29sIGlzUG9zaXRpb25l
ZENvbnRhaW5lcihSZW5kZXJMYXllciogbGF5ZXIpCiB7CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwpAQCAtMTcyNSw2ICsxNzM3
LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmFkZENoaWxkKFJlbmRlckxheWVyKiBjaGlsZCwgUmVu
ZGVyTGF5ZXIqIGJlZm9yZUNoaWxkKQogICAgICAgICAvLyBjYXNlIHdoZXJlIHdlJ3JlIGJ1aWxk
aW5nIHVwIGdlbmVyYXRlZCBjb250ZW50IGxheWVycy4gVGhpcyBpcyBvaywgc2luY2UgdGhlIGxp
c3RzIHdpbGwgc3RhcnQKICAgICAgICAgLy8gb2ZmIGRpcnR5IGluIHRoYXQgY2FzZSBhbnl3YXku
CiAgICAgICAgIGNoaWxkLT5kaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAg
ICAgICAgY2hpbGQtPnNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyKCk7CisKKyAgICAgICAgLy8gQWRkaW5nIGFuIG91dCBvZiBmbG93IHBvc2l0aW9u
ZWQgZGVzY2VuZGFudCBjYW4gb25seSBhZmZlY3QKKyAgICAgICAgLy8gdGhlIG9wdC1pbiBkZWNp
c2lvbiBmb3IgbGF5ZXJzIGJlbmVhdGggYW5kIGluY2x1ZGluZyBvdXIKKyAgICAgICAgLy8gY29u
dGFpbmluZyBibG9jay4KKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nQmxvY2sgPSBj
aGlsZC0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIGZvciAoUmVuZGVy
TGF5ZXIqIGxheWVyID0gY2hpbGQ7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewor
ICAgICAgICAgICAgbGF5ZXItPnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5n
KCk7CisgICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkgPT0gY29udGFpbmluZ0Jsb2Nr
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAgY2hpbGQt
PnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwpAQCAtMTczNCw4ICsxNzU3LDggQEAg
dm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXIqIGNoaWxkLCBSZW5kZXJMYXll
ciogYmVmb3JlQ2hpbGQpCiAgICAgaWYgKGNoaWxkLT5pc1NlbGZQYWludGluZ0xheWVyKCkgfHwg
Y2hpbGQtPmhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKQogICAgICAgICBzZXRBbmNl
c3RvckNoYWluSGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCk7CiAKLSAgICBpZiAoY2hp
bGQtPnJlbmRlcmVyKCkgJiYgKGNoaWxkLT5yZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSB8fCBjaGlsZC0+aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKSkpCi0gICAg
ICAgIHNldEFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudChjaGls
ZC0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCkpOworICAgIGlmIChpc0ZpeGVkUG9zaXRp
b25lZChjaGlsZCkgfHwgY2hpbGQtPmhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQoKSkKKyAg
ICAgICAgc2V0QW5jZXN0b3JDaGFpbkhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQoKTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBjb21wb3NpdG9yKCktPmxheWVy
V2FzQWRkZWQodGhpcywgY2hpbGQpOwpAQCAtMTc0NSw4ICsxNzY4LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXIqIGNoaWxkLCBSZW5kZXJMYXllciogYmVmb3JlQ2hp
bGQpCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnJlbW92ZUNoaWxkKFJlbmRlckxheWVyKiBv
bGRDaGlsZCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFy
ZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgIGNvbXBvc2l0b3Io
KS0+bGF5ZXJXaWxsQmVSZW1vdmVkKHRoaXMsIG9sZENoaWxkKTsKKyAgICBvbGRDaGlsZC0+cmVt
b3ZlRnJvbUNvbXBvc2l0b3IoKTsKICNlbmRpZgogCiAgICAgLy8gcmVtb3ZlIHRoZSBjaGlsZApA
QCAtMTc2MCwyMiArMTc4MiwzNCBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnJlbW92ZUNo
aWxkKFJlbmRlckxheWVyKiBvbGRDaGlsZCkKICAgICBpZiAobV9sYXN0ID09IG9sZENoaWxkKQog
ICAgICAgICBtX2xhc3QgPSBvbGRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CiAKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgb2xkQ2hpbGQtPmNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CisjZW5kaWYKKwogICAgIGlmIChvbGRDaGlsZC0+
aXNOb3JtYWxGbG93T25seSgpKQogICAgICAgICBkaXJ0eU5vcm1hbEZsb3dMaXN0KCk7Ci0gICAg
aWYgKCFvbGRDaGlsZC0+aXNOb3JtYWxGbG93T25seSgpIHx8IG9sZENoaWxkLT5maXJzdENoaWxk
KCkpIHsgCisgICAgaWYgKCFvbGRDaGlsZC0+aXNOb3JtYWxGbG93T25seSgpIHx8IG9sZENoaWxk
LT5maXJzdENoaWxkKCkpIHsKICAgICAgICAgLy8gRGlydHkgdGhlIHotb3JkZXIgbGlzdCBpbiB3
aGljaCB3ZSBhcmUgY29udGFpbmVkLiAgV2hlbiBjYWxsZWQgdmlhIHRoZQogICAgICAgICAvLyBy
ZWF0dGFjaG1lbnQgcHJvY2VzcyBpbiByZW1vdmVPbmx5VGhpc0xheWVyLCB0aGUgbGF5ZXIgbWF5
IGFscmVhZHkgYmUgZGlzY29ubmVjdGVkCiAgICAgICAgIC8vIGZyb20gdGhlIG1haW4gbGF5ZXIg
dHJlZSwgc28gd2UgbmVlZCB0byBudWxsLWNoZWNrIHRoZSB8c3RhY2tpbmdDb250YWluZXJ8IHZh
bHVlLgogICAgICAgICBvbGRDaGlsZC0+ZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3Rz
KCk7CisgICAgICAgIHNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyKCk7CisKKyAgICAgICAgLy8gVGhpcyBjb3VsZCBhZmZlY3Qgd2hldGhlciBvciBu
b3QgYSBsYXllciBoYXMgYW4gb3V0IG9mIGZsb3cKKyAgICAgICAgLy8gcG9zaXRpb25lZCBkZXNj
ZW5kYW50IHNvIHdlIG5lZWQgdG8gc2NoZWR1bGUgc29tZSB1cGRhdGVzLgorICAgICAgICBmb3Ig
KFJlbmRlckxheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQo
KSkKKyAgICAgICAgICAgIGxheWVyLT5zY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZygpOwogICAgIH0KIAotICAgIGlmICgob2xkQ2hpbGQtPnJlbmRlcmVyKCkgJiYgb2xkQ2hp
bGQtPnJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB8fCBvbGRDaGlsZC0+aGFz
T3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKSkKLSAgICAgICAgZGlydHlBbmNlc3RvckNo
YWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKKyAgICBpZiAoaXNG
aXhlZFBvc2l0aW9uZWQob2xkQ2hpbGQpIHx8IG9sZENoaWxkLT5oYXNGaXhlZFBvc2l0aW9uZWRE
ZXNjZW5kYW50KCkpIHsKKyAgICAgICAgZGlydHlBbmNlc3RvckNoYWluSGFzRml4ZWRQb3NpdGlv
bmVkRGVzY2VuZGFudFN0YXR1cygpOworICAgICAgICBzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRz
QXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOworICAgIH0KIAogICAgIG9sZENoaWxkLT5z
ZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgb2xkQ2hpbGQtPnNldE5leHRTaWJsaW5nKDApOwog
ICAgIG9sZENoaWxkLT5zZXRQYXJlbnQoMCk7Ci0gICAgCisKICAgICBvbGRDaGlsZC0+dXBkYXRl
RGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CiAgICAgaWYgKG9sZENoaWxkLT5tX2hhc1Zpc2li
bGVDb250ZW50IHx8IG9sZENoaWxkLT5tX2hhc1Zpc2libGVEZXNjZW5kYW50KQogICAgICAgICBk
aXJ0eUFuY2VzdG9yQ2hhaW5WaXNpYmxlRGVzY2VuZGFudFN0YXR1cygpOwpAQCAtMTc4Niw2ICsx
ODIwLDMwIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyTGF5
ZXIqIG9sZENoaWxkKQogICAgIHJldHVybiBvbGRDaGlsZDsKIH0KIAorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlbW92ZUZyb21Db21wb3NpdG9y
KCkKK3sKKyAgICBpZiAoIW1fcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJdCdz
IHF1aXRlIGNvbW1vbiBmb3IgYSBSZW5kZXJPYmplY3QgdG8gZGVzdHJveSBpdHMgbGF5ZXIgYmVj
YXVzZSBpdAorICAgIC8vIGNlYXNlcyB0byBiZSBmaXhlZCBwb3NpdGlvbmVkLCBpbiB0aGlzIGNh
c2UsIHRoZSBSZW5kZXJMYXllciBpcyBub3QKKyAgICAvLyBub3RpZmllZCBvZiB0aGUgc3R5bGUg
Y2hhbmdlLiBUaGUgdW5mb3J0dW5hdGUgY29uc2VxdWVuY2UgaXMgdGhhdCB3ZQorICAgIC8vIGNh
bid0IHVzZSB0aGUgZGlmZmVyZW5jZSBpbiBmaXhlZCBwb3NpdGlvbiBzdGF0dXMgb2Ygb2xkQ2hp
bGQgYW5kCisgICAgLy8gb3Vyc2VsZiBhcyBhIGNsdWUgdGhhdCB3ZSBuZWVkIHRvIGRpcnR5IG91
ciBhbmNlc3RvciBjaGFpbidzCisgICAgLy8gaGFzLWZpeGVkLXBvc2l0aW9uZWQtZGVzY2VuZGFu
dCBzdGF0dXMuIEZvcnR1bmF0ZWx5LCB0aGUgY29tcG9zaXRvcgorICAgIC8vIG1haW50YWlucyBh
IGNvbGxlY3Rpb24gb2Ygdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cy4gUmVtb3ZhbCBmcm9t
CisgICAgLy8gdGhpcyBjb2xsZWN0aW9uIGlzIGEgcmVsaWFibGUgc2lnbmFsIHRoYXQgd2UgbmVl
ZCB0byBkaXJ0eSB0aGUgYW5jZXN0b3IKKyAgICAvLyBjaGFpbidzIGhhcy1maXhlZC1wb3NpdGlv
bmVkLWRlc2NlbmRhbnQgc3RhdHVzLgorICAgIGlmICghcmVuZGVyZXIoKS0+ZG9jdW1lbnRCZWlu
Z0Rlc3Ryb3llZCgpKSB7CisgICAgICAgIGlmIChjb21wb3NpdG9yKCktPmxheWVyV2lsbEJlUmVt
b3ZlZChtX3BhcmVudCwgdGhpcykgPT0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW1vdmVkTGF5
ZXJXYXNWaWV3cG9ydENvbnN0cmFpbmVkIHx8IGhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQo
KSkgeworICAgICAgICAgICAgbV9wYXJlbnQtPmRpcnR5QW5jZXN0b3JDaGFpbkhhc0ZpeGVkUG9z
aXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKKyAgICAgICAgICAgIG1fcGFyZW50LT5zY2hlZHVs
ZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOworICAgICAg
ICB9CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlUaGlz
TGF5ZXIoKQogewogICAgIGlmICghbV9wYXJlbnQpCkBAIC0xNzk2LDcgKzE4NTQsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKICAgICBtX3JlbmRlcmVyLT5zZXRI
YXNMYXllcihmYWxzZSk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
Y29tcG9zaXRvcigpLT5sYXllcldpbGxCZVJlbW92ZWQobV9wYXJlbnQsIHRoaXMpOworICAgIHJl
bW92ZUZyb21Db21wb3NpdG9yKCk7CiAjZW5kaWYKIAogICAgIC8vIERpcnR5IHRoZSBjbGlwIHJl
Y3RzLgpAQCAtMTk5OSw0MCArMjA1NywxMjkgQEAgYm9vbCBSZW5kZXJMYXllcjo6bmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTmVlZHND
b21wb3NpdGVkU2Nyb2xsaW5nKCkKIHsKLSAgICBib29sIG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZyA9IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nOworICAgIGJvb2wgbmVlZHNDb21wb3Np
dGVkU2Nyb2xsaW5nID0gZmFsc2U7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHJlbmRl
cmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcgfHwgIWZyYW1l
Vmlldy0+Y29udGFpbnNTY3JvbGxhYmxlQXJlYSh0aGlzKSkKLSAgICAgICAgbV9uZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcgPSBmYWxzZTsKLSAgICBlbHNlIHsKKyAgICBpZiAoZnJhbWVWaWV3ICYm
IGZyYW1lVmlldy0+Y29udGFpbnNTY3JvbGxhYmxlQXJlYSh0aGlzKSkgeworICAgICAgICB1cGRh
dGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKKwogICAgICAgICBib29sIGZvcmNlVXNlQ29t
cG9zaXRlZFNjcm9sbGluZyA9IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bEVuYWJsZWQoKQogICAgICAgICAgICAgJiYgY2FuQmVTdGFja2luZ0NvbnRhaW5lcigpCisgICAg
ICAgICAgICAmJiAhaGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudCgpCiAgICAgICAgICAgICAm
JiAhaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKTsKIAogI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgICAgIG1fbmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nID0gZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xsaW5nIHx8IHJlbmRlcmVyKCktPnN0eWxl
KCktPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKTsKKyAgICAgICAgbmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nID0gZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xsaW5nIHx8IHJlbmRlcmVyKCktPnN0
eWxlKCktPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKTsKICNlbHNlCi0gICAgICAgIG1fbmVl
ZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xsaW5nOworICAg
ICAgICBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxp
bmc7CiAjZW5kaWYKLSAgICAgICAgLy8gV2UgZ2F0aGVyIGEgYm9vbGVhbiB2YWx1ZSBmb3IgdXNl
IHdpdGggR29vZ2xlIFVNQSBoaXN0b2dyYW1zIHRvCi0gICAgICAgIC8vIHF1YW50aWZ5IHRoZSBh
Y3R1YWwgZWZmZWN0cyBvZiBhIHNldCBvZiBwYXRjaGVzIGF0dGVtcHRpbmcgdG8KLSAgICAgICAg
Ly8gcmVsYXggY29tcG9zaXRlZCBzY3JvbGxpbmcgcmVxdWlyZW1lbnRzLCB0aGVyZWJ5IGluY3Jl
YXNpbmcgdGhlCi0gICAgICAgIC8vIG51bWJlciBvZiBjb21wb3NpdGVkIG92ZXJmbG93IGRpdnMu
Ci0gICAgICAgIGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFi
bGVkKCkpCi0gICAgICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlv
bigiUmVuZGVyZXIuTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nIiwgbV9uZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcsIDIpOwogICAgIH0KIAotICAgIGlmIChvbGROZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgIT0gbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpIHsKLSAgICAgICAgdXBkYXRlU2VsZlBh
aW50aW5nTGF5ZXIoKTsKLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250YWluZXIoKSkKLSAgICAg
ICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xl
YXJaT3JkZXJMaXN0cygpOworICAgIHNldE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyhuZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcpOworfQogCi0gICAgICAgIGRpcnR5U3RhY2tpbmdDb250YWluZXJa
T3JkZXJMaXN0cygpOwordm9pZCBSZW5kZXJMYXllcjo6c2V0TmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nKGJvb2wgbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQoreworICAgIC8vIFdlIGdhdGhlciBh
IGJvb2xlYW4gdmFsdWUgZm9yIHVzZSB3aXRoIEdvb2dsZSBVTUEgaGlzdG9ncmFtcyB0bworICAg
IC8vIHF1YW50aWZ5IHRoZSBhY3R1YWwgZWZmZWN0cyBvZiBhIHNldCBvZiBwYXRjaGVzIGF0dGVt
cHRpbmcgdG8KKyAgICAvLyByZWxheCBjb21wb3NpdGVkIHNjcm9sbGluZyByZXF1aXJlbWVudHMs
IHRoZXJlYnkgaW5jcmVhc2luZyB0aGUKKyAgICAvLyBudW1iZXIgb2YgY29tcG9zaXRlZCBvdmVy
ZmxvdyBkaXZzLgorICAgIGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3Jv
bGxFbmFibGVkKCkpCisgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0
aW9uKCJSZW5kZXJlci5OZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmciLCBuZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcsIDIpOwogCi0gICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0U2hvdWxkUmVldmFsdWF0
ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21w
b3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CisgICAgaWYgKG1fbmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nID09IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgPSBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmc7
CisKKyAgICB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOworICAgIGlmIChpc1N0YWNraW5nQ29u
dGFpbmVyKCkpCisgICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKKyAgICBlbHNlCisgICAgICAg
IGNsZWFyWk9yZGVyTGlzdHMoKTsKKworICAgIGRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJM
aXN0cygpOworCisgICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2YWx1YXRlQ29tcG9zaXRp
bmdBZnRlckxheW91dCgpOworICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29tcG9zaXRpbmdMYXllcnNO
ZWVkUmVidWlsZCgpOworfQorCit2b2lkIFJlbmRlckxheWVyOjpzY2hlZHVsZVVwZGF0ZU5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZygpCit7CisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSkKKyAgICAgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIodGhpcywgVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKTsKK30KKwor
dm9pZCBSZW5kZXJMYXllcjo6c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKQoreworICAgIGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3Zl
cmZsb3dTY3JvbGxFbmFibGVkKCkpCisgICAgICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdV
cGRhdGVyKHRoaXMsIFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRl
cik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNhbmNlbFNjaGVkdWxlZENvbXBvc2l0ZWRTY3Jv
bGxpbmdVcGRhdGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVy
KCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVuZGVyZXIoKS0+dmlldygpLT5w
ZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMoKS5yZW1vdmUoY29uc3RfY2FzdDxSZW5k
ZXJMYXllcio+KHRoaXMpKTsKKyAgICByZW5kZXJlcigpLT52aWV3KCktPnBlbmRpbmdDb250aWd1
aXR5VXBkYXRlcygpLnJlbW92ZShjb25zdF9jYXN0PFJlbmRlckxheWVyKj4odGhpcykpOworfQor
CitTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcjo6U2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIoUmVuZGVyVmlldyogcmVuZGVyVmlldykKKyAgICA6IG1fcmVuZGVyVmlldyhy
ZW5kZXJWaWV3KQoreworICAgIGlmIChtX3JlbmRlclZpZXcpCisgICAgICAgIG1fcmVuZGVyVmll
dy0+c2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJzQ291bnQoKSsrOworfQorCitTY29w
ZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcjo6U2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXIoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlTW9kZSBt
b2RlKQorICAgIDogbV9yZW5kZXJWaWV3KDApCit7CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXIt
PnJlbmRlcmVyKCktPnZpZXcoKSB8fCAhbGF5ZXItPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JP
dmVyZmxvd1Njcm9sbEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJW
aWV3ID0gbGF5ZXItPnJlbmRlcmVyKCktPnZpZXcoKTsKKyAgICBtX3JlbmRlclZpZXctPnNjb3Bl
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkrKzsKKworICAgIGlmIChtb2RlID09
IFVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykKKyAgICAgICAgbV9yZW5kZXJWaWV3LT5w
ZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMoKS5hZGQobGF5ZXIpOworICAgIGVsc2Ug
aWYgKG1vZGUgPT0gVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVy
KQorICAgICAgICBtX3JlbmRlclZpZXctPnBlbmRpbmdDb250aWd1aXR5VXBkYXRlcygpLmFkZChs
YXllcik7Cit9CisKK1Njb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjp+U2NvcGVkQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIoKQoreworICAgIGlmICghbV9yZW5kZXJWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclZpZXctPnNjb3BlZENvbXBvc2l0ZWRTY3JvbGxp
bmdVcGRhdGVyc0NvdW50KCktLTsKKyAgICBBU1NFUlQobV9yZW5kZXJWaWV3LT5zY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCgpID49IDApOworICAgIGlmICghbV9yZW5kZXJW
aWV3LT5zY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCgpKSB7CisgICAgICAg
IEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMg
PSBtX3JlbmRlclZpZXctPnBlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpOworICAg
ICAgICBtX3JlbmRlclZpZXctPnBlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLmNs
ZWFyKCk7CisKKyAgICAgICAgSGFzaFNldDxSZW5kZXJMYXllcio+IHBlbmRpbmdDb250aWd1aXR5
VXBkYXRlcyA9IG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCk7CisgICAg
ICAgIG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCkuY2xlYXIoKTsKKwor
ICAgICAgICBpZiAoIXBlbmRpbmdDb250aWd1aXR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBzdGFja2luZ0NvbnRleHRzOworICAgICAgICAg
ICAgZm9yIChIYXNoU2V0PFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBwZW5kaW5nQ29u
dGlndWl0eVVwZGF0ZXMuYmVnaW4oKTsgaXRlciAhPSBwZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMu
ZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0Nv
bnRleHQgPSAqaXRlcjsKKyAgICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tpbmdDb250ZXh0ICYm
ICFzdGFja2luZ0NvbnRleHQtPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAg
ICAgIHN0YWNraW5nQ29udGV4dCA9IHN0YWNraW5nQ29udGV4dC0+cGFyZW50KCk7CisgICAgICAg
ICAgICAgICAgaWYgKHN0YWNraW5nQ29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2tp
bmdDb250ZXh0cy5hZGQoc3RhY2tpbmdDb250ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZvciAoSGFzaFNldDxSZW5kZXJMYXllcio+OjppdGVyYXRvciBpdGVyID0gc3RhY2tpbmdD
b250ZXh0cy5iZWdpbigpOyBpdGVyICE9IHN0YWNraW5nQ29udGV4dHMuZW5kKCk7ICsraXRlcikg
eworICAgICAgICAgICAgICAgICgqaXRlciktPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwor
ICAgICAgICAgICAgICAgICgqaXRlciktPnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBmb3IgKEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXRlciA9IHBlbmRpbmdD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcy5iZWdpbigpOyBpdGVyICE9IHBlbmRpbmdDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlcy5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgICAgICgqaXRl
ciktPnVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAgICAgICB9CiAgICAgfQog
fQogI2VuZGlmCkBAIC0yMzMzLDcgKzI0ODAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVD
b21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCkKICAgICAgICAgLy8gcmVwb3NpdGlvbmluZywg
c28gdXBkYXRlIGNvbXBvc2l0aW5nIGxheWVycyBmcm9tIHRoZXJlLgogICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3IgPSBzdGFja2luZ0NvbnRhaW5lcigpLT5lbmNs
b3NpbmdDb21wb3NpdGluZ0xheWVyKCkpIHsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yKCkt
PmNvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodXNl
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSAmJiAhaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRh
bnQoKSkKKyAgICAgICAgICAgICAgICBpZiAodXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29tcG9zaXRvcigpLT51cGRhdGVDb21wb3NpdGluZ0xheWVycyhD
b21wb3NpdGluZ1VwZGF0ZU9uQ29tcG9zaXRlZFNjcm9sbCwgY29tcG9zaXRpbmdBbmNlc3Rvcik7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjb21wb3NpdG9yKCkt
PnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlT25TY3JvbGwsIGNvbXBv
c2l0aW5nQW5jZXN0b3IpOwpAQCAtMzE3OSwxMiArMzMyNiw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAKICAgICBpZiAob3JpZ2luYWxTY3JvbGxP
ZmZzZXQgIT0gc2Nyb2xsT2Zmc2V0KCkpCiAgICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFu
aW1hdGlvbihJbnRQb2ludChzY3JvbGxPZmZzZXQoKSkpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xsaW5nIG1heSBuZWVkIHRvIGJl
IGVuYWJsZWQgb3IgZGlzYWJsZWQgaWYgdGhlIGFtb3VudCBvZiBvdmVyZmxvdyBjaGFuZ2VkLgot
ICAgIGlmIChyZW5kZXJlcigpLT52aWV3KCkgJiYgY29tcG9zaXRvcigpLT51cGRhdGVMYXllckNv
bXBvc2l0aW5nU3RhdGUodGhpcykpCi0gICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29tcG9zaXRp
bmdMYXllcnNOZWVkUmVidWlsZCgpOwotI2VuZGlmCiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6Om92
ZXJmbG93Q29udHJvbHNJbnRlcnNlY3RSZWN0KGNvbnN0IEludFJlY3QmIGxvY2FsUmVjdCkgY29u
c3QKQEAgLTM5MTEsNiArNDA1Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0CiAgICAgaWYg
KCFoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFNjb3BlZENvbXBvc2l0ZWRTY3Jv
bGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhyZW5kZXJlcigp
LT52aWV3KCkpOworI2VuZGlmCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlzdE11
dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKHRoaXMpOwogI2VuZGlmCkBAIC00OTY5LDcg
KzUxMTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xp
cFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogCiAgICAgLy8gQSBmaXhlZCBvYmpl
Y3QgaXMgZXNzZW50aWFsbHkgdGhlIHJvb3Qgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sgaGllcmFy
Y2h5LCBzbyB3aGVuCiAgICAgLy8gd2UgZW5jb3VudGVyIHN1Y2ggYW4gb2JqZWN0LCB3ZSByZXNl
dCBvdXIgY2xpcCByZWN0cyB0byB0aGUgZml4ZWRDbGlwUmVjdC4KLSAgICBpZiAocmVuZGVyZXIo
KS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgaWYgKGlzRml4
ZWRQb3NpdGlvbmVkKHRoaXMpKSB7CiAgICAgICAgIGNsaXBSZWN0cy5zZXRQb3NDbGlwUmVjdChj
bGlwUmVjdHMuZml4ZWRDbGlwUmVjdCgpKTsKICAgICAgICAgY2xpcFJlY3RzLnNldE92ZXJmbG93
Q2xpcFJlY3QoY2xpcFJlY3RzLmZpeGVkQ2xpcFJlY3QoKSk7CiAgICAgICAgIGNsaXBSZWN0cy5z
ZXRGaXhlZCh0cnVlKTsKQEAgLTUzNzMsNiArNTUxNyw5IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6
OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBj
b25zCiAgICAgCiAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250YWluZXIoKSB8fCAoIXBvc1pPcmRl
ckxpc3QoKSB8fCAhcG9zWk9yZGVyTGlzdCgpLT5zaXplKCkpKTsKIAorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBz
dXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXModGhpcy0+cmVuZGVyZXIoKS0+dmlldygp
KTsKKyNlbmRpZgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRl
dGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0PFJlbmRlckxheWVyKj4odGhpcykpOwog
I2VuZGlmCkBAIC01NjExLDYgKzU3NTgsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eVpPcmRl
ckxpc3RzKCkKICAgICBtX3pPcmRlckxpc3RzRGlydHkgPSB0cnVlOwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyRGlydHkgPSB0cnVlOworICAgIHNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVD
b250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcigpLT5kb2N1bWVu
dEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGlu
Z0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgICAgIGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCkBAIC01NjIxLDkgKzU3NzAsMTggQEAgdm9pZCBS
ZW5kZXJMYXllcjo6ZGlydHlaT3JkZXJMaXN0cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5
U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygpCiB7Ci0gICAgUmVuZGVyTGF5ZXIqIHNjID0g
c3RhY2tpbmdDb250YWluZXIoKTsKLSAgICBpZiAoc2MpCi0gICAgICAgIHNjLT5kaXJ0eVpPcmRl
ckxpc3RzKCk7CisgICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGFpbmVyID0gdGhpcy0+c3Rh
Y2tpbmdDb250YWluZXIoKTsKKyAgICBpZiAoc3RhY2tpbmdDb250YWluZXIpCisgICAgICAgIHN0
YWNraW5nQ29udGFpbmVyLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisKKyAgICAvLyBBbnkgY2hhbmdl
IHRoYXQgY291bGQgYWZmZWN0IG91ciBzdGFja2luZyBjb250YWluZXIncyB6LW9yZGVyIGxpc3Qg
Y291bGQKKyAgICAvLyBjYXVzZSBvdGhlciBSZW5kZXJMYXllcnMgaW4gb3VyIHN0YWNraW5nIGNv
bnRleHQgdG8gZWl0aGVyIG9wdCBpbiBvciBvdXQKKyAgICAvLyBvZiBjb21wb3NpdGVkIHNjcm9s
bGluZy4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2UgbWFrZSBvdXIgc3RhY2tpbmcKKyAgICAvLyBj
b250ZXh0IGF3YXJlIG9mIHRoZXNlIHotb3JkZXIgY2hhbmdlcyBzbyB0aGUgYXBwcm9wcmlhdGUg
dXBkYXRpbmcgY2FuCisgICAgLy8gaGFwcGVuLgorICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0Nv
bnRleHQgPSB0aGlzLT5zdGFja2luZ0NvbnRleHQoKTsKKyAgICBpZiAoc3RhY2tpbmdDb250ZXh0
ICYmIHN0YWNraW5nQ29udGV4dCAhPSBzdGFja2luZ0NvbnRhaW5lcikKKyAgICAgICAgc3RhY2tp
bmdDb250ZXh0LT5kaXJ0eVpPcmRlckxpc3RzKCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRp
cnR5Tm9ybWFsRmxvd0xpc3QoKQpAQCAtNTc0Miw3ICs1OTAwLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNC
ZWhhdmlvcgogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQog
ewotICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1f
bm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgYm9vbCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0Fy
ZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3Zl
cmZsb3dTY3JvbGxFbmFibGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJM
aXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSkgJiYgbV9kZXNjZW5kYW50c0FyZUNv
bnRpZ3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0eTsKICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwog
ICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAKQEAgLTU4OTYsNiArNjA1NCw1MSBAQCBib29s
IFJlbmRlckxheWVyOjpoYXNOb25FbXB0eUNoaWxkUmVuZGVyZXJzKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitib29sIFJl
bmRlckxheWVyOjpoYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgpCit7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJ3ZWJraXQiLCAiUmVuZGVyTGF5ZXI6
Omhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50Iik7CisjZW5kaWYKKworICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBp
ZiAoIWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT5jb250YWluc1Njcm9sbGFibGVBcmVhKHRoaXMp
IHx8IHRoaXMgPT0gcm9vdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1f
aGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ICYmIG1faGFzRml4ZWRQb3NpdGlvbmVk
RGVzY2VuZGFudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBSZW5kZXJPYmpl
Y3QqIGNvbnRhaW5pbmdCbG9ja09iamVjdCA9IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9ja09i
amVjdElmQWJzb2x1dGVQb3NpdGlvbmVkKHJlbmRlcmVyKCkpOworICAgIGlmIChjb250YWluaW5n
QmxvY2tPYmplY3QgPT0gcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Y29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRvUmVuZGVyQmxvY2soY29udGFp
bmluZ0Jsb2NrT2JqZWN0KTsKKyAgICBpZiAoIWNvbnRhaW5pbmdCbG9jayB8fCAhY29udGFpbmlu
Z0Jsb2NrLT5wb3NpdGlvbmVkT2JqZWN0cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogcG9zaXRpb25lZE9iamVjdHMgPSBjb250YWlu
aW5nQmxvY2stPnBvc2l0aW9uZWRPYmplY3RzKCk7CisgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhh
c2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsK
KyAgICBmb3IgKDsgaXRlciAhPSBwb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7ICsraXRlcikgewor
ICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSAoKml0ZXIpLT5sYXllcigpOworICAgICAgICBp
ZiAoIWxheWVyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFsYXllci0+
aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiAhbGF5ZXItPmhhc1Zpc2libGVEZXNjZW5kYW50KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoKCppdGVyKS0+aXNEZXNjZW5kYW50
T2YocmVuZGVyZXIoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBSZW5kZXJMYXllcjo6aGFzRml4ZWRQb3Np
dGlvbmVkRGVzY2VuZGFudCgpCit7CisgICAgcmV0dXJuIG1faGFzRml4ZWRQb3NpdGlvbmVkRGVz
Y2VuZGFudDsKK30KKwogc3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiBzdHlsZS0+aGFzQm9yZGVyKCkgfHwgc3R5bGUt
Pmhhc0JvcmRlclJhZGl1cygpIHx8IHN0eWxlLT5oYXNPdXRsaW5lKCkgfHwgc3R5bGUtPmhhc0Fw
cGVhcmFuY2UoKSB8fCBzdHlsZS0+Ym94U2hhZG93KCkgfHwgc3R5bGUtPmhhc0ZpbHRlcigpOwpA
QCAtNTkzMCwyOCArNjEzMyw0MCBAQCBib29sIFJlbmRlckxheWVyOjppc1Zpc3VhbGx5Tm9uRW1w
dHkoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKQordm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlVmlzaWJpbGl0eUFmdGVyU3R5bGVDaGFu
Z2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIGlmICghb2xkU3R5bGUpCi0g
ICAgICAgIHJldHVybjsKKyAgICBFVmlzaWJpbGl0eSBvbGRWaXNpYmlsaXR5ID0gVklTSUJMRTsK
KyAgICBpZiAob2xkU3R5bGUpCisgICAgICAgIG9sZFZpc2liaWxpdHkgPSBvbGRTdHlsZS0+dmlz
aWJpbGl0eSgpOwogCi0gICAgYm9vbCB3YXNTdGFja2luZ0NvbnRleHQgPSBpc1N0YWNraW5nQ29u
dGV4dChvbGRTdHlsZSk7Ci0gICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dCA9IHRoaXMtPmlzU3Rh
Y2tpbmdDb250ZXh0KCk7Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0ICE9IHdhc1N0YWNraW5n
Q29udGV4dCkgewotICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsK
LSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KQotICAgICAgICAgICAgZGlydHlaT3JkZXJM
aXN0cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhclpPcmRlckxpc3RzKCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAob2xkVmlzaWJpbGl0eSAhPSByZW5kZXJlcigpLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkpIHsKKyAgICAgICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIgPSB0
aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpCisgICAgICAgICAgICBsYXllci0+
c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hhbmdlKGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBib29sIHdhc1N0YWNraW5nQ29udGV4
dCA9IGZhbHNlOworICAgIEVWaXNpYmlsaXR5IG9sZFZpc2liaWxpdHkgPSBWSVNJQkxFOworICAg
IGludCBvbGRaSW5kZXggPSAwOworICAgIGlmIChvbGRTdHlsZSkgeworICAgICAgICB3YXNTdGFj
a2luZ0NvbnRleHQgPSBpc1N0YWNraW5nQ29udGV4dChvbGRTdHlsZSk7CisgICAgICAgIG9sZFZp
c2liaWxpdHkgPSBvbGRTdHlsZS0+dmlzaWJpbGl0eSgpOworICAgICAgICBvbGRaSW5kZXggPSBv
bGRTdHlsZS0+ekluZGV4KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbmRlckxheWVyIGFs
cmVhZHkgaGFuZGxlcyB2aXNpYmlsaXR5IGNoYW5nZXMgdGhyb3VnaCBvdXIgdmlzaWJsaXR5IGRp
cnR5IGJpdHMuIFRoaXMgbG9naWMgY291bGQKICAgICAvLyBsaWtlbHkgYmUgZm9sZGVkIGFsb25n
IHdpdGggdGhlIHJlc3QuCi0gICAgaWYgKG9sZFN0eWxlLT56SW5kZXgoKSAhPSByZW5kZXJlcigp
LT5zdHlsZSgpLT56SW5kZXgoKSB8fCBvbGRTdHlsZS0+dmlzaWJpbGl0eSgpICE9IHJlbmRlcmVy
KCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSkgeworICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQg
PSB0aGlzLT5pc1N0YWNraW5nQ29udGV4dCgpOworICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCAh
PSB3YXNTdGFja2luZ0NvbnRleHQKKyAgICAgICAgfHwgb2xkVmlzaWJpbGl0eSAhPSByZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkKKyAgICAgICAgfHwgb2xkWkluZGV4ICE9IHJlbmRl
cmVyKCktPnN0eWxlKCktPnpJbmRleCgpKSB7CiAgICAgICAgIGRpcnR5U3RhY2tpbmdDb250YWlu
ZXJaT3JkZXJMaXN0cygpOwotICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQpCisgICAgICAg
IGlmIChpc1N0YWNraW5nQ29udGFpbmVyKCkpCiAgICAgICAgICAgICBkaXJ0eVpPcmRlckxpc3Rz
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsZWFyWk9yZGVyTGlzdHMoKTsKICAgICB9
CiB9CiAKQEAgLTYwMDEsMzkgKzYyMTYsMzkgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Ny
b2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogICAg
ICAgICB1cGRhdGVTY3JvbGxhYmxlQXJlYVNldChoYXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJm
bG93KCkgfHwgaGFzU2Nyb2xsYWJsZVZlcnRpY2FsT3ZlcmZsb3coKSk7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFu
dChSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9jaykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNldEFu
Y2VzdG9yQ2hhaW5IYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50KCkKIHsKICAgICBmb3IgKFJl
bmRlckxheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkg
ewotICAgICAgICBpZiAoIWxheWVyLT5tX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50
RGlydHkgJiYgbGF5ZXItPmhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCkpCisgICAg
ICAgIGlmICghbGF5ZXItPm1faGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ICYmIGxh
eWVyLT5oYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBsYXllci0+bV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5
ID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5k
YW50ID0gdHJ1ZTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIGxh
eWVyLT51cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKLSNlbmRpZgorICAgICAgICBs
YXllci0+bV9oYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50RGlydHkgPSBmYWxzZTsKKyAgICAg
ICAgaWYgKGxheWVyLT5tX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQpCisgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkgJiYgbGF5ZXItPnJl
bmRlcmVyKCkgPT0gY29udGFpbmluZ0Jsb2NrKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGxheWVyLT5tX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQgPSB0cnVlOworICAgICAgICBs
YXllci0+c2V0TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKGZhbHNlKTsKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXI6OmRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWRE
ZXNjZW5kYW50U3RhdHVzKCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5QW5jZXN0b3JDaGFpbkhh
c0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKQogewotICAgIG1faGFzT3V0T2ZGbG93
UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA9IHRydWU7CisgICAgaWYgKG1faGFzRml4ZWRQb3Np
dGlvbmVkRGVzY2VuZGFudCkgeworICAgICAgICBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRh
bnREaXJ0eSA9IHRydWU7CisgICAgICAgIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nKCk7CisgICAgfQogICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgcGFyZW50KCktPmRp
cnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50U3RhdHVzKCk7
CisgICAgICAgIHBhcmVudCgpLT5kaXJ0eUFuY2VzdG9yQ2hhaW5IYXNGaXhlZFBvc2l0aW9uZWRE
ZXNjZW5kYW50U3RhdHVzKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU91dE9mRmxv
d1Bvc2l0aW9uZWQoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQordm9pZCBSZW5kZXJMYXll
cjo6dXBkYXRlSGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudEFmdGVyU3R5bGVDaGFuZ2UoY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIGJvb2wgd2FzT3V0T2ZGbG93UG9zaXRp
b25lZCA9IG9sZFN0eWxlICYmIChvbGRTdHlsZS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0
aW9uIHx8IG9sZFN0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOwotICAgIGlmIChw
YXJlbnQoKSAmJiAoKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpICE9IHdhc091dE9mRmxvd1Bvc2l0aW9uZWQpKSB7Ci0gICAgICAgIHBhcmVudCgpLT5k
aXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1cygp
OwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgaWYgKCFyZW5kZXJl
cigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
ck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQotICAgICAgICAgICAgY29tcG9zaXRvcigpLT5zZXRT
aG91bGRSZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCgpOwotI2VuZGlmCisgICAgYm9v
bCB3YXNGaXhlZFBvc2l0aW9uZWQgPSBvbGRTdHlsZSAmJiAob2xkU3R5bGUtPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbik7CisgICAgaWYgKHBhcmVudCgpICYmIChpc0ZpeGVkUG9zaXRpb25l
ZCh0aGlzKSAhPSB3YXNGaXhlZFBvc2l0aW9uZWQpKSB7CisgICAgICAgIGlmIChpc0ZpeGVkUG9z
aXRpb25lZCh0aGlzKSkKKyAgICAgICAgICAgIHBhcmVudCgpLT5zZXRBbmNlc3RvckNoYWluSGFz
Rml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBw
YXJlbnQoKS0+ZGlydHlBbmNlc3RvckNoYWluSGFzRml4ZWRQb3NpdGlvbmVkRGVzY2VuZGFudFN0
YXR1cygpOwogICAgIH0KIH0KIApAQCAtNjA3NCwxMCArNjI4OSwxMSBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpCiAKICAgICB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7
CiAgICAgdXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2Uob2xkU3R5bGUpOwor
ICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlKG9sZFN0eWxlKTsKICAgICAvLyBP
dmVybGF5IHNjcm9sbGJhcnMgY2FuIG1ha2UgdGhpcyBsYXllciBzZWxmLXBhaW50aW5nIHNvIHdl
IG5lZWQKICAgICAvLyB0byByZWNvbXB1dGUgdGhlIGJpdCBvbmNlIHNjcm9sbGJhcnMgaGF2ZSBi
ZWVuIHVwZGF0ZWQuCiAgICAgdXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIoKTsKLSAgICB1cGRhdGVP
dXRPZkZsb3dQb3NpdGlvbmVkKG9sZFN0eWxlKTsKKyAgICB1cGRhdGVIYXNGaXhlZFBvc2l0aW9u
ZWREZXNjZW5kYW50QWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7CiAKICAgICBpZiAoIWhhc1Jl
ZmxlY3Rpb24oKSAmJiBtX3JlZmxlY3Rpb24pCiAgICAgICAgIHJlbW92ZVJlZmxlY3Rpb24oKTsK
QEAgLTYxMDcsOCArNjMyMyw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKICNlbmRpZgogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpOwotCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlID0gcmVuZGVyZXIo
KS0+c3R5bGUoKTsKICAgICBpZiAoY29tcG9zaXRvcigpLT51cGRhdGVMYXllckNvbXBvc2l0aW5n
U3RhdGUodGhpcykKICAgICAgICAgfHwgbmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRGb3JD
bGlwKG9sZFN0eWxlLCBuZXdTdHlsZSkKQEAgLTYxNDUsMTIgKzYzNTksMTQgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoYm9vbCBoYXNPdmVyZmxvdykKICAgICBp
ZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGZyYW1lLT5vd25lckVsZW1lbnQoKSkK
ICAgICAgICAgaXNWaXNpYmxlVG9IaXRUZXN0ICY9IG93bmVyLT5yZW5kZXJlcigpICYmIG93bmVy
LT5yZW5kZXJlcigpLT52aXNpYmxlVG9IaXRUZXN0aW5nKCk7CiAKLSAgICBpZiAoaGFzT3ZlcmZs
b3cgJiYgaXNWaXNpYmxlVG9IaXRUZXN0ID8gZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0
aGlzKSA6IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcykpCi0jaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgorICAgIGJvb2wgdXBkYXRl
ZFNjcm9sbGFibGVBcmVhU2V0ID0gZmFsc2U7CisgICAgaWYgKGhhc092ZXJmbG93ICYmIGlzVmlz
aWJsZVRvSGl0VGVzdCkKKyAgICAgICAgdXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZnJhbWVW
aWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHVwZGF0ZWRT
Y3JvbGxhYmxlQXJlYVNldCA9IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7
CisKKyAgICBpZiAodXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0KQorICAgICAgICBzY2hlZHVsZVVw
ZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IDVlMWM4YzlmODdiYWY0ZjQwMzZhOWYxZTc5OWFlY2IzYTZhYjk5NjAuLmQ5MDAx
MjM5NTJlNmIyNjU0ZGQyZmE3NzM0NDE4MDU4NmE0MDExMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCkBAIC0zMTUsOSArMzE1LDI4IEBAIHB1YmxpYzoKIAogdHlwZWRl
ZiBWZWN0b3I8TGF5ZXJGcmFnbWVudCwgMT4gTGF5ZXJGcmFnbWVudHM7CiAKK2VudW0gQ29tcG9z
aXRlZFNjcm9sbGluZ1VwZGF0ZU1vZGUgeworICAgIFVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywKKyAgICBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIK
K307CisKKy8vIFRoaXMgUkFJSSBvYmplY3QgYWxsb3dzIHVzIHRvIGF2b2lkIGNhbGxpbmcgdXBk
YXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nCisvLyB3aGlsZSBhbnkgaW5zdGFuY2UgaXMgaW4g
c2NvcGUuIFdoZW4gdGhlIGxhc3QgaW5zdGFuY2UgaXMgZGVzdHJ1Y3RlZCwgYWxsIAorLy8gdXBk
YXRlcyBhcmUgcHJvY2Vzc2VkLiBUaGlzIGFsbG93cyB1cyB0byBwb3N0cG9uZSB1cGRhdGVzIGR1
cmluZyBsYXllciBsaXN0CisvLyB1cGRhdGVzLiAoSWYgd2UgZGlkbid0IHBvc3Rwb25lIHRoZSB1
cGRhdGVzLCB0aGV5IHdvdWxkIGNhdXNlIGVycm9ycyBzaW5jZQorLy8gdGhleSByZXF1aXJlIGNs
ZWFuIGxpc3RzKS4KK3N0cnVjdCBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciB7Cisg
ICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIoUmVuZGVyVmlldyopOworICAgIFNj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKFJlbmRlckxheWVyKiwgQ29tcG9zaXRlZFNj
cm9sbGluZ1VwZGF0ZU1vZGUpOworICAgIH5TY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRl
cigpOworcHJpdmF0ZToKKyAgICBSZW5kZXJWaWV3KiBtX3JlbmRlclZpZXc7Cit9OworCiBjbGFz
cyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CisgICAgZnJpZW5kIHN0cnVjdCBTY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlcjsKIAogICAgIFJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZWxP
YmplY3QqKTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKQEAgLTM0MSw2ICszNjAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXBhaW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2b2lkIHJlbW92ZUZyb21Db21wb3NpdG9yKCk7CisK
ICAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZSBsYXllciBjb250ZW50cyBuZWVkIHRvIGJlIHJlcGFp
bnRlZC4gT25seSBoYXMgYW4gZWZmZWN0CiAgICAgLy8gaWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMg
YmVpbmcgdXNlZCwKICAgICB2b2lkIHNldEJhY2tpbmdOZWVkc1JlcGFpbnQoKTsKQEAgLTUwNiw2
ICs1MjcsMTAgQEAgcHVibGljOgogICAgIC8vIGxheWVyIGl0c2VsZi4KICAgICBSZW5kZXJMYXll
ciogc3RhY2tpbmdDb250YWluZXIoKSBjb25zdDsKIAorICAgIC8vIEdldHMgdGhlIGVuY2xvc2lu
ZyBzdGFja2luZyBjb250ZXh0IGZvciB0aGlzIGxheWVyLCBleGNsdWRpbmcgdGhpcworICAgIC8v
IGxheWVyIGl0c2VsZi4KKyAgICBSZW5kZXJMYXllciogc3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7
CisKICAgICAvLyBHZXRzIHRoZSBlbmNsb3Npbmcgc3RhY2tpbmcgY29udGFpbmVyIGZvciB0aGlz
IGxheWVyLCBwb3NzaWJseSB0aGUgbGF5ZXIKICAgICAvLyBpdHNlbGYsIGlmIGl0IGlzIGEgc3Rh
Y2tpbmcgY29udGFpbmVyLgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTdGFja2luZ0NvbnRh
aW5lcigpIHsgcmV0dXJuIGlzU3RhY2tpbmdDb250YWluZXIoKSA/IHRoaXMgOiBzdGFja2luZ0Nv
bnRhaW5lcigpOyB9CkBAIC01NTQsMTMgKzU3OSwxNiBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBv
ZiB0aGUgaXNzdWUgaXMgd2l0aCBzdWJ0cmVlIHJlbGF5b3V0OiB3ZSBkb24ndCBjaGVjayBpZiBv
dXIgYW5jZXN0b3JzIGhhdmUgc29tZSBkZXNjZW5kYW50IGZsYWdzIGRpcnR5LCBtaXNzaW5nIHNv
bWUgdXBkYXRlcy4KICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50OyB9CiAKKyAgICB2
b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50KCk7CisgICAg
dm9pZCBkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50U3RhdHVz
KCk7CisgICAgYm9vbCBoYXNGaXhlZFBvc2l0aW9uZWREZXNjZW5kYW50KCk7CisKICAgICAvLyBU
aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSBoYXZlIGFuIG91dCBvZiBmbG93IHBvc2l0aW9uZWQgZGVz
Y2VuZGFudCB3aG9zZQogICAgIC8vIGNvbnRhaW5pbmcgYmxvY2sgaXMgbm90IGEgZGVzY2VuZGFu
dCBvZiBvdXJzLiBJZiB0aGlzIGlzIHRydWUsIHdlIGNhbm5vdAogICAgIC8vIGF1dG9tYXRpY2Fs
bHkgb3B0IGludG8gY29tcG9zaXRlZCBzY3JvbGxpbmcgc2luY2UgdGhpcyBvdXQgb2YgZmxvdwog
ICAgIC8vIHBvc2l0aW9uZWQgZGVzY2VuZGFudCB3b3VsZCBiZWNvbWUgY2xpcHBlZCBieSB1cywg
cG9zc2libHkgYWx0ZXJpbmcgdGhlIAogICAgIC8vIHJlbmRlcmluZyBvZiB0aGUgcGFnZS4KLSAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVCghbV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVz
Y2VuZGFudERpcnR5KTsgaGVyZSBidXQgd2UgbWF5IGhpdCB0aGUgc2FtZSBidWdzIGFzIHZpc2li
bGUgY29udGVudCBhYm92ZS4KLSAgICBib29sIGhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5k
YW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudDsg
fQorICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKTsKIAogICAgIC8v
IEdldHMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHBvc2l0aW9uZWQgYW5jZXN0b3IgbGF5ZXIgKGFs
c28gaW5jbHVkZXMKICAgICAvLyB0aGUgPGh0bWw+IGxheWVyIGFuZCB0aGUgcm9vdCBsYXllciku
CkBAIC04NzksMTYgKzkwNywyNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludEFm
dGVyTGF5b3V0KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7
CisgICAgdm9pZCB1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwogICAgIHZvaWQgdXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5
bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogICAgIHZvaWQgdXBkYXRl
U2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
ICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgpOwogCi0gICAgdm9pZCBzZXRB
bmNlc3RvckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoUmVuZGVyT2JqZWN0
KiBjb250YWluaW5nQmxvY2spOwotICAgIHZvaWQgZGlydHlBbmNlc3RvckNoYWluSGFzT3V0T2ZG
bG93UG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKLSAgICB2b2lkIHVwZGF0ZU91dE9mRmxv
d1Bvc2l0aW9uZWQoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2b2lkIHVwZGF0
ZUhhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnRBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSk7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgdm9pZCB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICB2b2lkIHNldE5l
ZWRzQ29tcG9zaXRlZFNjcm9sbGluZyhib29sKTsKKworICAgIHZvaWQgc2NoZWR1bGVVcGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICB2b2lkIHNjaGVkdWxlVXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgdm9pZCBjYW5jZWxTY2hl
ZHVsZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpIGNvbnN0OworI2Vsc2UKKyAgICB2b2lk
IHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgeyB9CisgICAgdm9pZCBz
Y2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpIHsg
fQorICAgIHZvaWQgY2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMoKSB7
IH0KKyNlbmRpZgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBjaGFuZ2Vk
LgogICAgIGJvb2wgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtMTA1MSw3ICsxMDg5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpcnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3Rh
dHVzKCk7CiAgICAgdm9pZCBzZXRBbmNlc3RvckNoYWluSGFzVmlzaWJsZURlc2NlbmRhbnQoKTsK
IAotICAgIHZvaWQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyT2JqZWN0Kj4qIG91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWluaW5nQmxvY2tzID0gMCk7
CisgICAgdm9pZCB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAogICAgIC8vIFRo
aXMgZmxhZyBpcyBjb21wdXRlZCBieSBSZW5kZXJMYXllckNvbXBvc2l0b3IsIHdoaWNoIGtub3dz
IG1vcmUgYWJvdXQgM2QgaGllcmFyY2hpZXMgdGhhbiB3ZSBkby4KICAgICB2b2lkIHNldEhhczNE
VHJhbnNmb3JtZWREZXNjZW5kYW50KGJvb2wgYikgeyBtX2hhczNEVHJhbnNmb3JtZWREZXNjZW5k
YW50ID0gYjsgfQpAQCAtMTE1Nyw4ICsxMTk1LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIElmIHdl
IGhhdmUgbm8gb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBkZXNjZW5kYW50cyBhbmQgbm8gbm9uLWRl
c2NlbmRhbnQKICAgICAvLyBhcHBlYXJzIGJldHdlZW4gb3VyIGRlc2NlbmRhbnRzIGluIHN0YWNr
aW5nIG9yZGVyLCB0aGVuIHdlIG1heSBiZWNvbWUgYQogICAgIC8vIHN0YWNraW5nIGNvbnRleHQu
Ci0gICAgYm9vbCBtX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50IDogMTsKLSAgICBi
b29sIG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA6IDE7CisgICAgYm9v
bCBtX2hhc0ZpeGVkUG9zaXRpb25lZERlc2NlbmRhbnQgOiAxOworICAgIGJvb2wgbV9oYXNGaXhl
ZFBvc2l0aW9uZWREZXNjZW5kYW50RGlydHkgOiAxOwogCiAgICAgYm9vbCBtX25lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZyA6IDE7CiAKQEAgLTExNjYsNiArMTIwNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBkZXNjZW5kYW50cyBpbiBzdGFja2luZyBvcmRlci4gVGhpcyBpcyBvbmUgb2YgdGhlIHJl
cXVpcmVtZW50cyBvZiBiZWluZwogICAgIC8vIGFibGUgdG8gc2FmZWx5IGJlY29tZSBhIHN0YWNr
aW5nIGNvbnRleHQuCiAgICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tp
bmdPcmRlciA6IDE7CisgICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tp
bmdPcmRlckRpcnR5IDogMTsKIAogICAgIGNvbnN0IGJvb2wgbV9pc1Jvb3RMYXllciA6IDE7CiAK
QEAgLTEyOTIsNiArMTMzMSwxMCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3Jk
ZXJMaXN0cygpCiAKIGlubGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygp
CiB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFNjb3BlZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhyZW5k
ZXJlcigpLT52aWV3KCkpOworI2VuZGlmCisKICAgICBpZiAoIW1fek9yZGVyTGlzdHNEaXJ0eSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDA5ZjIyNTMwZjdlOTI2MThhOTljY2RkZTQ5NTA3
ZGY5YjNiYWI0NWIuLjAyYmRlYTkwZjljMTNkNzQwZGU3Mzk0N2VmNDdmNmRjYjNmNmE5MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCkBAIC03NjgsMTYgKzc2OCwxNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5
ZXJXYXNBZGRlZChSZW5kZXJMYXllciogLypwYXJlbnQqLywgUmVuZGVyTGF5ZXIqCiAgICAgc2V0
Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6bGF5ZXJXaWxsQmVSZW1vdmVkKFJlbmRlckxheWVyKiBwYXJlbnQsIFJlbmRlckxh
eWVyKiBjaGlsZCkKK1JlbmRlckxheWVyQ29tcG9zaXRvcjo6TGF5ZXJSZW1vdmFsUmVzdWx0IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJXaWxsQmVSZW1vdmVkKFJlbmRlckxheWVyKiBwYXJl
bnQsIFJlbmRlckxheWVyKiBjaGlsZCkKIHsKLSAgICBpZiAoIWNoaWxkLT5pc0NvbXBvc2l0ZWQo
KSB8fCBwYXJlbnQtPnJlbmRlcmVyKCktPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGNoaWxkKTsK
LSAgICByZXBhaW50SW5Db21wb3NpdGVkQW5jZXN0b3IoY2hpbGQsIGNoaWxkLT5iYWNraW5nKCkt
PmNvbXBvc2l0ZWRCb3VuZHMoKSk7Ci0KLSAgICBzZXRDb21wb3NpdGluZ1BhcmVudChjaGlsZCwg
MCk7Ci0gICAgc2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOworICAgIExheWVyUmVt
b3ZhbFJlc3VsdCByZXN1bHQgPSBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuY29udGFpbnMo
Y2hpbGQpID8gUmVtb3ZlZExheWVyV2FzVmlld3BvcnRDb25zdHJhaW5lZCA6IFJlbW92ZWRMYXll
cldhc1ZpZXdwb3J0Q29uc3RyYWluZWQ7CisgICAgaWYgKGNoaWxkLT5pc0NvbXBvc2l0ZWQoKSAm
JiAhcGFyZW50LT5yZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKKyAgICAg
ICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGNoaWxkKTsKKyAgICAgICAgcmVwYWlu
dEluQ29tcG9zaXRlZEFuY2VzdG9yKGNoaWxkLCBjaGlsZC0+YmFja2luZygpLT5jb21wb3NpdGVk
Qm91bmRzKCkpOworICAgICAgICBzZXRDb21wb3NpdGluZ1BhcmVudChjaGlsZCwgMCk7CisgICAg
ICAgIHNldENvbXBvc2l0aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9z
aW5nTm9uU3RhY2tpbmdDbGlwcGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29u
c3QKQEAgLTgyOCw2ICs4MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9P
dmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbgogICAgIGJvb2wg
aGF2ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CiAgICAgYWRkVG9PdmVybGFwTWFwKG92ZXJsYXBN
YXAsIGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CiAKKyAgICBTY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMo
bV9yZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC05MjksNiArOTMw
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVp
cmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICAgICAgY2hpbGRTdGF0ZS5tX3Rlc3Rp
bmdPdmVybGFwID0gdHJ1ZTsKICAgICB9CiAKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xMTQ0LDYgKzExNDYsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxh
eWVyKiBsYXllciwgVmVjdAogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4gbGF5ZXJDaGlsZHJl
bjsKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExpc3QgPSBsYXllckJhY2tpbmcg
PyBsYXllckNoaWxkcmVuIDogY2hpbGRMYXllcnNPZkVuY2xvc2luZ0xheWVyOwogCisgICAgU2Nv
cGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdV
cGRhdGVzKG1fcmVuZGVyVmlldyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlz
dE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgpAQCAtMTM4
NCw2ICsxMzg3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJl
ZUdlb21ldHJ5KFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHQKICNlbmRpZgogICAgIH0KIAor
ICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Ny
b2xsaW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBM
YXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYK
QEAgLTE0MzUsNiArMTQzOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVD
b21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciogY29tCiAgICAgaWYgKCFs
YXllci0+aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xs
aW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXll
ckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKQEAg
LTE0NzgsNiArMTQ4Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVS
ZXBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBJbnRSCiAgICAgICAgICAgICBs
YXllci0+c2V0QmFja2luZ05lZWRzUmVwYWludCgpOwogICAgIH0KIAorICAgIFNjb3BlZENvbXBv
c2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyht
X3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlv
bkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKQEAgLTI4OTUsNiArMjkw
MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudChjb25z
dCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0CiAKICAgICBjb25zdF9jYXN0PFJlbmRlckxheWVy
Kj4obGF5ZXIpLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAorICAgIFNjb3BlZENvbXBv
c2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyht
X3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlv
bkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0PFJlbmRlckxheWVyKj4obGF5ZXIp
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCmluZGV4IGI4Y2RmNjEyOTM4N2UxMDUxMzA5NThlNWU4NTQzYjY1NTM3OGJmM2Eu
LmFhYzgzMWM2OGRhODFmZjc4MWVkMWExZDNmN2UxZGE2ZWRiZjE2Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3NSw3ICsx
NzUsMTMgQEAgcHVibGljOgogICAgIAogICAgIC8vIE5vdGlmeSB1cyB0aGF0IGEgbGF5ZXIgaGFz
IGJlZW4gYWRkZWQgb3IgcmVtb3ZlZAogICAgIHZvaWQgbGF5ZXJXYXNBZGRlZChSZW5kZXJMYXll
ciogcGFyZW50LCBSZW5kZXJMYXllciogY2hpbGQpOwotICAgIHZvaWQgbGF5ZXJXaWxsQmVSZW1v
dmVkKFJlbmRlckxheWVyKiBwYXJlbnQsIFJlbmRlckxheWVyKiBjaGlsZCk7CisKKyAgICBlbnVt
IExheWVyUmVtb3ZhbFJlc3VsdCB7CisgICAgICAgIFJlbW92ZWRMYXllcldhc1ZpZXdwb3J0Q29u
c3RyYWluZWQsCisgICAgICAgIFJlbW92ZWRMYXllcldhc05vdFZpZXdwb3J0Q29uc3RyYWluZWQs
CisgICAgfTsKKworICAgIExheWVyUmVtb3ZhbFJlc3VsdCBsYXllcldpbGxCZVJlbW92ZWQoUmVu
ZGVyTGF5ZXIqIHBhcmVudCwgUmVuZGVyTGF5ZXIqIGNoaWxkKTsKIAogICAgIC8vIEdldCB0aGUg
bmVhcmVzdCBhbmNlc3RvciBsYXllciB0aGF0IGhhcyBvdmVyZmxvdyBvciBjbGlwLCBidXQgaXMg
bm90IGEgc3RhY2tpbmcgY29udGV4dAogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdOb25TdGFj
a2luZ0NsaXBwaW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZmI5ZjEzOTMwYjI4ZTY2
OWIyNDMzMzNlN2I0N2I2NDYwNWNmNTgwMi4uYTc2M2M0ZDE0OTcyYWQxZGE3OTg1YTA2YWUxMTA3
YTc1Y2U4NmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTc3Niw0MyArNzc2LDU1IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0CiAgICAgICAgICAgICBvID0gby0+cGFyZW50KCk7CiAgICAgICAgIH0K
ICAgICAgICAgQVNTRVJUKCFvIHx8ICFvLT5pc0Fub255bW91c0Jsb2NrKCkpOwotICAgIH0gZWxz
ZSBpZiAoIWlzVGV4dCgpICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlv
bikgewotICAgICAgICB3aGlsZSAobykgewotICAgICAgICAgICAgLy8gRm9yIHJlbHBvc2l0aW9u
ZWQgaW5saW5lcywgd2UgcmV0dXJuIHRoZSBuZWFyZXN0IG5vbi1hbm9ueW1vdXMgZW5jbG9zaW5n
IGJsb2NrLiBXZSBkb24ndCB0cnkKLSAgICAgICAgICAgIC8vIHRvIHJldHVybiB0aGUgaW5saW5l
IGl0c2VsZi4gIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGhhdmluZyBhIHBvc2l0aW9uZWQgb2Jq
ZWN0cwotICAgICAgICAgICAgLy8gbGlzdCBpbiBhbGwgUmVuZGVySW5saW5lcyBhbmQgbGV0cyB1
cyByZXR1cm4gYSBzdHJvbmdseS10eXBlZCBSZW5kZXJCbG9jayogcmVzdWx0Ci0gICAgICAgICAg
ICAvLyBmcm9tIHRoaXMgbWV0aG9kLiAgVGhlIGNvbnRhaW5lcigpIG1ldGhvZCBjYW4gYWN0dWFs
bHkgYmUgdXNlZCB0byBvYnRhaW4gdGhlCi0gICAgICAgICAgICAvLyBpbmxpbmUgZGlyZWN0bHku
Ci0gICAgICAgICAgICBpZiAoby0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBTdGF0aWNQb3NpdGlv
biAmJiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNlZCgpKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGlmIChvLT5pc1JlbmRlclZpZXcoKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChvLT5oYXNUcmFuc2Zvcm0oKSAmJiBvLT5pc1Jl
bmRlckJsb2NrKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgfSBlbHNlIGlmICghaXNU
ZXh0KCkgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uKQorICAgICAg
ICBvID0gY29udGFpbmluZ0Jsb2NrT2JqZWN0SWZBYnNvbHV0ZVBvc2l0aW9uZWQobyk7CisgICAg
ZWxzZQorICAgICAgICBvID0gY29udGFpbmluZ0Jsb2NrT2JqZWN0SWZSZWxhdGl2ZU9yU3RhdGlj
UG9zaXRpb25lZChvKTsKIAotICAgICAgICAgICAgaWYgKG8tPnN0eWxlKCktPmhhc0luRmxvd1Bv
c2l0aW9uKCkgJiYgby0+aXNJbmxpbmUoKSAmJiAhby0+aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgbyA9IG8tPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICAgICBpZiAoby0+aXNT
VkdGb3JlaWduT2JqZWN0KCkpIC8vZm9yZWlnbk9iamVjdCBpcyB0aGUgY29udGFpbmluZyBibG9j
ayBmb3IgY29udGVudHMgaW5zaWRlIGl0Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYK
KyAgICBpZiAoIW8gfHwgIW8tPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIDA7IC8v
IFRoaXMgY2FuIHN0aWxsIGhhcHBlbiBpbiBjYXNlIG9mIGFuIG9ycGhhbmVkIHRyZWUKIAotICAg
ICAgICAgICAgbyA9IG8tPnBhcmVudCgpOwotICAgICAgICB9CisgICAgcmV0dXJuIHRvUmVuZGVy
QmxvY2sobyk7Cit9CiAKLSAgICAgICAgd2hpbGUgKG8gJiYgby0+aXNBbm9ueW1vdXNCbG9jaygp
KQorUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9ja09iamVjdElmQWJz
b2x1dGVQb3NpdGlvbmVkKFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAgICB3aGlsZSAobykg
eworICAgICAgICAvLyBGb3IgcmVscG9zaXRpb25lZCBpbmxpbmVzLCB3ZSByZXR1cm4gdGhlIG5l
YXJlc3Qgbm9uLWFub255bW91cyBlbmNsb3NpbmcgYmxvY2suIFdlIGRvbid0IHRyeQorICAgICAg
ICAvLyB0byByZXR1cm4gdGhlIGlubGluZSBpdHNlbGYuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lk
IGhhdmluZyBhIHBvc2l0aW9uZWQgb2JqZWN0cworICAgICAgICAvLyBsaXN0IGluIGFsbCBSZW5k
ZXJJbmxpbmVzIGFuZCBsZXRzIHVzIHJldHVybiBhIHN0cm9uZ2x5LXR5cGVkIFJlbmRlckJsb2Nr
KiByZXN1bHQKKyAgICAgICAgLy8gZnJvbSB0aGlzIG1ldGhvZC4gVGhlIGNvbnRhaW5lcigpIG1l
dGhvZCBjYW4gYWN0dWFsbHkgYmUgdXNlZCB0byBvYnRhaW4gdGhlCisgICAgICAgIC8vIGlubGlu
ZSBkaXJlY3RseS4KKyAgICAgICAgaWYgKG8tPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gU3RhdGlj
UG9zaXRpb24gJiYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVwbGFjZWQoKSkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgaWYgKG8tPmlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChvLT5oYXNUcmFuc2Zvcm0oKSAmJiBvLT5pc1JlbmRlckJsb2Nr
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoby0+c3R5bGUoKS0+aGFzSW5G
bG93UG9zaXRpb24oKSAmJiBvLT5pc0lubGluZSgpICYmICFvLT5pc1JlcGxhY2VkKCkpIHsKICAg
ICAgICAgICAgIG8gPSBvLT5jb250YWluaW5nQmxvY2soKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB3aGlsZSAobyAmJiAoKG8tPmlzSW5saW5lKCkgJiYgIW8tPmlzUmVwbGFjZWQoKSkgfHwgIW8t
PmlzUmVuZGVyQmxvY2soKSkpCi0gICAgICAgICAgICBvID0gby0+cGFyZW50KCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGlmIChvLT5p
c1NWR0ZvcmVpZ25PYmplY3QoKSkgLy8gZm9yZWlnbk9iamVjdCBpcyB0aGUgY29udGFpbmluZyBi
bG9jayBmb3IgY29udGVudHMgaW5zaWRlIGl0CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgor
CisgICAgICAgIG8gPSBvLT5wYXJlbnQoKTsKICAgICB9CiAKLSAgICBpZiAoIW8gfHwgIW8tPmlz
UmVuZGVyQmxvY2soKSkKLSAgICAgICAgcmV0dXJuIDA7IC8vIFRoaXMgY2FuIHN0aWxsIGhhcHBl
biBpbiBjYXNlIG9mIGFuIG9ycGhhbmVkIHRyZWUKKyAgICB3aGlsZSAobyAmJiBvLT5pc0Fub255
bW91c0Jsb2NrKCkpCisgICAgICAgIG8gPSBvLT5jb250YWluaW5nQmxvY2soKTsKIAotICAgIHJl
dHVybiB0b1JlbmRlckJsb2NrKG8pOworICAgIHJldHVybiBvOworfQorCitSZW5kZXJPYmplY3Qq
IFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrT2JqZWN0SWZSZWxhdGl2ZU9yU3RhdGljUG9z
aXRpb25lZChSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgd2hpbGUgKG8gJiYgKChvLT5p
c0lubGluZSgpICYmICFvLT5pc1JlcGxhY2VkKCkpIHx8ICFvLT5pc1JlbmRlckJsb2NrKCkpKQor
ICAgICAgICBvID0gby0+cGFyZW50KCk7CisgICAgcmV0dXJuIG87CiB9CiAKIHN0YXRpYyBib29s
IG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBGaWxsTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDMxNWMxMjdjZmZiMjE2NjUxOGFlNjU5Y2IwYzVmMTAyMWRjNzJjN2YuLjdhMTU4YTlj
YTM0N2M1MDRlNDc1MTRiNTRjOTI2MWIxNzA3YmFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTc1Nyw2ICs3NTcsMTAgQEAgcHVibGljOgogICAgIC8vIHJl
dHVybnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2ZWwgZWxlbWVudCBmb3IgdGhpcyBlbGVtZW50
LgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKIAorICAgIC8vIFRo
ZXNlIGFyZSBoZWxwZXIgbWV0aG9kcyBmb3IgY29udGFpbmluZ0Jsb2NrLgorICAgIFJlbmRlck9i
amVjdCogY29udGFpbmluZ0Jsb2NrT2JqZWN0SWZBYnNvbHV0ZVBvc2l0aW9uZWQoUmVuZGVyT2Jq
ZWN0KiBpbml0aWFsT2JqZWN0KSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdC
bG9ja09iamVjdElmUmVsYXRpdmVPclN0YXRpY1Bvc2l0aW9uZWQoUmVuZGVyT2JqZWN0KiBpbml0
aWFsT2JqZWN0KSBjb25zdDsKKwogICAgIGJvb2wgY2FuQ29udGFpbkZpeGVkUG9zaXRpb25PYmpl
Y3RzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc1JlbmRlclZpZXcoKSB8fCAoaGFz
VHJhbnNmb3JtKCkgJiYgaXNSZW5kZXJCbG9jaygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCmluZGV4IDMyMTczOTY3MjdkNWM4Y2U3ZWZmNTA4MThjMmY1NzQ0ZDVlODlm
MTcuLmFiYjY5YWJhZTIwZDJjZTgxZWZjNTBjZmE4YTFmMDA0NGFiMzY1NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAgUmVuZGVyVmll
dzo6UmVuZGVyVmlldyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVp
Z2h0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1fbGF5b3V0U3RhdGUoMCkKICAgICAsIG1fbGF5b3V0
U3RhdGVEaXNhYmxlQ291bnQoMCkKKyAgICAsIG1fc2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXJzQ291bnQoMCkKICAgICAsIG1fcmVuZGVyUXVvdGVIZWFkKDApCiAgICAgLCBtX3JlbmRl
ckNvdW50ZXJDb3VudCgwKQogICAgICwgbV9sYXlvdXRQaGFzZShSZW5kZXJWaWV3Tm9ybWFsTGF5
b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggM2M4NGFhYzBjYmU5
ZDExYTNjODUyYTVjNDdlOGRkNGFmNTUzNDhjOC4uZTIyZmU2N2ZjYjU3NTAzYTJkOTcwNDc2Y2I3
MjZlNzNhYTIyNmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0y
MjcsNyArMjI3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlbmRlckNvdW50ZXIoKSB7IG1f
cmVuZGVyQ291bnRlckNvdW50Kys7IH0KICAgICB2b2lkIHJlbW92ZVJlbmRlckNvdW50ZXIoKSB7
IEFTU0VSVChtX3JlbmRlckNvdW50ZXJDb3VudCA+IDApOyBtX3JlbmRlckNvdW50ZXJDb3VudC0t
OyB9CiAgICAgYm9vbCBoYXNSZW5kZXJDb3VudGVycygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRl
ckNvdW50OyB9Ci0gICAgCisKKyAgICB1bnNpZ25lZCYgc2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXJzQ291bnQoKSB7IHJldHVybiBtX3Njb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRh
dGVyc0NvdW50OyB9CisgICAgSGFzaFNldDxSZW5kZXJMYXllcio+JiBwZW5kaW5nQ29tcG9zaXRl
ZFNjcm9sbGluZ1VwZGF0ZXMoKSB7IHJldHVybiBtX3BlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlczsgfQorICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiYgcGVuZGluZ0NvbnRpZ3VpdHlV
cGRhdGVzKCkgeyByZXR1cm4gbV9wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXM7IH0KKwogICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKQEAgLTMzMCw2ICszMzQs
MTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50Owog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CisKKyAgICB1bnNpZ25lZCBtX3Njb3BlZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50OworICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3Bl
bmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlczsKKyAgICBIYXNoU2V0PFJlbmRlckxheWVy
Kj4gbV9wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXM7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKICAgICBPd25QdHI8Q3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dD4gbV9jdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE0ZTQwM2U1ZTFk
NjIxZTI4ZTkzOTFhYjJmNzI2NTFjNGJjYWZiNzAuLmI4YTAxOThmNTA5YmE4MzllMjUzOGVlYjU0
YmYyODhmOGU2YzNmMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wNC0wMiAgSWFuIFZv
bGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2YgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAgICAg
ICAgTm90ZTogVGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5IEds
ZW5uIEhhcnRtYW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0IGZv
cgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBpbiBv
cmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMgY2F1
c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgdXBk
YXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCksIHNv
IHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXIgUkFJSSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBUaGlz
IGhhcyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1cyB0
bworICAgICAgICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8gYSBz
dHlsZSBjaGFuZ2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhhdCBz
aG91bGRuJ3QgYmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAgIEl0
IGFsc28gbGV0cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5ZXIu
IElmIHdlCisgICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xlIGxh
eWVyLCBvbmx5IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICAqIGNv
bXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3Jv
bGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
Y29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNj
cm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvb3ZlcmZsb3cvZHluYW1pYy1jb21wb3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRtbDoK
KwogMjAxMy0wNC0wMiAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWlu
dG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8t
Y29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNGRjMjkxNTY1MDU0OTJkYmRkZjg2N2QxOWVmMjkwNzk5ZDNhZDlmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxs
eS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzkgQEAKK2l0ZXJhdGlvbiAwOiBQQVNTLCBkb2VzIG5vdCBoYXZl
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDI6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlv
biAzOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gNDogUEFTUywg
aGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gNTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0
cmVlLgoraXRlcmF0aW9uIDY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDc6IFBB
U1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA4OiBQQVNTLCBoYXMgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiA5OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMTA6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAx
MTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTI6IFBBU1MsIGhhcyBsYXllciB0
cmVlLgoraXRlcmF0aW9uIDEzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNDog
UEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTU6IFBBU1MsIGhhcyBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDE2OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNzogUEFT
UywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE4OiBQQVNTLCBkb2VzIG5v
dCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgor
aXRlcmF0aW9uIDIwOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMTogUEFTUywg
aGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDIzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNDogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJl
ZS4KK2l0ZXJhdGlvbiAyNjogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0
aW9uIDI3OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyODogUEFTUywgaGFzIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMjk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDMwOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMTogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMzI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMz
OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNDogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMzU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJh
dGlvbiAzNjogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzc6IFBBU1MsIGhhcyBs
YXllciB0cmVlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxl
LWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGlj
YWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNWFhYWUyZDhjNjcwYjY3ZjBlYzQxZWU1ZGQ0ODkyNzMzNzNkM2NjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21h
dGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2Uu
aHRtbApAQCAtMCwwICsxLDE2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICA8c3R5bGU+CisgICAgI3ByZWRlY2Vzc29yIHsKKyAgICAgIHdpZHRoOiA3MHB4OworICAgICAg
aGVpZ2h0OiA3MHB4OworICAgICAgbGVmdDogMjVweDsKKyAgICAgIHRvcDogMjVweDsKKyAgICAg
IHotaW5kZXg6IDI7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICBkaXNwbGF5OiBub25lOworICAgIH0KKworICAgICNjb250YWlu
ZXIgeworICAgICAgd2lkdGg6IDUwMHB4OworICAgICAgaGVpZ2h0OiA1MDBweDsKKyAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICB3aWR0aDog
MXB4OworICAgICAgaGVpZ2h0OiAxcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7
CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgfQorCisgICAgI2NvbnRlbnRQcmVkZWNl
c3NvciB7CisgICAgICB6LWluZGV4OiAzOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWln
aHQ6IDUwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9CisKKyAgICAjY29udGVudFN1
Y2Nlc3NvciB7CisgICAgICB3aWR0aDogMTAwMHB4OworICAgICAgaGVpZ2h0OiAxMDAwcHg7Cisg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgdmFyIGRlYnVnID0gZmFs
c2U7CisKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
OworICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsK
KyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicp
OworICAgIHZhciBjb250ZW50UHJlZGVjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGVudFByZWRlY2Vzc29yJyk7CisgICAgdmFyIGNvbnRlbnRTdWNjZXNzb3IgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGVudFN1Y2Nlc3NvcicpOworCisKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOworCisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisK
KyAgICBmdW5jdGlvbiB3cml0ZVJlc3VsdChpdGVyYXRpb24sIGV4cGVjdGVkUmVzdWx0KQorICAg
IHsKKyAgICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgaWYgKGRlYnVnKQorICAgICAgICB3
cml0ZURlYnVnKGl0ZXJhdGlvbik7CisKKyAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIml0ZXJh
dGlvbiAiICsgaXRlcmF0aW9uICsgIjogIjsKKworICAgICAgdmFyIGhhc0xheWVyVHJlZSA9ICEh
d2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgaWYgKGhh
c0xheWVyVHJlZSA9PT0gZXhwZWN0ZWRSZXN1bHQpCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gIlBBU1MsICI7CisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZB
SUwsICI7CisKKyAgICAgIGlmIChoYXNMYXllclRyZWUpCisgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gImhhcyBsYXllciB0cmVlLlxuIjsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSAiZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLlxuIjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB3cml0ZURlYnVnKGl0ZXJhdGlvbikKKyAgICB7CisgICAgICB2YXIgZWxlbWVudHMg
PSBbY29udGFpbmVyLCBjb250ZW50UHJlZGVjZXNzb3IsIGNvbnRlbnQsIGNvbnRlbnRTdWNjZXNz
b3JdOworCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNbaV07CisgICAgICAgIHZhciBjb21wdXRl
ZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKworICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9ICJpdGVyYXRpb24gIiArIGl0ZXJhdGlvbiArICI6XG4iOworICAgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9ICJcdGVsZW1lbnQ6ICIgKyBlbGVtZW50LmlkICsgIlxuIjsKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRoZWlnaHQ6ICIgKyBjb21wdXRlZFN0eWxlLmhlaWdo
dCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0d2lkdGg6ICIgKyBjb21w
dXRlZFN0eWxlLndpZHRoICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRv
dmVyZmxvd1g6ICIgKyBjb21wdXRlZFN0eWxlLm92ZXJmbG93WCArICJcbiI7CisgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgKz0gIlx0b3ZlcmZsb3dZOiAiICsgY29tcHV0ZWRTdHlsZS5vdmVyZmxv
d1kgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdGRpc3BsYXk6ICIgKyBj
b21wdXRlZFN0eWxlLmRpc3BsYXkgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9
ICJcdHpJbmRleDogIiArIGNvbXB1dGVkU3R5bGUuekluZGV4ICsgIlxuIjsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICAgIGNvbnRlbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29udGVudCcpOworICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgICAgY29udGVudFByZWRlY2Vzc29yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRQcmVkZWNlc3NvcicpOworICAgICAgY29udGVu
dFN1Y2Nlc3NvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50U3VjY2Vzc29yJyk7
CisKKyAgICAgIHZhciBjb3VudCA9IDA7CisKKyAgICAgIHdyaXRlUmVzdWx0KGNvdW50KyssIGZh
bHNlKTsKKworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgY29u
dGVudC5zdHlsZS5oZWlnaHQgPSBpID8gJzEwMDBweCcgOiAnMXB4JzsKKyAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICBjb250ZW50LnN0eWxlLndpZHRoID0g
aiA/ICcxMDAwcHgnIDogJzFweCc7CisgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCAyOyBr
KyspIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5vdmVyZmxvd1ggPSBrID8gJ3Njcm9s
bCcgOiAndmlzaWJsZSc7CisgICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IDI7IG0rKykg
eworICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0gbSA/ICdzY3JvbGwn
IDogJ3Zpc2libGUnOworICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IDI7IG4rKykg
eworICAgICAgICAgICAgICAgIGNvbnRlbnRTdWNjZXNzb3Iuc3R5bGUuZGlzcGxheSA9IG4gPyAn
YmxvY2snIDogJ25vbmUnOworCisgICAgICAgICAgICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywg
ISEoKGkgfHwgaiB8fCBuKSAmJiAoayB8fCBtKSkpOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGNvbnRlbnQu
c3R5bGUuaGVpZ2h0ID0gJzEwMDBweCc7CisgICAgICBjb250ZW50LnN0eWxlLndpZHRoID0gJzEw
MDBweCc7CisgICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dYID0gJ3Njcm9sbCc7CisgICAg
ICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7CisgICAgICBjb250ZW50U3Vj
Y2Vzc29yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICBwcmVkZWNlc3Nvci5zdHlsZS5k
aXNwbGF5ID0gJ2Jsb2NrJzsKKworICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywgdHJ1ZSk7CisK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGNvbnRlbnRQcmVk
ZWNlc3Nvci5zdHlsZS5kaXNwbGF5ID0gaSA/ICdub25lJyA6ICdibG9jayc7CisgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJ
bmRleCA9IGogPyAnYXV0bycgOiAnMSc7CisKKyAgICAgICAgICB3cml0ZVJlc3VsdChjb3VudCsr
LCBpICE9PSAwIHx8IGogIT09IDEpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwcmVkZWNlc3NvciI+PC9kaXY+Cisg
IDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iY29udGVudFByZWRlY2Vzc29yIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250ZW50Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250ZW50
U3VjY2Vzc29yIj48L2Rpdj4KKyAgPC9kaXY+CisgIDxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8t
Y29tcG9zaXRlZC1zY3JvbGxpbmcuaHRtbAppbmRleCAxZTY3YjVkZDc4ZmI3MTFiYmUxNGMxNjYx
ODgzMmU2MTFkYWZhZjQwLi5iNTZmNTQzOWM1ZTU0NmY1ZDZiOTM2ZmJlMjViYTE5NzUzMWRmMzRh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNh
bGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNj
cm9sbGluZy5odG1sCkBAIC0xMzAsMTMgKzEzMCwxNCBAQAogICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgLy8gVGhlIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUgaWYgdGhlIHRoZSBl
bGVtZW50IHRvIGhpZGUgaXMKLSAgICAgICAgICAgICAgLy8gZGlzcGxheTpoaWRkZW4gb3IgZGlz
cGxheTpub25lLgorICAgICAgICAgICAgICAvLyB2aXNpYmlsaXR5OmhpZGRlbiBvciBkaXNwbGF5
Om5vbmUuCiAgICAgICAgICAgICAgIGlmIChsID09IDApCiAgICAgICAgICAgICAgICAgdG9IaWRl
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB0b0hpZGUuc3R5bGUuZGlzcGxheSA9ICdoaWRkZW4nOworICAgICAgICAgICAgICAgIHRv
SGlkZS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAKICAgICAgICAgICAgICAgc2libGlu
Zy5zdHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICAgICAgICAgIHNpYmxpbmcuc3R5bGUudmlzaWJp
bGl0eSA9ICcnOwogCiAgICAgICAgICAgICAgIGlmIChqID09IDApCiAgICAgICAgICAgICAgICAg
c2libGluZy5zdHlsZS56SW5kZXggPSAobWF4WkluZGV4ICsgMSkudG9TdHJpbmcoKTsKQEAgLTE5
NywxMiArMTk4LDE2IEBACiAgICAgICBwcmVkZWNlc3Nvci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OwogICAgICAgc3VjY2Vzc29yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICBmb3IgKGkg
PSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIGlmIChpID09IDApCi0gICAgICAgICAgZGVzY2Vu
ZGFudC5zdHlsZS5kaXNwbGF5ID0gJ2hpZGRlbic7Ci0gICAgICAgIGVsc2UgaWYgKGkgPT0gMSkK
KyAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgIGRlc2NlbmRhbnQuc3R5bGUudmlzaWJp
bGl0eSA9ICdoaWRkZW4nOwogICAgICAgICAgIGRlc2NlbmRhbnQuc3R5bGUuZGlzcGxheSA9ICcn
OwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoaSA9PSAxKSB7CisgICAgICAgICAg
ZGVzY2VuZGFudC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CisgICAgICAgICAgZGVzY2VuZGFudC5z
dHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZGVzY2VuZGFu
dC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICAgICAgICAgZGVzY2VuZGFudC5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnOworICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIG91dCBvZiBmbG93
IHBvc2l0aW9uZWQgZGVzY2VuZGFudCBpcyB2aXNpYmxlLCB3ZSBjYW5ub3Qgb3B0CiAgICAgICAg
IC8vIGludG8gY29tcG9zaXRlZCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVyZmxvdy9kby1ub3Qtb3B0LWluLXdpdGgtb3V0LW9mLWZsb3ctZGVzY2Vu
ZGFudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9kby1u
b3Qtb3B0LWluLXdpdGgtb3V0LW9mLWZsb3ctZGVzY2VuZGFudC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGE0ZWRlYjljYTFlYjczMjRkOTJjYWZmMDAzNmIwYTcwNDVlYjdlYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2RvLW5vdC1vcHQtaW4t
d2l0aC1vdXQtb2YtZmxvdy1kZXNjZW5kYW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBA
CitJdGVyYXRpb24gMDogUGFzc2VkCitJdGVyYXRpb24gMCwgbGF5ZXIgdHJlZQorSXRlcmF0aW9u
IDE6IFBhc3NlZAorSXRlcmF0aW9uIDEsIG5vIGxheWVyIHRyZWUKK0l0ZXJhdGlvbiAyOiBQYXNz
ZWQKK0l0ZXJhdGlvbiAyLCBsYXllciB0cmVlCitJdGVyYXRpb24gMzogUGFzc2VkCitJdGVyYXRp
b24gMywgbm8gbGF5ZXIgdHJlZQorSXRlcmF0aW9uIDQ6IFBhc3NlZAorSXRlcmF0aW9uIDQsIGxh
eWVyIHRyZWUKK0l0ZXJhdGlvbiA1OiBQYXNzZWQKK0l0ZXJhdGlvbiA1LCBubyBsYXllciB0cmVl
CitJdGVyYXRpb24gNjogUGFzc2VkCitJdGVyYXRpb24gNiwgbGF5ZXIgdHJlZQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9kby1ub3Qtb3B0LWluLXdpdGgt
b3V0LW9mLWZsb3ctZGVzY2VuZGFudC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmZsb3cvZG8tbm90LW9wdC1pbi13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMGIwOWU3ZjQxNDdhMWY5ODRjMDNlMjY4ZmNhMTllNmI0MTQyYmE3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZG8tbm90LW9wdC1p
bi13aXRoLW91dC1vZi1mbG93LWRlc2NlbmRhbnQuaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
ICAgICNjb250YWluZXIgeworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICBtYXJnaW46IDIwcHg7CisgICAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisKKyAgICAjYWJzLXBvcy1hbmNlc3RvciB7
CisgICAgICB3aWR0aDogNTAwcHg7CisgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgei1pbmRleDogMDsKKyAgICB9CisKKyAgICAjcG9zaXRpb25l
ZC1hbmNlc3RvciB7CisgICAgICB3aWR0aDogMTUwcHg7CisgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0KKworICAgICNkZXNjZW5kYW50IHsKKyAg
ICAgIGxlZnQ6IDEwcHg7CisgICAgICB0b3A6IDEwcHg7CisgICAgICB3aWR0aDogNTBweDsKKyAg
ICAgIGhlaWdodDogNTBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICB6LWluZGV4OiAtMjA7CisgICAgfQorICA8L3N0eWxl
PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAg
IHZhciBkZWJ1Z01vZGUgPSBmYWxzZTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiB3cml0ZShz
dHIpCisgICAgeworICAgICAgdmFyIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJyk7CisgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdc
bicpOworICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgIH0KKworICAgIHZhciBpdGVy
YXRpb24gPSAwOworICAgIGZ1bmN0aW9uIHByaW50UmVzdWx0KGV4cGVjdGVkUmVzdWx0KQorICAg
IHsKKyAgICAgIC8vIEZvcmNlIGEgc3R5bGUgcmVjYWxjLgorICAgICAgZG9jdW1lbnQuYm9keS5v
ZmZzZXRUb3A7CisKKyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHZhciBs
YXllclRyZWUgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisK
KyAgICAgICAgaWYgKCFsYXllclRyZWUgPT0gIWV4cGVjdGVkUmVzdWx0KQorICAgICAgICAgIHdy
aXRlKCdJdGVyYXRpb24gJyArIGl0ZXJhdGlvbi50b1N0cmluZygpICsgJzogUGFzc2VkJykKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHdyaXRlKCdJdGVyYXRpb24gJyArIGl0ZXJhdGlvbi50b1N0
cmluZygpICsgJzogRkFJTEVEJykKKworICAgICAgICBpZiAobGF5ZXJUcmVlKSB7CisgICAgICAg
ICAgd3JpdGUoJ0l0ZXJhdGlvbiAnICsgaXRlcmF0aW9uLnRvU3RyaW5nKCkgKyAnLCBsYXllciB0
cmVlJyk7CisgICAgICAgICAgaWYgKGRlYnVnTW9kZSkKKyAgICAgICAgICAgICAgd3JpdGUobGF5
ZXJUcmVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgd3JpdGUoJ0l0ZXJhdGlvbiAnICsg
aXRlcmF0aW9uLnRvU3RyaW5nKCkgKyAnLCBubyBsYXllciB0cmVlJyk7CisgICAgICB9CisgICAg
ICBpdGVyYXRpb24rKzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAg
ICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7
CisgICAgICB2YXIgcG9zaXRpb25lZEFuY2VzdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Bvc2l0aW9uZWQtYW5jZXN0b3InKTsKKyAgICAgIHZhciBkZXNjZW5kYW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Rlc2NlbmRhbnQnKTsKKworICAgICAgLy8gSW5pdGlhbCBjb25maWd1
cmF0aW9uIHNob3VsZCBvcHQgaW4uCisgICAgICBwcmludFJlc3VsdCh0cnVlKTsKKworICAgICAg
Ly8gSWYgcG9zaXRpb25lZCBhbmNlc3RvciBjZWFzZXMgdG8gYmUgcG9zaXRpb25lZCwgdGhlIGNv
bnRhaW5pbmcKKyAgICAgIC8vIHdpbGwgYmVjb21lIHRoZSBhYnMtcG9zLWFuY2VzdG9yLiBXZSBz
aG91bGQgb3B0IG91dC4KKyAgICAgIHBvc2l0aW9uZWRBbmNlc3Rvci5zdHlsZS5wb3NpdGlvbiA9
ICdzdGF0aWMnOworICAgICAgcHJpbnRSZXN1bHQoZmFsc2UpOworCisgICAgICAvLyBJZiB3ZSBn
ZXQgcmlkIG9mIHRoZSBvdXQtb2YtZmxvdyBwb3NpdGlvbmVkIGRlc2NlbmRhbnQgYXQgdGhpcyBw
b2ludCwKKyAgICAgIC8vIGl0IHNob3VsZCBiZSBvayB0byBvcHQgYmFjayBpbi4KKyAgICAgIGRl
c2NlbmRhbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgIHByaW50UmVzdWx0KHRydWUp
OworCisgICAgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gdXMgdG8gb3VyIHByZXZpb3VzIHN0YXRl
LgorICAgICAgZGVzY2VuZGFudC5zdHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICBwcmludFJlc3Vs
dChmYWxzZSk7CisKKyAgICAgIC8vIElmIHRoZSBkZXNjZW5kYW50IGNlYXNlcyB0byBiZSBvdXQt
b2YtZmxvdy1wb3NpdGlvbmVkLCB0aGVuIHdlIHNob3VsZAorICAgICAgLy8gb3B0IGluLgorICAg
ICAgZGVzY2VuZGFudC5zdHlsZS5wb3NpdGlvbiA9ICdzdGF0aWMnOworICAgICAgcHJpbnRSZXN1
bHQodHJ1ZSk7CisKKyAgICAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiB1cyB0byBvdXIgcHJldmlv
dXMgc3RhdGUuCisgICAgICBkZXNjZW5kYW50LnN0eWxlLnBvc2l0aW9uID0gJyc7CisgICAgICBw
cmludFJlc3VsdChmYWxzZSk7CisKKyAgICAgIC8vIElmIHRoZSBwb3NpdGlvbmVkQW5jZXN0b3Ig
YWdhaW4gYmVjb21lcyBwb3NpdGlvbmVkLCBpdCB3aWxsIGJlY29tZSB0aGUKKyAgICAgIC8vIGNv
bnRhaW5pbmcgYmxvY2sgZm9yIHRoZSBkZXNjZW5kYW50IGFuZCB3ZSBzaG91bGQgb3B0IGluLgor
ICAgICAgcG9zaXRpb25lZEFuY2VzdG9yLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKKyAg
ICAgIHByaW50UmVzdWx0KHRydWUpOworICAgIH0gLy8gZnVuY3Rpb24gZG9UZXN0CisKKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOworICA8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgaWQ9ImFicy1wb3MtYW5jZXN0b3IiPgorICAg
IDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICA8ZGl2IGlkPSJwb3NpdGlvbmVkLWFuY2VzdG9y
Ij4KKyAgICAgICAgPGRpdiBpZD0iZGVzY2VuZGFudCI+PC9kaXY+CisgICAgICA8L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+CisgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9k
eW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1sIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmZsb3cvZHluYW1pYy1jb21wb3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRt
bAppbmRleCA0MGVlYTVmMmQ1MmUxOThjMjI4YjA1NGE4ZmRjN2Q4YzZiMzFhZGYxLi4yOTJkNzEw
ZTdlOGFlNWUwYWVmOTU5MDA1YTU4YmQwZGViOTQxZmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVyZmxvdy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29t
cG9zaXRlZC1zY3JvbGxpbmctc3RhdHVzLmh0bWwKQEAgLTE2LDE4ICsxNiwyNyBAQAogICA8L3N0
eWxlPgogCiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB9CiAKICAgICBpZiAod2luZG93LmludGVybmFscykKICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZCh0cnVlKTsKIAorICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdCgpCisg
ICAgeworICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLm5vbkZhc3RT
Y3JvbGxhYmxlUmVjdHMoZG9jdW1lbnQpLmxlbmd0aCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgfQorCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CiAgICAgICBkb2N1bWVudC5i
b2R5Lm9mZnNldEhlaWdodDsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50
Jykuc3R5bGUuaGVpZ2h0ID0gJzEwMDBweCc7Ci0gICAgICBpZiAod2luZG93LmludGVybmFscykK
LSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9IHdp
bmRvdy5pbnRlcm5hbHMubm9uRmFzdFNjcm9sbGFibGVSZWN0cyhkb2N1bWVudCkubGVuZ3RoID8g
IkZBSUwiIDogIlBBU1MiOworICAgICAgd2luZG93LnNldFRpbWVvdXQocmVwb3J0UmVzdWx0LCAw
KTsKICAgICB9CiAKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwg
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvaW52
aXNpYmxlLWRlc2NlbmRhbnRzLXNob3VsZC1ub3QtYWZmZWN0LW9wdC1pbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9pbnZpc2libGUtZGVzY2VuZGFudHMt
c2hvdWxkLW5vdC1hZmZlY3Qtb3B0LWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQwYTc0
MzQ4NDJkNDEzMjQ4NDVhMzlhYzZiN2Y1MzQ4YmJhN2RkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvaW52aXNpYmxlLWRlc2NlbmRhbnRzLXNob3Vs
ZC1ub3QtYWZmZWN0LW9wdC1pbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitJdGVyYXRp
b24gMDogUGFzc2VkCitJdGVyYXRpb24gMCwgbGF5ZXIgdHJlZQorSXRlcmF0aW9uIDE6IFBhc3Nl
ZAorSXRlcmF0aW9uIDEsIG5vIGxheWVyIHRyZWUKK0l0ZXJhdGlvbiAyOiBQYXNzZWQKK0l0ZXJh
dGlvbiAyLCBsYXllciB0cmVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJmbG93L2ludmlzaWJsZS1kZXNjZW5kYW50cy1zaG91bGQtbm90LWFmZmVjdC1vcHQtaW4u
aHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2ludmlzaWJsZS1kZXNjZW5k
YW50cy1zaG91bGQtbm90LWFmZmVjdC1vcHQtaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTJjY2Y3OGY2
NDFhZjA4MGQ0M2UwZmFmNmM5ZThmN2MwZjA1NzljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvaW52aXNpYmxlLWRlc2NlbmRhbnRzLXNob3VsZC1u
b3QtYWZmZWN0LW9wdC1pbi5odG1sCkBAIC0wLDAgKzEsMTE2IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKyAgPHRpdGxlPkRvIG5vdCBvcHQgaW50byBjb21wb3NpdGVkIHNj
cm9sbGluZyB3aXRoIHZpc2libGUsIG91dCBvZiBmbG93LCBwb3NpdGlvbmVkIGRlc2NlbmRhbnRz
PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAu
Y29udGFpbmVyIHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgbWFyZ2luOiAyMHB4OworICAgICAgYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7CisgICAgfQorCisgICAgLnNjcm9sbGVkIHsKKyAgICAgIHdpZHRo
OiAxODBweDsKKyAgICAgIGhlaWdodDogOTBweDsKKyAgICAgIG1hcmdpbjogMTBweDsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6IGdyYXk7CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
fQorCisgICAgLnBvc2l0aW9uZWQgeworICAgICAgd2lkdGg6IDEyMHB4OworICAgICAgaGVpZ2h0
OiAyNDBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIH0KKworICAgICNkZXNjZW5kYW50IHsKKyAgICAgIGxlZnQ6IDkwcHg7
CisgICAgICB0b3A6IDIwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAg
ei1pbmRleDogLTIwOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICB2YXIgZGVidWdNb2RlID0gZmFsc2U7CisK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVk
KHRydWUpOworCisgICAgZnVuY3Rpb24gd3JpdGUoc3RyKQorICAgIHsKKyAgICAgIHZhciBwcmUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKTsKKyAgICAgIHByZS5hcHBlbmRDaGls
ZCh0ZXh0KTsKKyAgICB9CisKKyAgICB2YXIgaXRlcmF0aW9uID0gMDsKKyAgICBmdW5jdGlvbiBw
cmludFJlc3VsdChleHBlY3RlZFJlc3VsdCkKKyAgICB7CisgICAgICAvLyBGb3JjZSBhIHN0eWxl
IHJlY2FsYy4KKyAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2luZG93LmludGVybmFs
cy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworCisgICAgICAgIGlmICghbGF5ZXJUcmVlID09
ICFleHBlY3RlZFJlc3VsdCkKKyAgICAgICAgICB3cml0ZSgnSXRlcmF0aW9uICcgKyBpdGVyYXRp
b24udG9TdHJpbmcoKSArICc6IFBhc3NlZCcpCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3cml0
ZSgnSXRlcmF0aW9uICcgKyBpdGVyYXRpb24udG9TdHJpbmcoKSArICc6IEZBSUxFRCcpCisKKyAg
ICAgICAgaWYgKGxheWVyVHJlZSkgeworICAgICAgICAgIHdyaXRlKCdJdGVyYXRpb24gJyArIGl0
ZXJhdGlvbi50b1N0cmluZygpICsgJywgbGF5ZXIgdHJlZScpOworICAgICAgICAgIGlmIChkZWJ1
Z01vZGUpCisgICAgICAgICAgICAgIHdyaXRlKGxheWVyVHJlZSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgIHdyaXRlKCdJdGVyYXRpb24gJyArIGl0ZXJhdGlvbi50b1N0cmluZygpICsgJywg
bm8gbGF5ZXIgdHJlZScpOworICAgICAgfQorICAgICAgaXRlcmF0aW9uKys7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7CisgICAgICB2YXIgZGVzY2VuZGFudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjZW5kYW50Jyk7CisKKyAgICAgIC8vIENoZWNrIHRoYXQg
d2UgZG9uJ3QgcHJvbW90ZSBpZiB3ZSBoYXZlIGFuIG91dCBvZiBmbG93IGRlc2NlbmRhbnQuCisg
ICAgICAvLyBXZSBuZWVkIHRvIGhpZGUgdGhlIHByZWRlY2Vzc29yIGFuZCBzdWNjZXNzb3Igc28g
dGhleSBkb24ndCBpbnRlcmZlcmUKKyAgICAgIC8vIHdpdGggdGhpcyBleHBlcmltZW50LgorICAg
ICAgZm9yIChpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAg
ICAgICAgZGVzY2VuZGFudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CisgICAgICAgICAg
ZGVzY2VuZGFudC5zdHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICAgIH0gZWxzZSBpZiAoaSA9PSAx
KSB7CisgICAgICAgICAgZGVzY2VuZGFudC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CisgICAgICAg
ICAgZGVzY2VuZGFudC5zdHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgZGVzY2VuZGFudC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CisgICAgICAgICAgZGVzY2Vu
ZGFudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYg
dGhlIG91dCBvZiBmbG93IHBvc2l0aW9uZWQgZGVzY2VuZGFudCBpcyB2aXNpYmxlLCB3ZSBjYW5u
b3Qgb3B0CisgICAgICAgIC8vIGludG8gY29tcG9zaXRlZCBzY3JvbGxpbmcuCisgICAgICAgIHBy
aW50UmVzdWx0KGkgIT0gMSk7CisgICAgICB9IC8vIGZvciBpCisKKyAgICB9IC8vIGZ1bmN0aW9u
IGRvVGVzdAorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZh
bHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJjb250
YWluZXIiIGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbGVkIiBpZD0iZmly
c3RDaGlsZCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsZWQiIGlkPSJzZWNvbmRDaGls
ZCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0icG9zaXRpb25lZCIgaWQ9ImRlc2NlbmRhbnQiPjwv
ZGl2PgorICA8L2Rpdj4KKyAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0
bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196247</attachid>
            <date>2013-04-02 16:00:40 -0700</date>
            <delta_ts>2013-04-02 17:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130402190031.patch</filename>
            <type>text/plain</type>
            <size>49970</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEyOTEyNjg2NmI0YTZm
YzU4NGIzMjVjOWNlYzE2N2YwZjc0NGZjZi4uYzE0NGI5OTAzNTcxYjQ3NGFkMGZkNGRmZjQ4NzI5
OWNiNTM5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNC0wMiAgSWFu
IFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2Yg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAg
ICAgICAgTm90ZTogVGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5
IEdsZW5uIEhhcnRtYW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0
IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBp
biBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMg
Y2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAg
dXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCks
IHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgUkFJSSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0
ZWRTY3JvbGxpbmcoKSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBU
aGlzIGhhcyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1
cyB0bworICAgICAgICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8g
YSBzdHlsZSBjaGFuZ2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhh
dCBzaG91bGRuJ3QgYmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAg
IEl0IGFsc28gbGV0cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5
ZXIuIElmIHdlCisgICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xl
IGxheWVyLCBvbmx5IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0
ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAgIFdlIGNyZWF0ZSBhIFNjb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIGluc3RhbmNlIGhlcmUgdG8KKyAgICAgICAgcG9zdHBv
bmUgdXBkYXRlcyB1bnRpbCBhZnRlciBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAgIEluaXRpYWxpemVzIHRoZSBuZXcgZGlydHkg
Yml0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAg
ICAgICAgQ2FuY2VscyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlzIGxheWVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MpOgor
ICAgICAgICAgIE1ha2VzIHVzZSBvZiB0aGUgbmV3IGRpcnR5IGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQpOgorICAgICAgICAgIEFkZGVkIGZvciBj
b3JyZWN0bmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAgIFRo
ZXNlIGZ1bmN0aW9ucyBub3cgc2NoZWR1bGUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIHNldHRpbmcgb2YgbmVlZHMgY29tcG9zaXRlZCBzY3JvbGxpbmcgKHNlZSBi
ZWxvdykuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0TmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKToKKyAgICAgICAgICBUaGlzIHdhcyByZWZhY3RvcmVkIG91dCBvZiB1cGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5T
dGFja2luZ09yZGVyKToKKyAgICAgICAgICBTY2hlZHVsZXMgYW4gdXBkYXRlIHRoYXQgd2lsbCBi
ZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkgaWYgbm8gb3RoZXIKKyAgICAgICAgICBpbnN0YW5jZSBv
ZiB0aGUgUkFJSSBvYmplY3QgaXMgYWxpdmUgZm9yIHRoaXMgcmVuZGVyIHZpZXcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMpOgorICAgICAgICAgIENsZWFycyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlz
IGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXI6OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjp+U2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIpOgorICAgICAgICAgIFBlcmZvcm1zIHRoZSBkZWxheWVkIHVwZGF0ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
clNjcm9sbCk6CisgICAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAg
ICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0
ZUxheWVyQm91bmRzKToKKyAgICAgICAgICBUaGVzZSBub3cgY3JlYXRlIGEgc2NvcGVkIHVwZGF0
ZXIgdG8gcHJldmVudCBwcmVtYXR1cmUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKToKKyAgICAgICAgICBEaXJ0aWVzIG1fZGVzY2VuZGFu
dHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyIGFuZCBzY2hlZHVsZXMKKyAgICAgICAgICB1
cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250
YWluZXJaT3JkZXJMaXN0cyk6CisgICAgICAgICAgQW55IGNoYW5nZSB0aGF0IGNvdWxkIGFmZmVj
dCBvdXIgc3RhY2tpbmcgY29udGFpbmVyJ3Mgei1vcmRlciBsaXN0IGNvdWxkCisgICAgICAgICAg
Y2F1c2Ugb3RoZXIgUmVuZGVyTGF5ZXJzIGluIG91ciBzdGFja2luZyBjb250ZXh0IHRvIGVpdGhl
ciBvcHQgaW4gb3Igb3V0CisgICAgICAgICAgb2YgY29tcG9zaXRlZCBzY3JvbGxpbmcuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIG1ha2Ugb3VyIHN0YWNraW5nCisgICAgICAgICAgY29udGV4dCBh
d2FyZSBvZiB0aGVzZSB6LW9yZGVyIGNoYW5nZXMgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgICB1cGRhdGluZyBjYW4gaGFwcGVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgICAgV2Ugbm93IGNoZWNrIHRo
ZSBkaXJ0eSBiaXQgYmVmb3JlIGRvaW5nIGNvbnRpZ3VpdHkgdXBkYXRlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHlsZUNoYW5nZSk6Cisg
ICAgICAgICAgUmVmYWN0b3JlZCB0aGUgdmlzaWJpbGl0eSBzdHVmZiBvdXQgb2YgdXBkYXRlU3Rh
Y2tpbmdDb250ZXh0cy4uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU3Rh
Y2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAgIFJlZmFjdG9yZWQgYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0QW5jZXN0b3JDaGFpbkhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFu
dFN0YXR1cyk6CisgICAgICAgICAgRGlydHkgYml0IG1hbmFnZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgICAg
U2NoZWR1bGVzIHVwZGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVD
aGFuZ2VkKToKKyAgICAgICAgICBSZW1vdmVkIGRlYWQgdW5uZWNlc3NhcnkgY29kZSBhbmQgYWRk
ZWQgY2FsbCB0bworICAgICAgICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQpOgor
ICAgICAgICAgIFNjaGVkdWxlcyB1cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9z
aXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENv
bnRlbnQpOgorICAgICAgICAgIFRoZXNlIGNvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgUkFJ
SSBvYmplY3QgdG8gcHJvdGVjdCBhZ2FpbnN0CisgICAgICAgICAgcHJlbWF0dXJlIHVwZGF0ZXMu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKToKKyAgICAgICAgICBUaGUg
cmVuZGVyIHZpZXcgaXMgdGhlIG93bmVyIG9mIHRoZSBwZW5kaW5nIHVwZGF0ZXMuCisKIDIwMTMt
MDQtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzE1MDAwOGNkNWJh
ZDJhNTcwNDcyNTlkMzc2ZDM5MjVhYTFmZmYwYS4uMDNmZjBmYjdmZjkxMTNhMWI5YjVjNWIyZTdl
OGZiM2I5ZWRmOTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUsNiArMTM1LDcg
QEAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xOTQ3LDYgKzE5
NDgsMTEgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIC8vIFVwZGF0ZXMgc2NoZWR1bGVkIGR1cmluZyBzdHlsZSB1cGRhdGUgZGVw
ZW5kIG9uIHZhbHVlcyB0aGF0CisgICAgLy8gYXJlIG5vdCBhdmFpbGFibGUgdW50aWwgYWZ0ZXIg
bGF5b3V0LiBUaGlzIGVuc3VyZXMgdGhhdCB1cGRhdGVzCisgICAgLy8gYXJlIG9ubHkgcHJvY2Vz
c2VkIHdoZW4gdGhleSBjYW4gc3VjY2VlZC4KKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMocmVuZGVyVmlldygpKTsK
KwogICAgIGlmIChFbGVtZW50KiBvZSA9IG93bmVyRWxlbWVudCgpKQogICAgICAgICBvZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDE5ODU0ZDBjM2I1MmQ5ODgzMmI1MThmZWJiZDQyODRhMzk5MDVlZTQu
LjY4YzljZWIwODAwZWJjMjQ4MTBhNjI4ZTMyMzU4Njk5YjQ4NTg1MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTU2LDYgKzE1Niw3IEBAIFJlbmRlckxh
eWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAs
IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQogICAgICwgbV9u
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoZmFsc2UpCiAgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29u
dGlndW91c0luU3RhY2tpbmdPcmRlcihmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkodHJ1ZSkKICAgICAsIG1faXNSb290TGF5ZXIocmVu
ZGVyZXItPmlzUmVuZGVyVmlldygpKQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5KGZhbHNlKQog
ICAgICwgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24oZmFsc2UpCkBAIC0yNjEsNiArMjYyLDcg
QEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgY2xlYXJCYWNraW5nKHRydWUpOworICAgIGNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CiAjZW5kaWYKICAgICAKICAgICBpZiAobV9zY3Jv
bGxDb3JuZXIpCkBAIC02MTgsNyArNjIwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNvbnN0CiAvLyAgQW5kIHdl
IHdvdWxkIGNvbmNsdWRlIHRoYXQgQyBjb3VsZCBiZSBwcm9tb3RlZC4KIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiB7Ci0g
ICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCisgICAgaWYgKCFtX2Rlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlckRpcnR5IHx8ICFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKQEAgLTY1OCw2ICs2
NjAsOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKQogICAgIGludCBjb3VudCA9IDA7CiAgICAgYm9vbCBmaXJzdEl0ZXJh
dGlvbiA9IHRydWU7CiAgICAgdXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyUmVjdXJzaXZlKGxvb2t1cCwgbWluSW5kZXgsIG1heEluZGV4LCBjb3VudCwgZmlyc3RJ
dGVyYXRpb24pOworCisgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXJEaXJ0eSA9IGZhbHNlOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50
c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29uc3QgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIGludD4mIGxvb2t1cCwgaW50JiBtaW5JbmRleCwgaW50JiBtYXhJbmRl
eCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlvbikKQEAgLTY5MSw3ICs2OTUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXJSZWN1cnNpdmUoY29uc3QgSAogICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlciA9IG5ld1ZhbHVlOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICAgICAgaWYgKGRpZFVwZGF0ZSkKLSAgICAgICAgICAgIHVwZGF0ZU5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZygpOworICAgICAgICAgICAgc2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTEwNjMsNiArMTA2Nyw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgp
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFzaFNl
dDxjb25zdCBSZW5kZXJPYmplY3QqPiogb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdCbG9j
a3MpCiB7CiAgICAgaWYgKG1fdmlzaWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSB8fCBtX2hhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudERpcnR5IHx8IG1faGFzT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnREaXJ0eSkgeworICAgICAgICBjb25zdCBib29sIGhhZFZpc2libGVEZXNjZW5k
YW50ID0gbV9oYXNWaXNpYmxlRGVzY2VuZGFudDsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQ7CisKICAgICAgICAgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAg
ICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAgICBtX2hh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50ID0gZmFsc2U7CkBAIC0xMDg0LDcgKzEwOTEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFz
aFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogbwogCiAgICAgICAgICAgICBib29sIGhhc1Zpc2li
bGVEZXNjZW5kYW50ID0gY2hpbGQtPm1faGFzVmlzaWJsZUNvbnRlbnQgfHwgY2hpbGQtPm1faGFz
VmlzaWJsZURlc2NlbmRhbnQ7CiAgICAgICAgICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVy
RGVzY2VuZGFudCA9IGNoaWxkLT5pc1NlbGZQYWludGluZ0xheWVyKCkgfHwgY2hpbGQtPmhhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpOwotICAgICAgICAgICAgYm9vbCBoYXNPdXRPZkZs
b3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9ICFjaGlsZE91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWlu
aW5nQmxvY2tzLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRp
b25lZERlc2NlbmRhbnQgPSAhY2hpbGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nr
cy5pc0VtcHR5KCkgfHwgY2hpbGQtPmhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCk7
CiAKICAgICAgICAgICAgIG1faGFzVmlzaWJsZURlc2NlbmRhbnQgfD0gaGFzVmlzaWJsZURlc2Nl
bmRhbnQ7CiAgICAgICAgICAgICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCB8PSBo
YXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQ7CkBAIC0xMDk5LDE1ICsxMTA2LDE0IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNv
bnN0IFJlbmRlck9iamVjdCo+KiBvCiAKICAgICAgICAgbV92aXNpYmxlRGVzY2VuZGFudFN0YXR1
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50
RGlydHkgPSBmYWxzZTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAg
ICAgaWYgKG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkKLSAgICAgICAg
ICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwotI2VuZGlmCiAgICAgICAgIG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA9IGZhbHNlOworCisgICAgICAg
IGlmIChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICE9IGhhZFZpc2libGVEZXNjZW5kYW50IHx8IG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQgIT0gaGFkT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpOwogICAgIH0KIAogICAgIGlmIChtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkp
IHsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRWaXNpYmxlQ29udGVudCA9IG1faGFzVmlzaWJsZUNv
bnRlbnQ7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSkKICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSB0cnVlOwogICAgICAg
ICBlbHNlIHsKQEAgLTExMzUsNiArMTE0MSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURl
c2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+KiBvCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gICAgCiAgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRTdGF0
dXNEaXJ0eSA9IGZhbHNlOyAKKyAgICAgICAgaWYgKGhhZFZpc2libGVDb250ZW50ICE9IG1faGFz
VmlzaWJsZUNvbnRlbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOwogICAgIH0KIH0KIApAQCAtMTMyMSw2ICsxMzI5LDE2IEBAIFJlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBs
YXllcjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHBhcmVudCgpOworICAgIHdoaWxlIChs
YXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIGxheWVyID0gbGF5
ZXItPnBhcmVudCgpOworCisgICAgQVNTRVJUKCFsYXllciB8fCBsYXllci0+aXNTdGFja2luZ0Nv
bnRleHQoKSk7CisgICAgcmV0dXJuIGxheWVyOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
b3NpdGlvbmVkQ29udGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikKIHsKICAgICBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CkBAIC0xNzI1
LDYgKzE3NDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXIqIGNo
aWxkLCBSZW5kZXJMYXllciogYmVmb3JlQ2hpbGQpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgd2Un
cmUgYnVpbGRpbmcgdXAgZ2VuZXJhdGVkIGNvbnRlbnQgbGF5ZXJzLiBUaGlzIGlzIG9rLCBzaW5j
ZSB0aGUgbGlzdHMgd2lsbCBzdGFydAogICAgICAgICAvLyBvZmYgZGlydHkgaW4gdGhhdCBjYXNl
IGFueXdheS4KICAgICAgICAgY2hpbGQtPmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0
cygpOworICAgICAgICBjaGlsZC0+c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIoKTsKKworICAgICAgICAvLyBBZGRpbmcgYW4gb3V0IG9mIGZsb3cg
cG9zaXRpb25lZCBkZXNjZW5kYW50IGNhbiBvbmx5IGFmZmVjdAorICAgICAgICAvLyB0aGUgb3B0
LWluIGRlY2lzaW9uIGZvciBsYXllcnMgYmVuZWF0aCBhbmQgaW5jbHVkaW5nIG91cgorICAgICAg
ICAvLyBjb250YWluaW5nIGJsb2NrLgorICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdC
bG9jayA9IGNoaWxkLT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgZm9y
IChSZW5kZXJMYXllciogbGF5ZXIgPSBjaGlsZDsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVu
dCgpKSB7CisgICAgICAgICAgICBsYXllci0+c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKTsKKyAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKSA9PSBjb250YWlu
aW5nQmxvY2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBjaGlsZC0+dXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CkBAIC0xNzYwLDEzICsx
Nzg5LDIzIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyTGF5
ZXIqIG9sZENoaWxkKQogICAgIGlmIChtX2xhc3QgPT0gb2xkQ2hpbGQpCiAgICAgICAgIG1fbGFz
dCA9IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBvbGRDaGlsZC0+Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXMoKTsKKyNlbmRpZgorCiAgICAgaWYgKG9sZENoaWxkLT5pc05vcm1hbEZsb3dP
bmx5KCkpCiAgICAgICAgIGRpcnR5Tm9ybWFsRmxvd0xpc3QoKTsKLSAgICBpZiAoIW9sZENoaWxk
LT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQoKSkgeyAKKyAgICBp
ZiAoIW9sZENoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQo
KSkgewogICAgICAgICAvLyBEaXJ0eSB0aGUgei1vcmRlciBsaXN0IGluIHdoaWNoIHdlIGFyZSBj
b250YWluZWQuICBXaGVuIGNhbGxlZCB2aWEgdGhlCiAgICAgICAgIC8vIHJlYXR0YWNobWVudCBw
cm9jZXNzIGluIHJlbW92ZU9ubHlUaGlzTGF5ZXIsIHRoZSBsYXllciBtYXkgYWxyZWFkeSBiZSBk
aXNjb25uZWN0ZWQKICAgICAgICAgLy8gZnJvbSB0aGUgbWFpbiBsYXllciB0cmVlLCBzbyB3ZSBu
ZWVkIHRvIG51bGwtY2hlY2sgdGhlIHxzdGFja2luZ0NvbnRhaW5lcnwgdmFsdWUuCiAgICAgICAg
IG9sZENoaWxkLT5kaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAgICAgICAg
c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKTsK
KworICAgICAgICAvLyBUaGlzIGNvdWxkIGFmZmVjdCB3aGV0aGVyIG9yIG5vdCBhIGxheWVyIGhh
cyBhbiBvdXQgb2YgZmxvdworICAgICAgICAvLyBwb3NpdGlvbmVkIGRlc2NlbmRhbnQgc28gd2Ug
bmVlZCB0byBzY2hlZHVsZSBzb21lIHVwZGF0ZXMuCisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIq
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAg
ICAgbGF5ZXItPnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAgICAg
fQogCiAgICAgaWYgKChvbGRDaGlsZC0+cmVuZGVyZXIoKSAmJiBvbGRDaGlsZC0+cmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHx8IG9sZENoaWxkLT5oYXNPdXRPZkZsb3dQb3Np
dGlvbmVkRGVzY2VuZGFudCgpKQpAQCAtMTc3NSw3ICsxODE0LDcgQEAgUmVuZGVyTGF5ZXIqIFJl
bmRlckxheWVyOjpyZW1vdmVDaGlsZChSZW5kZXJMYXllciogb2xkQ2hpbGQpCiAgICAgb2xkQ2hp
bGQtPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICBvbGRDaGlsZC0+c2V0TmV4dFNpYmxpbmco
MCk7CiAgICAgb2xkQ2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICAKKwogICAgIG9sZENoaWxkLT51
cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKICAgICBpZiAob2xkQ2hpbGQtPm1faGFz
VmlzaWJsZUNvbnRlbnQgfHwgb2xkQ2hpbGQtPm1faGFzVmlzaWJsZURlc2NlbmRhbnQpCiAgICAg
ICAgIGRpcnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCk7CkBAIC0xOTk5
LDQwICsyMDM4LDEyOCBAQCBib29sIFJlbmRlckxheWVyOjpuZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSBjb25zdAogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKQogewotICAgIGJvb2wgb2xkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gbV9uZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcg
PSBmYWxzZTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygp
LT5mcmFtZVZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT5jb250YWlu
c1Njcm9sbGFibGVBcmVhKHRoaXMpKQotICAgICAgICBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
ZyA9IGZhbHNlOwotICAgIGVsc2UgeworICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5j
b250YWluc1Njcm9sbGFibGVBcmVhKHRoaXMpKSB7CisgICAgICAgIHVwZGF0ZURlc2NlbmRhbnRE
ZXBlbmRlbnRGbGFncygpOworCiAgICAgICAgIGJvb2wgZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xs
aW5nID0gYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpCiAg
ICAgICAgICAgICAmJiBjYW5CZVN0YWNraW5nQ29udGFpbmVyKCkKICAgICAgICAgICAgICYmICFo
YXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgpOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOworICAgICAgICBuZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOwogI2Vsc2UKLSAgICAgICAgbV9uZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgICAg
IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IGZvcmNlVXNlQ29tcG9zaXRlZFNjcm9sbGluZzsK
ICNlbmRpZgotICAgICAgICAvLyBXZSBnYXRoZXIgYSBib29sZWFuIHZhbHVlIGZvciB1c2Ugd2l0
aCBHb29nbGUgVU1BIGhpc3RvZ3JhbXMgdG8KLSAgICAgICAgLy8gcXVhbnRpZnkgdGhlIGFjdHVh
bCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGluZyB0bwotICAgICAgICAvLyBy
ZWxheCBjb21wb3NpdGVkIHNjcm9sbGluZyByZXF1aXJlbWVudHMsIHRoZXJlYnkgaW5jcmVhc2lu
ZyB0aGUKLSAgICAgICAgLy8gbnVtYmVyIG9mIGNvbXBvc2l0ZWQgb3ZlcmZsb3cgZGl2cy4KLSAg
ICAgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQo
KSkKLSAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJS
ZW5kZXJlci5OZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmciLCBtX25lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAgICAgfQogCi0gICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyAh
PSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewotICAgICAgICB1cGRhdGVTZWxmUGFpbnRp
bmdMYXllcigpOwotICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQotICAgICAgICAg
ICAgZGlydHlaT3JkZXJMaXN0cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhclpP
cmRlckxpc3RzKCk7CisgICAgc2V0TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKG5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZyk7Cit9CiAKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRl
ckxpc3RzKCk7Cit2b2lkIFJlbmRlckxheWVyOjpzZXROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmco
Ym9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCit7CisgICAgLy8gV2UgZ2F0aGVyIGEgYm9v
bGVhbiB2YWx1ZSBmb3IgdXNlIHdpdGggR29vZ2xlIFVNQSBoaXN0b2dyYW1zIHRvCisgICAgLy8g
cXVhbnRpZnkgdGhlIGFjdHVhbCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGlu
ZyB0bworICAgIC8vIHJlbGF4IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIHJlcXVpcmVtZW50cywgdGhl
cmVieSBpbmNyZWFzaW5nIHRoZQorICAgIC8vIG51bWJlciBvZiBjb21wb3NpdGVkIG92ZXJmbG93
IGRpdnMuCisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVu
YWJsZWQoKSkKKyAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24o
IlJlbmRlcmVyLk5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyIsIG5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2YWx1YXRlQ29t
cG9zaXRpbmdBZnRlckxheW91dCgpOwotICAgICAgICBjb21wb3NpdG9yKCktPnNldENvbXBvc2l0
aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsKKyAgICBpZiAobV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPT0gbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZzsKKwor
ICAgIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgaWYgKGlzU3RhY2tpbmdDb250YWlu
ZXIoKSkKKyAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworICAgIGVsc2UKKyAgICAgICAgY2xl
YXJaT3JkZXJMaXN0cygpOworCisgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3Rz
KCk7CisKKyAgICBjb21wb3NpdG9yKCktPnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0Fm
dGVyTGF5b3V0KCk7CisgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRS
ZWJ1aWxkKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkKK3sKKyAgICBpZiAoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92
ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcih0aGlzLCBVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOworfQorCit2b2lk
IFJlbmRlckxheWVyOjpzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlcigpCit7CisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbEVuYWJsZWQoKSkKKyAgICAgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXIodGhpcywgVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKTsK
K30KKwordm9pZCBSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+
dmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW5kZXJlcigpLT52aWV3KCktPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLnJlbW92ZShjb25zdF9jYXN0PFJlbmRlckxh
eWVyKj4odGhpcykpOworICAgIHJlbmRlcmVyKCktPnZpZXcoKS0+cGVuZGluZ0NvbnRpZ3VpdHlV
cGRhdGVzKCkucmVtb3ZlKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKSk7Cit9CisKK1Nj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcihSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorICAgIDogbV9yZW5kZXJWaWV3KHJlbmRl
clZpZXcpCit7CisgICAgaWYgKG1fcmVuZGVyVmlldykKKyAgICAgICAgbV9yZW5kZXJWaWV3LT5z
Y29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCgpKys7Cit9CisKK1Njb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRl
cihSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVNb2RlIG1vZGUp
CisgICAgOiBtX3JlbmRlclZpZXcoMCkKK3sKKyAgICBpZiAoIWxheWVyIHx8ICFsYXllci0+cmVu
ZGVyZXIoKS0+dmlldygpIHx8ICFsYXllci0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclZpZXcg
PSBsYXllci0+cmVuZGVyZXIoKS0+dmlldygpOworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJzQ291bnQoKSsrOworCisgICAgaWYgKG1vZGUgPT0gVXBk
YXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICBtX3JlbmRlclZpZXctPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLmFkZChsYXllcik7CisgICAgZWxzZSBpZiAo
bW9kZSA9PSBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpCisg
ICAgICAgIG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCkuYWRkKGxheWVy
KTsKK30KKworU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXI6On5TY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlcigpCit7CisgICAgaWYgKCFtX3JlbmRlclZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXJzQ291bnQoKS0tOworICAgIEFTU0VSVChtX3JlbmRlclZpZXctPnNjb3BlZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkgPj0gMCk7CisgICAgaWYgKCFtX3JlbmRlclZpZXct
PnNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkpIHsKKyAgICAgICAgSGFz
aFNldDxSZW5kZXJMYXllcio+IHBlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyA9IG1f
cmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CisgICAgICAg
IG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkuY2xlYXIo
KTsKKworICAgICAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gcGVuZGluZ0NvbnRpZ3VpdHlVcGRh
dGVzID0gbV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKTsKKyAgICAgICAg
bV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKS5jbGVhcigpOworCisgICAg
ICAgIGlmICghcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IHN0YWNraW5nQ29udGV4dHM7CisgICAgICAgICAgICBm
b3IgKEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXRlciA9IHBlbmRpbmdDb250aWd1
aXR5VXBkYXRlcy5iZWdpbigpOyBpdGVyICE9IHBlbmRpbmdDb250aWd1aXR5VXBkYXRlcy5lbmQo
KTsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4
dCA9ICppdGVyOworICAgICAgICAgICAgICAgIHdoaWxlIChzdGFja2luZ0NvbnRleHQgJiYgIXN0
YWNraW5nQ29udGV4dC0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
c3RhY2tpbmdDb250ZXh0ID0gc3RhY2tpbmdDb250ZXh0LT5wYXJlbnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc3RhY2tpbmdDb250ZXh0KQorICAgICAgICAgICAgICAgICAgICBzdGFja2luZ0Nv
bnRleHRzLmFkZChzdGFja2luZ0NvbnRleHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yIChIYXNoU2V0PFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBzdGFja2luZ0NvbnRl
eHRzLmJlZ2luKCk7IGl0ZXIgIT0gc3RhY2tpbmdDb250ZXh0cy5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisgICAg
ICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBl
bmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IGZvciAoSGFzaFNldDxSZW5kZXJMYXllcio+OjppdGVyYXRvciBpdGVyID0gcGVuZGluZ0NvbXBv
c2l0ZWRTY3JvbGxpbmdVcGRhdGVzLmJlZ2luKCk7IGl0ZXIgIT0gcGVuZGluZ0NvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVzLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgKCppdGVyKS0+
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAj
ZW5kaWYKQEAgLTIzMzMsNyArMjQ2MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBv
c2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKQogICAgICAgICAvLyByZXBvc2l0aW9uaW5nLCBzbyB1
cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGZyb20gdGhlcmUuCiAgICAgICAgIGlmIChSZW5kZXJM
YXllciogY29tcG9zaXRpbmdBbmNlc3RvciA9IHN0YWNraW5nQ29udGFpbmVyKCktPmVuY2xvc2lu
Z0NvbXBvc2l0aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3IoKS0+Y29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXAoKSkgewotICAgICAgICAgICAgICAgIGlmICh1c2VzQ29t
cG9zaXRlZFNjcm9sbGluZygpICYmICFoYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgp
KQorICAgICAgICAgICAgICAgIGlmICh1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKQogICAgICAg
ICAgICAgICAgICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBv
c2l0aW5nVXBkYXRlT25Db21wb3NpdGVkU2Nyb2xsLCBjb21wb3NpdGluZ0FuY2VzdG9yKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+dXBk
YXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVPblNjcm9sbCwgY29tcG9zaXRp
bmdBbmNlc3Rvcik7CkBAIC0zMTc5LDEyICszMzA2LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKIAogICAgIGlmIChvcmlnaW5hbFNjcm9sbE9mZnNl
dCAhPSBzY3JvbGxPZmZzZXQoKSkKICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKEludFBvaW50KHNjcm9sbE9mZnNldCgpKSk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgLy8gQ29tcG9zaXRlZCBzY3JvbGxpbmcgbWF5IG5lZWQgdG8gYmUgZW5h
YmxlZCBvciBkaXNhYmxlZCBpZiB0aGUgYW1vdW50IG9mIG92ZXJmbG93IGNoYW5nZWQuCi0gICAg
aWYgKHJlbmRlcmVyKCktPnZpZXcoKSAmJiBjb21wb3NpdG9yKCktPnVwZGF0ZUxheWVyQ29tcG9z
aXRpbmdTdGF0ZSh0aGlzKSkKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xh
eWVyc05lZWRSZWJ1aWxkKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6b3ZlcmZs
b3dDb250cm9sc0ludGVyc2VjdFJlY3QoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdApA
QCAtMzkxMSw2ICs0MDMyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQKICAgICBpZiAoIWhh
c1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKHJlbmRlcmVyKCktPnZp
ZXcoKSk7CisjZW5kaWYKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIodGhpcyk7CiAjZW5kaWYKQEAgLTUzNzMsNiArNTQ5
Nyw5IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zCiAgICAgCiAgICAgQVNTRVJUKGlzU3RhY2tp
bmdDb250YWluZXIoKSB8fCAoIXBvc1pPcmRlckxpc3QoKSB8fCAhcG9zWk9yZGVyTGlzdCgpLT5z
aXplKCkpKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBTY29wZWRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXModGhpcy0+cmVuZGVyZXIoKS0+dmlldygpKTsKKyNlbmRpZgogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9j
YXN0PFJlbmRlckxheWVyKj4odGhpcykpOwogI2VuZGlmCkBAIC01NjExLDYgKzU3MzgsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKCkKICAgICBtX3pPcmRlckxpc3RzRGly
dHkgPSB0cnVlOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fZGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgPSB0cnVlOworICAgIHNj
aGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAg
Y29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgICAg
IGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCkBA
IC01NjIxLDkgKzU3NTAsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlaT3JkZXJMaXN0cygp
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygp
CiB7Ci0gICAgUmVuZGVyTGF5ZXIqIHNjID0gc3RhY2tpbmdDb250YWluZXIoKTsKLSAgICBpZiAo
c2MpCi0gICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgUmVuZGVyTGF5ZXIqIHN0
YWNraW5nQ29udGFpbmVyID0gdGhpcy0+c3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBpZiAoc3Rh
Y2tpbmdDb250YWluZXIpCisgICAgICAgIHN0YWNraW5nQ29udGFpbmVyLT5kaXJ0eVpPcmRlckxp
c3RzKCk7CisKKyAgICAvLyBBbnkgY2hhbmdlIHRoYXQgY291bGQgYWZmZWN0IG91ciBzdGFja2lu
ZyBjb250YWluZXIncyB6LW9yZGVyIGxpc3QgY291bGQKKyAgICAvLyBjYXVzZSBvdGhlciBSZW5k
ZXJMYXllcnMgaW4gb3VyIHN0YWNraW5nIGNvbnRleHQgdG8gZWl0aGVyIG9wdCBpbiBvciBvdXQK
KyAgICAvLyBvZiBjb21wb3NpdGVkIHNjcm9sbGluZy4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ug
bWFrZSBvdXIgc3RhY2tpbmcKKyAgICAvLyBjb250ZXh0IGF3YXJlIG9mIHRoZXNlIHotb3JkZXIg
Y2hhbmdlcyBzbyB0aGUgYXBwcm9wcmlhdGUgdXBkYXRpbmcgY2FuCisgICAgLy8gaGFwcGVuLgor
ICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRleHQgPSB0aGlzLT5zdGFja2luZ0NvbnRleHQo
KTsKKyAgICBpZiAoc3RhY2tpbmdDb250ZXh0ICYmIHN0YWNraW5nQ29udGV4dCAhPSBzdGFja2lu
Z0NvbnRhaW5lcikKKyAgICAgICAgc3RhY2tpbmdDb250ZXh0LT5kaXJ0eVpPcmRlckxpc3RzKCk7
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5Tm9ybWFsRmxvd0xpc3QoKQpAQCAtNTc0Miw3
ICs1ODgwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVI
aWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvcgogCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewotICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAm
JiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgYm9v
bCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgJiYgaXNTdGFj
a2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3RE
aXJ0eSkgJiYgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0eTsK
ICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAK
QEAgLTU5MzAsMjggKzYwNjgsNDAgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNWaXN1YWxseU5vbkVt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBpZiAoIW9sZFN0eWxlKQot
ICAgICAgICByZXR1cm47CisgICAgRVZpc2liaWxpdHkgb2xkVmlzaWJpbGl0eSA9IFZJU0lCTEU7
CisgICAgaWYgKG9sZFN0eWxlKQorICAgICAgICBvbGRWaXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZp
c2liaWxpdHkoKTsKIAotICAgIGJvb2wgd2FzU3RhY2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0Nv
bnRleHQob2xkU3R5bGUpOwotICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQgPSB0aGlzLT5pc1N0
YWNraW5nQ29udGV4dCgpOwotICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCAhPSB3YXNTdGFja2lu
Z0NvbnRleHQpIHsKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCk7
Ci0gICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKLSAgICAgICAgICAgIGRpcnR5Wk9yZGVy
TGlzdHMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXJaT3JkZXJMaXN0cygpOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKG9sZFZpc2liaWxpdHkgIT0gcmVuZGVyZXIoKS0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpKSB7CisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0g
dGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAgICAgbGF5ZXIt
PnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgfQorfQorCit2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTdGFja2luZ0NvbnRleHRzQWZ0ZXJTdHlsZUNoYW5nZShj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgYm9vbCB3YXNTdGFja2luZ0NvbnRl
eHQgPSBmYWxzZTsKKyAgICBFVmlzaWJpbGl0eSBvbGRWaXNpYmlsaXR5ID0gVklTSUJMRTsKKyAg
ICBpbnQgb2xkWkluZGV4ID0gMDsKKyAgICBpZiAob2xkU3R5bGUpIHsKKyAgICAgICAgd2FzU3Rh
Y2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0NvbnRleHQob2xkU3R5bGUpOworICAgICAgICBvbGRW
aXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZpc2liaWxpdHkoKTsKKyAgICAgICAgb2xkWkluZGV4ID0g
b2xkU3R5bGUtPnpJbmRleCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW5kZXJMYXllciBh
bHJlYWR5IGhhbmRsZXMgdmlzaWJpbGl0eSBjaGFuZ2VzIHRocm91Z2ggb3VyIHZpc2libGl0eSBk
aXJ0eSBiaXRzLiBUaGlzIGxvZ2ljIGNvdWxkCiAgICAgLy8gbGlrZWx5IGJlIGZvbGRlZCBhbG9u
ZyB3aXRoIHRoZSByZXN0LgotICAgIGlmIChvbGRTdHlsZS0+ekluZGV4KCkgIT0gcmVuZGVyZXIo
KS0+c3R5bGUoKS0+ekluZGV4KCkgfHwgb2xkU3R5bGUtPnZpc2liaWxpdHkoKSAhPSByZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkpIHsKKyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0
ID0gdGhpcy0+aXNTdGFja2luZ0NvbnRleHQoKTsKKyAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQg
IT0gd2FzU3RhY2tpbmdDb250ZXh0CisgICAgICAgIHx8IG9sZFZpc2liaWxpdHkgIT0gcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpCisgICAgICAgIHx8IG9sZFpJbmRleCAhPSByZW5k
ZXJlcigpLT5zdHlsZSgpLT56SW5kZXgoKSkgewogICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGFp
bmVyWk9yZGVyTGlzdHMoKTsKLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KQorICAgICAg
ICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQogICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVhclpPcmRlckxpc3RzKCk7CiAgICAg
fQogfQogCkBAIC02MDA4LDE5ICs2MTU4LDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2Vz
dG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudChSZW5kZXJPYmplY3QqCiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBsYXllci0+bV9oYXNPdXRPZkZsb3dQb3NpdGlv
bmVkRGVzY2VuZGFudERpcnR5ID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxv
d1Bvc2l0aW9uZWREZXNjZW5kYW50ID0gdHJ1ZTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgICAgIGxheWVyLT51cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsK
LSNlbmRpZgorICAgICAgICBpZiAobGF5ZXItPm1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobGF5ZXItPnJlbmRl
cmVyKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkgPT0gY29udGFpbmluZ0Jsb2NrKQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5k
YW50ID0gdHJ1ZTsKKyAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyhm
YWxzZSk7CiAgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5I
YXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1cygpCiB7Ci0gICAgbV9oYXNPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ID0gdHJ1ZTsKKyAgICBpZiAobV9oYXNPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCkgeworICAgICAgICBtX2hhc091dE9mRmxvd1Bvc2l0
aW9uZWREZXNjZW5kYW50RGlydHkgPSB0cnVlOworICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZygpOworICAgIH0KICAgICBpZiAocGFyZW50KCkpCiAgICAgICAg
IHBhcmVudCgpLT5kaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2Vu
ZGFudFN0YXR1cygpOwogfQpAQCAtNjAyOCwxMiArNjE3OSwxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1
cygpCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBib29sIHdhc091dE9mRmxvd1Bvc2l0aW9uZWQg
PSBvbGRTdHlsZSAmJiAob2xkU3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8
fCBvbGRTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKLSAgICBpZiAocGFyZW50
KCkgJiYgKChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSAhPSB3YXNPdXRPZkZsb3dQb3NpdGlvbmVkKSkgewotICAgICAgICBwYXJlbnQoKS0+ZGlydHlB
bmNlc3RvckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIGlmICghcmVuZGVyZXIoKS0+
ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpICYmIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbEVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0U2hvdWxk
UmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsKLSNlbmRpZgorICAgIGJvb2wgaXNP
dXRPZkZsb3dQb3NpdGlvbmVkID0gcmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7
CisgICAgaWYgKHBhcmVudCgpICYmIGlzT3V0T2ZGbG93UG9zaXRpb25lZCAhPSB3YXNPdXRPZkZs
b3dQb3NpdGlvbmVkKSB7CisgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQpCisgICAg
ICAgICAgICBwYXJlbnQoKS0+c2V0QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWRE
ZXNjZW5kYW50KHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcGFyZW50KCktPmRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0
aW9uZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgfQogfQogCkBAIC02MDc0LDYgKzYyMjUsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpCiAKICAgICB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNo
YW5nZShvbGRTdHlsZSk7CiAgICAgdXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFu
Z2Uob2xkU3R5bGUpOworICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlKG9sZFN0
eWxlKTsKICAgICAvLyBPdmVybGF5IHNjcm9sbGJhcnMgY2FuIG1ha2UgdGhpcyBsYXllciBzZWxm
LXBhaW50aW5nIHNvIHdlIG5lZWQKICAgICAvLyB0byByZWNvbXB1dGUgdGhlIGJpdCBvbmNlIHNj
cm9sbGJhcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgICAgdXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIo
KTsKQEAgLTYxMDcsOCArNjI1OSw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKICNlbmRpZgogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOwotCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlID0gcmVuZGVy
ZXIoKS0+c3R5bGUoKTsKICAgICBpZiAoY29tcG9zaXRvcigpLT51cGRhdGVMYXllckNvbXBvc2l0
aW5nU3RhdGUodGhpcykKICAgICAgICAgfHwgbmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRG
b3JDbGlwKG9sZFN0eWxlLCBuZXdTdHlsZSkKQEAgLTYxNDUsMTIgKzYyOTUsMTQgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoYm9vbCBoYXNPdmVyZmxvdykKICAg
ICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGZyYW1lLT5vd25lckVsZW1lbnQo
KSkKICAgICAgICAgaXNWaXNpYmxlVG9IaXRUZXN0ICY9IG93bmVyLT5yZW5kZXJlcigpICYmIG93
bmVyLT5yZW5kZXJlcigpLT52aXNpYmxlVG9IaXRUZXN0aW5nKCk7CiAKLSAgICBpZiAoaGFzT3Zl
cmZsb3cgJiYgaXNWaXNpYmxlVG9IaXRUZXN0ID8gZnJhbWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJl
YSh0aGlzKSA6IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcykpCi0jaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgorICAgIGJvb2wgdXBk
YXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZmFsc2U7CisgICAgaWYgKGhhc092ZXJmbG93ICYmIGlz
VmlzaWJsZVRvSGl0VGVzdCkKKyAgICAgICAgdXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZnJh
bWVWaWV3LT5hZGRTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHVwZGF0
ZWRTY3JvbGxhYmxlQXJlYVNldCA9IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhp
cyk7CisKKyAgICBpZiAodXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0KQorICAgICAgICBzY2hlZHVs
ZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCiB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCmluZGV4IDVlMWM4YzlmODdiYWY0ZjQwMzZhOWYxZTc5OWFlY2IzYTZhYjk5NjAuLjZj
MzExZjczYzVhOTMyMGJhYWJkMjVkNDI1MjYyMGFhOGE3ZTQ3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMTUsOSArMzE1LDI4IEBAIHB1YmxpYzoKIAogdHlw
ZWRlZiBWZWN0b3I8TGF5ZXJGcmFnbWVudCwgMT4gTGF5ZXJGcmFnbWVudHM7CiAKK2VudW0gQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZU1vZGUgeworICAgIFVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZywKKyAgICBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXIKK307CisKKy8vIFRoaXMgUkFJSSBvYmplY3QgYWxsb3dzIHVzIHRvIGF2b2lkIGNhbGxpbmcg
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nCisvLyB3aGlsZSBhbnkgaW5zdGFuY2UgaXMg
aW4gc2NvcGUuIFdoZW4gdGhlIGxhc3QgaW5zdGFuY2UgaXMgZGVzdHJ1Y3RlZCwgYWxsIAorLy8g
dXBkYXRlcyBhcmUgcHJvY2Vzc2VkLiBUaGlzIGFsbG93cyB1cyB0byBwb3N0cG9uZSB1cGRhdGVz
IGR1cmluZyBsYXllciBsaXN0CisvLyB1cGRhdGVzLiAoSWYgd2UgZGlkbid0IHBvc3Rwb25lIHRo
ZSB1cGRhdGVzLCB0aGV5IHdvdWxkIGNhdXNlIGVycm9ycyBzaW5jZQorLy8gdGhleSByZXF1aXJl
IGNsZWFuIGxpc3RzKS4KK3N0cnVjdCBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciB7
CisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIoUmVuZGVyVmlldyopOworICAg
IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKFJlbmRlckxheWVyKiwgQ29tcG9zaXRl
ZFNjcm9sbGluZ1VwZGF0ZU1vZGUpOworICAgIH5TY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBk
YXRlcigpOworcHJpdmF0ZToKKyAgICBSZW5kZXJWaWV3KiBtX3JlbmRlclZpZXc7Cit9OworCiBj
bGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CisgICAgZnJpZW5kIHN0cnVjdCBTY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcjsKIAogICAgIFJlbmRlckxheWVyKFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqKTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKQEAgLTUwNiw2ICs1MjUsMTAgQEAgcHVi
bGljOgogICAgIC8vIGxheWVyIGl0c2VsZi4KICAgICBSZW5kZXJMYXllciogc3RhY2tpbmdDb250
YWluZXIoKSBjb25zdDsKIAorICAgIC8vIEdldHMgdGhlIGVuY2xvc2luZyBzdGFja2luZyBjb250
ZXh0IGZvciB0aGlzIGxheWVyLCBleGNsdWRpbmcgdGhpcworICAgIC8vIGxheWVyIGl0c2VsZi4K
KyAgICBSZW5kZXJMYXllciogc3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7CisKICAgICAvLyBHZXRz
IHRoZSBlbmNsb3Npbmcgc3RhY2tpbmcgY29udGFpbmVyIGZvciB0aGlzIGxheWVyLCBwb3NzaWJs
eSB0aGUgbGF5ZXIKICAgICAvLyBpdHNlbGYsIGlmIGl0IGlzIGEgc3RhY2tpbmcgY29udGFpbmVy
LgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTdGFja2luZ0NvbnRhaW5lcigpIHsgcmV0dXJu
IGlzU3RhY2tpbmdDb250YWluZXIoKSA/IHRoaXMgOiBzdGFja2luZ0NvbnRhaW5lcigpOyB9CkBA
IC04NzksNiArOTAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxh
eW91dCgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOworICAg
IHZvaWQgdXBkYXRlVmlzaWJpbGl0eUFmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKTsKICAgICB2b2lkIHVwZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bGJhcnNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CkBAIC04
ODgsNyArOTEyLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNP
dXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudFN0YXR1cygpOwogICAgIHZvaWQgdXBkYXRlT3V0
T2ZGbG93UG9zaXRpb25lZChjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgdXBkYXRlTmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKCk7CisgICAgdm9pZCBzZXROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoYm9vbCk7
CisKKyAgICB2b2lkIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7Cisg
ICAgdm9pZCBzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlcigpOworICAgIHZvaWQgY2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXMoKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpIHsgfQorICAgIHZvaWQgc2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNv
bnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKSB7IH0KKyAgICB2b2lkIGNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkgeyB9CisjZW5kaWYKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgcG9zaXRpb24gY2hhbmdlZC4KICAgICBib29sIHVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKQEAgLTExNjYsNiArMTIwMSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBkZXNjZW5kYW50
cyBpbiBzdGFja2luZyBvcmRlci4gVGhpcyBpcyBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyBvZiBi
ZWluZwogICAgIC8vIGFibGUgdG8gc2FmZWx5IGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQuCiAg
ICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciA6IDE7Cisg
ICAgYm9vbCBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlckRpcnR5IDog
MTsKIAogICAgIGNvbnN0IGJvb2wgbV9pc1Jvb3RMYXllciA6IDE7CiAKQEAgLTEyOTIsNiArMTMy
OCwxMCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCiAKIGlu
bGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCiB7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRh
dGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhyZW5kZXJlcigpLT52aWV3KCkp
OworI2VuZGlmCisKICAgICBpZiAoIW1fek9yZGVyTGlzdHNEaXJ0eSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCmluZGV4IDA5ZjIyNTMwZjdlOTI2MThhOTljY2RkZTQ5NTA3ZGY5YjNiYWI0NWIuLmZk
NDJlOGU5MGQ0OTFhMTM1NjhhZWI2NTcwMWU4NWZiOWYzZjRiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC04MjgsNiAr
ODI4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vy
c2l2ZShPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW4KICAgICBib29sIGhhdmVDb21wdXRlZEJv
dW5kcyA9IGZhbHNlOwogICAgIGFkZFRvT3ZlcmxhcE1hcChvdmVybGFwTWFwLCBsYXllciwgYm91
bmRzLCBoYXZlQ29tcHV0ZWRCb3VuZHMpOwogCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKG1fcmVuZGVyVmlldyk7
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0
YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgpAQCAtOTI5LDYgKzkzMCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVy
TGF5ZXIqIGFuY2VzdG9yCiAgICAgICAgIGNoaWxkU3RhdGUubV90ZXN0aW5nT3ZlcmxhcCA9IHRy
dWU7CiAgICAgfQogCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgc3VzcGVu
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKG1fcmVuZGVyVmlldyk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxh
eWVyKTsKICNlbmRpZgpAQCAtMTE0NCw2ICsxMTQ2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIFZl
Y3QKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+IGxheWVyQ2hpbGRyZW47CiAgICAgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMaXN0ID0gbGF5ZXJCYWNraW5nID8gbGF5ZXJDaGlsZHJl
biA6IGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdMYXllcjsKIAorICAgIFNjb3BlZENvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhtX3JlbmRl
clZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVj
dG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKQEAgLTEzODQsNiArMTM4Nyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5k
ZXJMYXllciogbGF5ZXIsIGludCBkZXB0CiAjZW5kaWYKICAgICB9CiAKKyAgICBTY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMo
bV9yZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xNDM1LDYgKzE0
MzksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNj
ZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGNvbQogICAgIGlmICghbGF5ZXItPmhhc0NvbXBv
c2l0aW5nRGVzY2VuZGFudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9y
ZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25E
ZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xNDc4LDYgKzE0ODMs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVyKFJl
bmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UgogICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tp
bmdOZWVkc1JlcGFpbnQoKTsKICAgICB9CiAKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0yODk1LDYgKzI5MDEsNyBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyKSBjb25zdAogCiAgICAgY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKS0+dXBk
YXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAzMjE3Mzk2NzI3ZDVjOGNl
N2VmZjUwODE4YzJmNTc0NGQ1ZTg5ZjE3Li5hYmI2OWFiYWUyMGQyY2U4MWVmYzUwY2ZhOGExZjAw
NDRhYjM2NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02
Niw2ICs2Niw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2xheW91dFN0
YXRlKDApCiAgICAgLCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50KDApCisgICAgLCBtX3Njb3Bl
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KDApCiAgICAgLCBtX3JlbmRlclF1b3Rl
SGVhZCgwKQogICAgICwgbV9yZW5kZXJDb3VudGVyQ291bnQoMCkKICAgICAsIG1fbGF5b3V0UGhh
c2UoUmVuZGVyVmlld05vcm1hbExheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCmluZGV4IDNjODRhYWMwY2JlOWQxMWEzYzg1MmE1YzQ3ZThkZDRhZjU1MzQ4YzguLmUyMmZl
NjdmY2I1NzUwM2EyZDk3MDQ3NmNiNzI2ZTczYWEyMjZiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaApAQCAtMjI3LDcgKzIyNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRSZW5kZXJDb3VudGVyKCkgeyBtX3JlbmRlckNvdW50ZXJDb3VudCsrOyB9CiAgICAgdm9pZCBy
ZW1vdmVSZW5kZXJDb3VudGVyKCkgeyBBU1NFUlQobV9yZW5kZXJDb3VudGVyQ291bnQgPiAwKTsg
bV9yZW5kZXJDb3VudGVyQ291bnQtLTsgfQogICAgIGJvb2wgaGFzUmVuZGVyQ291bnRlcnMoKSB7
IHJldHVybiBtX3JlbmRlckNvdW50ZXJDb3VudDsgfQotICAgIAorCisgICAgdW5zaWduZWQmIHNj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkgeyByZXR1cm4gbV9zY29wZWRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudDsgfQorICAgIEhhc2hTZXQ8UmVuZGVyTGF5
ZXIqPiYgcGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkgeyByZXR1cm4gbV9wZW5k
aW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXM7IH0KKyAgICBIYXNoU2V0PFJlbmRlckxheWVy
Kj4mIHBlbmRpbmdDb250aWd1aXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fcGVuZGluZ0NvbnRpZ3Vp
dHlVcGRhdGVzOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBu
ZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwogCiBwcm90
ZWN0ZWQ6CkBAIC0zMzAsNiArMzM0LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXlv
dXRTdGF0ZURpc2FibGVDb3VudDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgT3duUHRyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOworCisgICAgdW5z
aWduZWQgbV9zY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudDsKKyAgICBIYXNo
U2V0PFJlbmRlckxheWVyKj4gbV9wZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXM7Cisg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgT3du
UHRyPEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ+IG1fY3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxNGU0MDNlNWUxZDYyMWUyOGU5MzkxYWIyZjcyNjUxYzRiY2FmYjcwLi5iOGEw
MTk4ZjUwOWJhODM5ZTI1MzhlZWI1NGJmMjg4ZjhlNmMzZjFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTMtMDQtMDIgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgRWFybHkgb3V0IG9mIFJlbmRlckxheWVyOjp1cGRhdGVDYW5CZVN0YWNraW5nQ29udGFp
bmVyIG1vcmUgb2Z0ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTk2NgorCisgICAgICAgIE5vdGU6IFRoaXMgcGF0Y2ggaXMgbW9kaWZpY2F0aW9u
IG9mIGVhcmxpZXIgd29yayBieSBHbGVubiBIYXJ0bWFubi4KKworICAgICAgICBIZXJlIHdlIGlu
dHJvZHVjZSBhIGRpcnR5IGJpdCBmb3IKKyAgICAgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIgaW4gb3JkZXIgdG8gYXZvaWQgcmVjb21wdXRpbmcKKyAgICAgICAg
ZnJlc2ggdmFsdWVzLiBUaGlzIGNhdXNlZCBhIHBvdGVudGlhbCBmb3IgY3ljbGljYWwgZGVwZW5k
ZW5jaWVzIGluCisgICAgICAgIHVwZGF0ZVpPcmRlckxpc3RzKCkgYW5kIHVwZGF0ZURlc2NlbmRh
bnREZXBlbmRlbnRGbGFncygpLCBzbyB3ZSBhbHNvCisgICAgICAgIGludHJvZHVjZSBhIFNjb3Bl
ZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIFJBSUkgb2JqZWN0IHRvIGNhbGwKKyAgICAgICAg
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgb25seSB3aGVuIGl0IHJlYWxseSBuZWVk
cyB0byBiZS4KKyAgICAgICAgVGhpcyBoYXMgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBiZW5lZml0
cy4gSXQgYWxzbyBhbGxvd3MgdXMgdG8KKyAgICAgICAgcG9zdHBvbmUgdXBkYXRlcyB0aGF0IGFy
ZSBzY2hlZHVsZWQgZHVlIHRvIGEgc3R5bGUgY2hhbmdlIChhZGRpbmcgb3IKKyAgICAgICAgcmVt
b3ZpbmcgYSBjaGlsZCksIHRoYXQgc2hvdWxkbid0IGJlIHByb2Nlc3NlZCB1bnRpbCBsYXlvdXQg
Y29tcGxldGVzLgorICAgICAgICBJdCBhbHNvIGxldHMgdXMgYXZvaWQgcmVkdW5kYW50IHVwZGF0
ZXMgZm9yIHRoZSBzYW1lIGxheWVyLiBJZiB3ZQorICAgICAgICBzY2hlZHVsZSBtdWx0aXBsZSB1
cGRhdGVzIGZvciBhIHNpbmdsZSBsYXllciwgb25seSBvbmUgd2lsbCBiZQorICAgICAgICBwcm9j
ZXNzZWQuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9w
dC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHkt
b3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1z
Y3JvbGxpbmctc3RhdHVzLmh0bWw6CisKIDIwMTMtMDQtMDIgIFRoaWFnbyBNYXJjb3MgUC4gU2Fu
dG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxl
LWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9h
dXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNo
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRkYzI5MTU2NTA1NDkyZGJkZGY4NjdkMTll
ZjI5MDc5OWQzYWQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0
ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitpdGVyYXRpb24g
MDogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE6IFBBU1MsIGRv
ZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyOiBQQVNTLCBkb2VzIG5vdCBoYXZl
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVl
LgoraXRlcmF0aW9uIDQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDU6IFBBU1Ms
IGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA2OiBQQVNTLCBoYXMgbGF5ZXIg
dHJlZS4KK2l0ZXJhdGlvbiA3OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gODogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gOTogUEFTUywgZG9lcyBu
b3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDEwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMTE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDEyOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMzogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMTQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE1
OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNjogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMTc6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJh
dGlvbiAxODogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE5OiBQ
QVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMDogUEFTUywgaGFzIGxheWVyIHRyZWUu
CitpdGVyYXRpb24gMjE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIyOiBQQVNT
LCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMjQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI1OiBQQVNTLCBk
b2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMjY6IFBBU1MsIGRvZXMgbm90IGhh
dmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMjg6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI5OiBQQVNTLCBoYXMg
bGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRp
b24gMzE6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMyOiBQQVNTLCBoYXMgbGF5
ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMzogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
MzQ6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDM1OiBQQVNTLCBkb2VzIG5vdCBo
YXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDM3OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVk
LXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmct
YWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhYWFlMmQ4YzY3MGI2N2YwZWM0
MWVlNWRkNDg5MjczMzczZDNjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxp
bmctYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwKQEAgLTAsMCArMSwxNjkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgICNwcmVkZWNlc3NvciB7CisgICAg
ICB3aWR0aDogNzBweDsKKyAgICAgIGhlaWdodDogNzBweDsKKyAgICAgIGxlZnQ6IDI1cHg7Cisg
ICAgICB0b3A6IDI1cHg7CisgICAgICB6LWluZGV4OiAyOworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogcmVkOworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgZGlzcGxheTogbm9uZTsK
KyAgICB9CisKKyAgICAjY29udGFpbmVyIHsKKyAgICAgIHdpZHRoOiA1MDBweDsKKyAgICAgIGhl
aWdodDogNTAwcHg7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgfQorCisgICAgI2Nv
bnRlbnQgeworICAgICAgd2lkdGg6IDFweDsKKyAgICAgIGhlaWdodDogMXB4OworICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0K
KworICAgICNjb250ZW50UHJlZGVjZXNzb3IgeworICAgICAgei1pbmRleDogMzsKKyAgICAgIHdp
ZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiA1MHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IG5vbmU7Cisg
ICAgfQorCisgICAgI2NvbnRlbnRTdWNjZXNzb3IgeworICAgICAgd2lkdGg6IDEwMDBweDsKKyAg
ICAgIGhlaWdodDogMTAwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBkaXNwbGF5OiBub25lOworICAgIH0KKyAgPC9z
dHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgorICAgIHZhciBkZWJ1ZyA9IGZhbHNlOworCisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250ZW50Jyk7CisgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICB2YXIgY29udGVudFByZWRlY2Vzc29yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRQcmVkZWNlc3NvcicpOworICAgIHZhciBjb250
ZW50U3VjY2Vzc29yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnRTdWNjZXNzb3In
KTsKKworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KGZhbHNlKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxFbmFibGVkKHRydWUpOworCisgICAgZnVuY3Rpb24gd3JpdGVSZXN1bHQoaXRlcmF0aW9u
LCBleHBlY3RlZFJlc3VsdCkKKyAgICB7CisgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIHJldHVybjsKKworICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKKyAgICAg
IGlmIChkZWJ1ZykKKyAgICAgICAgd3JpdGVEZWJ1ZyhpdGVyYXRpb24pOworCisgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9ICJpdGVyYXRpb24gIiArIGl0ZXJhdGlvbiArICI6ICI7CisKKyAgICAg
IHZhciBoYXNMYXllclRyZWUgPSAhIXdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRv
Y3VtZW50KTsKKyAgICAgIGlmIChoYXNMYXllclRyZWUgPT09IGV4cGVjdGVkUmVzdWx0KQorICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJQQVNTLCAiOworICAgICAgZWxzZQorICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICJGQUlMLCAiOworCisgICAgICBpZiAoaGFzTGF5ZXJUcmVlKQor
ICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJoYXMgbGF5ZXIgdHJlZS5cbiI7CisgICAgICBl
bHNlCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gImRvZXMgbm90IGhhdmUgbGF5ZXIgdHJl
ZS5cbiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVEZWJ1ZyhpdGVyYXRpb24pCisgICAg
eworICAgICAgdmFyIGVsZW1lbnRzID0gW2NvbnRhaW5lciwgY29udGVudFByZWRlY2Vzc29yLCBj
b250ZW50LCBjb250ZW50U3VjY2Vzc29yXTsKKworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
bGVtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZWxlbWVudCA9IGVsZW1lbnRzW2ld
OworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7
CisKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiaXRlcmF0aW9uICIgKyBpdGVyYXRpb24g
KyAiOlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRlbGVtZW50OiAiICsgZWxl
bWVudC5pZCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0aGVpZ2h0OiAi
ICsgY29tcHV0ZWRTdHlsZS5oZWlnaHQgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9ICJcdHdpZHRoOiAiICsgY29tcHV0ZWRTdHlsZS53aWR0aCArICJcbiI7CisgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgKz0gIlx0b3ZlcmZsb3dYOiAiICsgY29tcHV0ZWRTdHlsZS5vdmVyZmxv
d1ggKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdG92ZXJmbG93WTogIiAr
IGNvbXB1dGVkU3R5bGUub3ZlcmZsb3dZICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCArPSAiXHRkaXNwbGF5OiAiICsgY29tcHV0ZWRTdHlsZS5kaXNwbGF5ICsgIlxuIjsKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHR6SW5kZXg6ICIgKyBjb21wdXRlZFN0eWxlLnpJbmRl
eCArICJcbiI7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7
CisgICAgICByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CisgICAg
ICBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsKKyAgICAgIGNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICAgIGNv
bnRlbnRQcmVkZWNlc3NvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50UHJlZGVj
ZXNzb3InKTsKKyAgICAgIGNvbnRlbnRTdWNjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29udGVudFN1Y2Nlc3NvcicpOworCisgICAgICB2YXIgY291bnQgPSAwOworCisgICAgICB3
cml0ZVJlc3VsdChjb3VudCsrLCBmYWxzZSk7CisKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjsgaSsrKSB7CisgICAgICAgIGNvbnRlbnQuc3R5bGUuaGVpZ2h0ID0gaSA/ICcxMDAwcHgnIDog
JzFweCc7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAg
Y29udGVudC5zdHlsZS53aWR0aCA9IGogPyAnMTAwMHB4JyA6ICcxcHgnOworICAgICAgICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgMjsgaysrKSB7CisgICAgICAgICAgICBjb250YWluZXIuc3R5bGUu
b3ZlcmZsb3dYID0gayA/ICdzY3JvbGwnIDogJ3Zpc2libGUnOworICAgICAgICAgICAgZm9yICh2
YXIgbSA9IDA7IG0gPCAyOyBtKyspIHsKKyAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLm92
ZXJmbG93WSA9IG0gPyAnc2Nyb2xsJyA6ICd2aXNpYmxlJzsKKyAgICAgICAgICAgICAgZm9yICh2
YXIgbiA9IDA7IG4gPCAyOyBuKyspIHsKKyAgICAgICAgICAgICAgICBjb250ZW50U3VjY2Vzc29y
LnN0eWxlLmRpc3BsYXkgPSBuID8gJ2Jsb2NrJyA6ICdub25lJzsKKworICAgICAgICAgICAgICAg
IHdyaXRlUmVzdWx0KGNvdW50KyssICEhKChpIHx8IGogfHwgbikgJiYgKGsgfHwgbSkpKTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBjb250ZW50LnN0eWxlLmhlaWdodCA9ICcxMDAwcHgnOworICAgICAgY29u
dGVudC5zdHlsZS53aWR0aCA9ICcxMDAwcHgnOworICAgICAgY29udGFpbmVyLnN0eWxlLm92ZXJm
bG93WCA9ICdzY3JvbGwnOworICAgICAgY29udGFpbmVyLnN0eWxlLm92ZXJmbG93WSA9ICdzY3Jv
bGwnOworICAgICAgY29udGVudFN1Y2Nlc3Nvci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAg
ICAgcHJlZGVjZXNzb3Iuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CisKKyAgICAgIHdyaXRlUmVz
dWx0KGNvdW50KyssIHRydWUpOworCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykg
eworICAgICAgICBjb250ZW50UHJlZGVjZXNzb3Iuc3R5bGUuZGlzcGxheSA9IGkgPyAnbm9uZScg
OiAnYmxvY2snOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDI7IGorKykgeworICAgICAg
ICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBqID8gJ2F1dG8nIDogJzEnOworCisgICAgICAg
ICAgd3JpdGVSZXN1bHQoY291bnQrKywgaSAhPT0gMCB8fCBqICE9PSAxKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9U
ZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBpZD0i
cHJlZGVjZXNzb3IiPjwvZGl2PgorICA8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9
ImNvbnRlbnRQcmVkZWNlc3NvciI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29udGVudCI+PC9kaXY+
CisgICAgPGRpdiBpZD0iY29udGVudFN1Y2Nlc3NvciI+PC9kaXY+CisgIDwvZGl2PgorICA8cHJl
IGlkPSJyZXN1bHQiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5n
LXN0YXR1cy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZHluYW1pYy1j
b21wb3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRtbAppbmRleCA0MGVlYTVmMmQ1MmUxOThjMjI4
YjA1NGE4ZmRjN2Q4YzZiMzFhZGYxLi4yOTJkNzEwZTdlOGFlNWUwYWVmOTU5MDA1YTU4YmQwZGVi
OTQxZmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9keW5h
bWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1zY3JvbGxpbmctc3RhdHVzLmh0
bWwKQEAgLTE2LDE4ICsxNiwyNyBAQAogICA8L3N0eWxlPgogCiAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CiAKICAgICBp
ZiAod2luZG93LmludGVybmFscykKICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCh0cnVlKTsKIAor
ICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLm5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoZG9jdW1lbnQpLmxl
bmd0aCA/ICJGQUlMIiA6ICJQQVNTIjsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gZG9U
ZXN0KCkKICAgICB7CiAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Jykuc3R5bGUuaGVpZ2h0ID0gJzEwMDBweCc7
Ci0gICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubm9uRmFzdFNjcm9s
bGFibGVSZWN0cyhkb2N1bWVudCkubGVuZ3RoID8gIkZBSUwiIDogIlBBU1MiOworICAgICAgd2lu
ZG93LnNldFRpbWVvdXQocmVwb3J0UmVzdWx0LCAwKTsKICAgICB9CiAKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196262</attachid>
            <date>2013-04-02 17:55:10 -0700</date>
            <delta_ts>2013-04-02 17:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109966-20130402205501.patch</filename>
            <type>text/plain</type>
            <size>49882</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEyOTEyNjg2NmI0YTZm
YzU4NGIzMjVjOWNlYzE2N2YwZjc0NGZjZi4uYzE0NGI5OTAzNTcxYjQ3NGFkMGZkNGRmZjQ4NzI5
OWNiNTM5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNC0wMiAgSWFu
IFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2Yg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAg
ICAgICAgTm90ZTogVGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5
IEdsZW5uIEhhcnRtYW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0
IGZvcgorICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBp
biBvcmRlciB0byBhdm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMg
Y2F1c2VkIGEgcG90ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAg
dXBkYXRlWk9yZGVyTGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCks
IHNvIHdlIGFsc28KKyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgUkFJSSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0
ZWRTY3JvbGxpbmcoKSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBU
aGlzIGhhcyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1
cyB0bworICAgICAgICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8g
YSBzdHlsZSBjaGFuZ2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhh
dCBzaG91bGRuJ3QgYmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAg
IEl0IGFsc28gbGV0cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5
ZXIuIElmIHdlCisgICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xl
IGxheWVyLCBvbmx5IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0
ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAgIFdlIGNyZWF0ZSBhIFNjb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIGluc3RhbmNlIGhlcmUgdG8KKyAgICAgICAgcG9zdHBv
bmUgdXBkYXRlcyB1bnRpbCBhZnRlciBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAgIEluaXRpYWxpemVzIHRoZSBuZXcgZGlydHkg
Yml0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAg
ICAgICAgQ2FuY2VscyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlzIGxheWVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MpOgor
ICAgICAgICAgIE1ha2VzIHVzZSBvZiB0aGUgbmV3IGRpcnR5IGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQpOgorICAgICAgICAgIEFkZGVkIGZvciBj
b3JyZWN0bmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAgIFRo
ZXNlIGZ1bmN0aW9ucyBub3cgc2NoZWR1bGUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIHNldHRpbmcgb2YgbmVlZHMgY29tcG9zaXRlZCBzY3JvbGxpbmcgKHNlZSBi
ZWxvdykuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0TmVlZHNDb21wb3NpdGVk
U2Nyb2xsaW5nKToKKyAgICAgICAgICBUaGlzIHdhcyByZWZhY3RvcmVkIG91dCBvZiB1cGRhdGVO
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5T
dGFja2luZ09yZGVyKToKKyAgICAgICAgICBTY2hlZHVsZXMgYW4gdXBkYXRlIHRoYXQgd2lsbCBi
ZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkgaWYgbm8gb3RoZXIKKyAgICAgICAgICBpbnN0YW5jZSBv
ZiB0aGUgUkFJSSBvYmplY3QgaXMgYWxpdmUgZm9yIHRoaXMgcmVuZGVyIHZpZXcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMpOgorICAgICAgICAgIENsZWFycyBhbnkgcGVuZGluZyB1cGRhdGVzIGZvciB0aGlz
IGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXI6OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjp+U2NvcGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXIpOgorICAgICAgICAgIFBlcmZvcm1zIHRoZSBkZWxheWVkIHVwZGF0ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
clNjcm9sbCk6CisgICAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAg
ICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0
ZUxheWVyQm91bmRzKToKKyAgICAgICAgICBUaGVzZSBub3cgY3JlYXRlIGEgc2NvcGVkIHVwZGF0
ZXIgdG8gcHJldmVudCBwcmVtYXR1cmUgdXBkYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKToKKyAgICAgICAgICBEaXJ0aWVzIG1fZGVzY2VuZGFu
dHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyIGFuZCBzY2hlZHVsZXMKKyAgICAgICAgICB1
cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250
YWluZXJaT3JkZXJMaXN0cyk6CisgICAgICAgICAgQW55IGNoYW5nZSB0aGF0IGNvdWxkIGFmZmVj
dCBvdXIgc3RhY2tpbmcgY29udGFpbmVyJ3Mgei1vcmRlciBsaXN0IGNvdWxkCisgICAgICAgICAg
Y2F1c2Ugb3RoZXIgUmVuZGVyTGF5ZXJzIGluIG91ciBzdGFja2luZyBjb250ZXh0IHRvIGVpdGhl
ciBvcHQgaW4gb3Igb3V0CisgICAgICAgICAgb2YgY29tcG9zaXRlZCBzY3JvbGxpbmcuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIG1ha2Ugb3VyIHN0YWNraW5nCisgICAgICAgICAgY29udGV4dCBh
d2FyZSBvZiB0aGVzZSB6LW9yZGVyIGNoYW5nZXMgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgICB1cGRhdGluZyBjYW4gaGFwcGVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgICAgV2Ugbm93IGNoZWNrIHRo
ZSBkaXJ0eSBiaXQgYmVmb3JlIGRvaW5nIGNvbnRpZ3VpdHkgdXBkYXRlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHlsZUNoYW5nZSk6Cisg
ICAgICAgICAgUmVmYWN0b3JlZCB0aGUgdmlzaWJpbGl0eSBzdHVmZiBvdXQgb2YgdXBkYXRlU3Rh
Y2tpbmdDb250ZXh0cy4uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU3Rh
Y2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAgIFJlZmFjdG9yZWQgYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0QW5jZXN0b3JDaGFpbkhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFu
dFN0YXR1cyk6CisgICAgICAgICAgRGlydHkgYml0IG1hbmFnZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgICAg
U2NoZWR1bGVzIHVwZGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVD
aGFuZ2VkKToKKyAgICAgICAgICBSZW1vdmVkIGRlYWQgdW5uZWNlc3NhcnkgY29kZSBhbmQgYWRk
ZWQgY2FsbCB0bworICAgICAgICAgIHVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hhbmdlCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQpOgor
ICAgICAgICAgIFNjaGVkdWxlcyB1cGRhdGVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9z
aXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENv
bnRlbnQpOgorICAgICAgICAgIFRoZXNlIGNvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgUkFJ
SSBvYmplY3QgdG8gcHJvdGVjdCBhZ2FpbnN0CisgICAgICAgICAgcHJlbWF0dXJlIHVwZGF0ZXMu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzY29wZWRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKToKKyAgICAgICAgICBUaGUg
cmVuZGVyIHZpZXcgaXMgdGhlIG93bmVyIG9mIHRoZSBwZW5kaW5nIHVwZGF0ZXMuCisKIDIwMTMt
MDQtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzE1MDAwOGNkNWJh
ZDJhNTcwNDcyNTlkMzc2ZDM5MjVhYTFmZmYwYS4uMDNmZjBmYjdmZjkxMTNhMWI5YjVjNWIyZTdl
OGZiM2I5ZWRmOTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUsNiArMTM1LDcg
QEAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xOTQ3LDYgKzE5
NDgsMTEgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIC8vIFVwZGF0ZXMgc2NoZWR1bGVkIGR1cmluZyBzdHlsZSB1cGRhdGUgZGVw
ZW5kIG9uIHZhbHVlcyB0aGF0CisgICAgLy8gYXJlIG5vdCBhdmFpbGFibGUgdW50aWwgYWZ0ZXIg
bGF5b3V0LiBUaGlzIGVuc3VyZXMgdGhhdCB1cGRhdGVzCisgICAgLy8gYXJlIG9ubHkgcHJvY2Vz
c2VkIHdoZW4gdGhleSBjYW4gc3VjY2VlZC4KKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMocmVuZGVyVmlldygpKTsK
KwogICAgIGlmIChFbGVtZW50KiBvZSA9IG93bmVyRWxlbWVudCgpKQogICAgICAgICBvZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDE5ODU0ZDBjM2I1MmQ5ODgzMmI1MThmZWJiZDQyODRhMzk5MDVlZTQu
LjA2NjgzOGMzYmJlODUzYTgxYmJkODI5MzhmY2Y4NWE1ZjliZTQxMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTU2LDYgKzE1Niw3IEBAIFJlbmRlckxh
eWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAs
IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSh0cnVlKQogICAgICwgbV9u
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoZmFsc2UpCiAgICAgLCBtX2Rlc2NlbmRhbnRzQXJlQ29u
dGlndW91c0luU3RhY2tpbmdPcmRlcihmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkodHJ1ZSkKICAgICAsIG1faXNSb290TGF5ZXIocmVu
ZGVyZXItPmlzUmVuZGVyVmlldygpKQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5KGZhbHNlKQog
ICAgICwgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24oZmFsc2UpCkBAIC0yNjEsNiArMjYyLDcg
QEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgY2xlYXJCYWNraW5nKHRydWUpOworICAgIGNhbmNlbFNjaGVkdWxlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CiAjZW5kaWYKICAgICAKICAgICBpZiAobV9zY3Jv
bGxDb3JuZXIpCkBAIC02MTgsNyArNjIwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNvbnN0CiAvLyAgQW5kIHdl
IHdvdWxkIGNvbmNsdWRlIHRoYXQgQyBjb3VsZCBiZSBwcm9tb3RlZC4KIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiB7Ci0g
ICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCisgICAgaWYgKCFtX2Rlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlckRpcnR5IHx8ICFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKQEAgLTY1OCw2ICs2
NjAsOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKQogICAgIGludCBjb3VudCA9IDA7CiAgICAgYm9vbCBmaXJzdEl0ZXJh
dGlvbiA9IHRydWU7CiAgICAgdXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyUmVjdXJzaXZlKGxvb2t1cCwgbWluSW5kZXgsIG1heEluZGV4LCBjb3VudCwgZmlyc3RJ
dGVyYXRpb24pOworCisgICAgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXJEaXJ0eSA9IGZhbHNlOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50
c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29uc3QgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIGludD4mIGxvb2t1cCwgaW50JiBtaW5JbmRleCwgaW50JiBtYXhJbmRl
eCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlvbikKQEAgLTY5MSw3ICs2OTUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXJSZWN1cnNpdmUoY29uc3QgSAogICAgICAgICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlciA9IG5ld1ZhbHVlOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICAgICAgaWYgKGRpZFVwZGF0ZSkKLSAgICAgICAgICAgIHVwZGF0ZU5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZygpOworICAgICAgICAgICAgc2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTEwNjMsNiArMTA2Nyw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgp
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFzaFNl
dDxjb25zdCBSZW5kZXJPYmplY3QqPiogb3V0T2ZGbG93RGVzY2VuZGFudENvbnRhaW5pbmdCbG9j
a3MpCiB7CiAgICAgaWYgKG1fdmlzaWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSB8fCBtX2hhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudERpcnR5IHx8IG1faGFzT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnREaXJ0eSkgeworICAgICAgICBjb25zdCBib29sIGhhZFZpc2libGVEZXNjZW5k
YW50ID0gbV9oYXNWaXNpYmxlRGVzY2VuZGFudDsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRPdXRP
ZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9IG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2Nl
bmRhbnQ7CisKICAgICAgICAgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAg
ICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCA9IGZhbHNlOwogICAgICAgICBtX2hh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50ID0gZmFsc2U7CkBAIC0xMDg0LDcgKzEwOTEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoSGFz
aFNldDxjb25zdCBSZW5kZXJPYmplY3QqPiogbwogCiAgICAgICAgICAgICBib29sIGhhc1Zpc2li
bGVEZXNjZW5kYW50ID0gY2hpbGQtPm1faGFzVmlzaWJsZUNvbnRlbnQgfHwgY2hpbGQtPm1faGFz
VmlzaWJsZURlc2NlbmRhbnQ7CiAgICAgICAgICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVy
RGVzY2VuZGFudCA9IGNoaWxkLT5pc1NlbGZQYWludGluZ0xheWVyKCkgfHwgY2hpbGQtPmhhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpOwotICAgICAgICAgICAgYm9vbCBoYXNPdXRPZkZs
b3dQb3NpdGlvbmVkRGVzY2VuZGFudCA9ICFjaGlsZE91dE9mRmxvd0Rlc2NlbmRhbnRDb250YWlu
aW5nQmxvY2tzLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRp
b25lZERlc2NlbmRhbnQgPSAhY2hpbGRPdXRPZkZsb3dEZXNjZW5kYW50Q29udGFpbmluZ0Jsb2Nr
cy5pc0VtcHR5KCkgfHwgY2hpbGQtPmhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KCk7
CiAKICAgICAgICAgICAgIG1faGFzVmlzaWJsZURlc2NlbmRhbnQgfD0gaGFzVmlzaWJsZURlc2Nl
bmRhbnQ7CiAgICAgICAgICAgICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCB8PSBo
YXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQ7CkBAIC0xMDk5LDE1ICsxMTA2LDE0IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNv
bnN0IFJlbmRlck9iamVjdCo+KiBvCiAKICAgICAgICAgbV92aXNpYmxlRGVzY2VuZGFudFN0YXR1
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1faGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50
RGlydHkgPSBmYWxzZTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAg
ICAgaWYgKG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSkKLSAgICAgICAg
ICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwotI2VuZGlmCiAgICAgICAgIG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA9IGZhbHNlOworCisgICAgICAg
IGlmIChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICE9IGhhZFZpc2libGVEZXNjZW5kYW50IHx8IG1f
aGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQgIT0gaGFkT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpOwogICAgIH0KIAogICAgIGlmIChtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkp
IHsKKyAgICAgICAgY29uc3QgYm9vbCBoYWRWaXNpYmxlQ29udGVudCA9IG1faGFzVmlzaWJsZUNv
bnRlbnQ7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSkKICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSB0cnVlOwogICAgICAg
ICBlbHNlIHsKQEAgLTExMzUsNiArMTE0MSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURl
c2NlbmRhbnREZXBlbmRlbnRGbGFncyhIYXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+KiBvCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gICAgCiAgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRTdGF0
dXNEaXJ0eSA9IGZhbHNlOyAKKyAgICAgICAgaWYgKGhhZFZpc2libGVDb250ZW50ICE9IG1faGFz
VmlzaWJsZUNvbnRlbnQpCisgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZU5lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZygpOwogICAgIH0KIH0KIApAQCAtMTMyMSw2ICsxMzI5LDE2IEBAIFJlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBs
YXllcjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHBhcmVudCgpOworICAgIHdoaWxlIChs
YXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIGxheWVyID0gbGF5
ZXItPnBhcmVudCgpOworCisgICAgQVNTRVJUKCFsYXllciB8fCBsYXllci0+aXNTdGFja2luZ0Nv
bnRleHQoKSk7CisgICAgcmV0dXJuIGxheWVyOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQ
b3NpdGlvbmVkQ29udGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikKIHsKICAgICBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CkBAIC0xNzI1
LDYgKzE3NDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXIqIGNo
aWxkLCBSZW5kZXJMYXllciogYmVmb3JlQ2hpbGQpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgd2Un
cmUgYnVpbGRpbmcgdXAgZ2VuZXJhdGVkIGNvbnRlbnQgbGF5ZXJzLiBUaGlzIGlzIG9rLCBzaW5j
ZSB0aGUgbGlzdHMgd2lsbCBzdGFydAogICAgICAgICAvLyBvZmYgZGlydHkgaW4gdGhhdCBjYXNl
IGFueXdheS4KICAgICAgICAgY2hpbGQtPmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0
cygpOworICAgICAgICBjaGlsZC0+c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIoKTsKKworICAgICAgICAvLyBBZGRpbmcgYW4gb3V0IG9mIGZsb3cg
cG9zaXRpb25lZCBkZXNjZW5kYW50IGNhbiBvbmx5IGFmZmVjdAorICAgICAgICAvLyB0aGUgb3B0
LWluIGRlY2lzaW9uIGZvciBsYXllcnMgYmVuZWF0aCBhbmQgaW5jbHVkaW5nIG91cgorICAgICAg
ICAvLyBjb250YWluaW5nIGJsb2NrLgorICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdC
bG9jayA9IGNoaWxkLT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgZm9y
IChSZW5kZXJMYXllciogbGF5ZXIgPSBjaGlsZDsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVu
dCgpKSB7CisgICAgICAgICAgICBsYXllci0+c2NoZWR1bGVVcGRhdGVOZWVkc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKTsKKyAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKSA9PSBjb250YWlu
aW5nQmxvY2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBjaGlsZC0+dXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CkBAIC0xNzYwLDEzICsx
Nzg5LDIzIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyTGF5
ZXIqIG9sZENoaWxkKQogICAgIGlmIChtX2xhc3QgPT0gb2xkQ2hpbGQpCiAgICAgICAgIG1fbGFz
dCA9IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBvbGRDaGlsZC0+Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXMoKTsKKyNlbmRpZgorCiAgICAgaWYgKG9sZENoaWxkLT5pc05vcm1hbEZsb3dP
bmx5KCkpCiAgICAgICAgIGRpcnR5Tm9ybWFsRmxvd0xpc3QoKTsKLSAgICBpZiAoIW9sZENoaWxk
LT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQoKSkgeyAKKyAgICBp
ZiAoIW9sZENoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgb2xkQ2hpbGQtPmZpcnN0Q2hpbGQo
KSkgewogICAgICAgICAvLyBEaXJ0eSB0aGUgei1vcmRlciBsaXN0IGluIHdoaWNoIHdlIGFyZSBj
b250YWluZWQuICBXaGVuIGNhbGxlZCB2aWEgdGhlCiAgICAgICAgIC8vIHJlYXR0YWNobWVudCBw
cm9jZXNzIGluIHJlbW92ZU9ubHlUaGlzTGF5ZXIsIHRoZSBsYXllciBtYXkgYWxyZWFkeSBiZSBk
aXNjb25uZWN0ZWQKICAgICAgICAgLy8gZnJvbSB0aGUgbWFpbiBsYXllciB0cmVlLCBzbyB3ZSBu
ZWVkIHRvIG51bGwtY2hlY2sgdGhlIHxzdGFja2luZ0NvbnRhaW5lcnwgdmFsdWUuCiAgICAgICAg
IG9sZENoaWxkLT5kaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKyAgICAgICAg
c2NoZWR1bGVVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKTsK
KworICAgICAgICAvLyBUaGlzIGNvdWxkIGFmZmVjdCB3aGV0aGVyIG9yIG5vdCBhIGxheWVyIGhh
cyBhbiBvdXQgb2YgZmxvdworICAgICAgICAvLyBwb3NpdGlvbmVkIGRlc2NlbmRhbnQgc28gd2Ug
bmVlZCB0byBzY2hlZHVsZSBzb21lIHVwZGF0ZXMuCisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIq
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAg
ICAgbGF5ZXItPnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAgICAg
fQogCiAgICAgaWYgKChvbGRDaGlsZC0+cmVuZGVyZXIoKSAmJiBvbGRDaGlsZC0+cmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHx8IG9sZENoaWxkLT5oYXNPdXRPZkZsb3dQb3Np
dGlvbmVkRGVzY2VuZGFudCgpKQpAQCAtMTc3NSw3ICsxODE0LDcgQEAgUmVuZGVyTGF5ZXIqIFJl
bmRlckxheWVyOjpyZW1vdmVDaGlsZChSZW5kZXJMYXllciogb2xkQ2hpbGQpCiAgICAgb2xkQ2hp
bGQtPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICBvbGRDaGlsZC0+c2V0TmV4dFNpYmxpbmco
MCk7CiAgICAgb2xkQ2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICAKKwogICAgIG9sZENoaWxkLT51
cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKICAgICBpZiAob2xkQ2hpbGQtPm1faGFz
VmlzaWJsZUNvbnRlbnQgfHwgb2xkQ2hpbGQtPm1faGFzVmlzaWJsZURlc2NlbmRhbnQpCiAgICAg
ICAgIGRpcnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCk7CkBAIC0xOTk5
LDQwICsyMDM4LDEyOCBAQCBib29sIFJlbmRlckxheWVyOjpuZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSBjb25zdAogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKQogewotICAgIGJvb2wgb2xkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nID0gbV9uZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcg
PSBmYWxzZTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygp
LT5mcmFtZVZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT5jb250YWlu
c1Njcm9sbGFibGVBcmVhKHRoaXMpKQotICAgICAgICBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGlu
ZyA9IGZhbHNlOwotICAgIGVsc2UgeworICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5j
b250YWluc1Njcm9sbGFibGVBcmVhKHRoaXMpKSB7CisgICAgICAgIHVwZGF0ZURlc2NlbmRhbnRE
ZXBlbmRlbnRGbGFncygpOworCiAgICAgICAgIGJvb2wgZm9yY2VVc2VDb21wb3NpdGVkU2Nyb2xs
aW5nID0gYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpCiAg
ICAgICAgICAgICAmJiBjYW5CZVN0YWNraW5nQ29udGFpbmVyKCkKICAgICAgICAgICAgICYmICFo
YXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgpOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOworICAgICAgICBuZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcgfHwgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpOwogI2Vsc2UKLSAgICAgICAgbV9uZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgPSBmb3JjZVVzZUNvbXBvc2l0ZWRTY3JvbGxpbmc7CisgICAgICAg
IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IGZvcmNlVXNlQ29tcG9zaXRlZFNjcm9sbGluZzsK
ICNlbmRpZgotICAgICAgICAvLyBXZSBnYXRoZXIgYSBib29sZWFuIHZhbHVlIGZvciB1c2Ugd2l0
aCBHb29nbGUgVU1BIGhpc3RvZ3JhbXMgdG8KLSAgICAgICAgLy8gcXVhbnRpZnkgdGhlIGFjdHVh
bCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGluZyB0bwotICAgICAgICAvLyBy
ZWxheCBjb21wb3NpdGVkIHNjcm9sbGluZyByZXF1aXJlbWVudHMsIHRoZXJlYnkgaW5jcmVhc2lu
ZyB0aGUKLSAgICAgICAgLy8gbnVtYmVyIG9mIGNvbXBvc2l0ZWQgb3ZlcmZsb3cgZGl2cy4KLSAg
ICAgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQo
KSkKLSAgICAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJS
ZW5kZXJlci5OZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmciLCBtX25lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAgICAgfQogCi0gICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyAh
PSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewotICAgICAgICB1cGRhdGVTZWxmUGFpbnRp
bmdMYXllcigpOwotICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQotICAgICAgICAg
ICAgZGlydHlaT3JkZXJMaXN0cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhclpP
cmRlckxpc3RzKCk7CisgICAgc2V0TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKG5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZyk7Cit9CiAKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRl
ckxpc3RzKCk7Cit2b2lkIFJlbmRlckxheWVyOjpzZXROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmco
Ym9vbCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCit7CisgICAgLy8gV2UgZ2F0aGVyIGEgYm9v
bGVhbiB2YWx1ZSBmb3IgdXNlIHdpdGggR29vZ2xlIFVNQSBoaXN0b2dyYW1zIHRvCisgICAgLy8g
cXVhbnRpZnkgdGhlIGFjdHVhbCBlZmZlY3RzIG9mIGEgc2V0IG9mIHBhdGNoZXMgYXR0ZW1wdGlu
ZyB0bworICAgIC8vIHJlbGF4IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIHJlcXVpcmVtZW50cywgdGhl
cmVieSBpbmNyZWFzaW5nIHRoZQorICAgIC8vIG51bWJlciBvZiBjb21wb3NpdGVkIG92ZXJmbG93
IGRpdnMuCisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVu
YWJsZWQoKSkKKyAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24o
IlJlbmRlcmVyLk5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyIsIG5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZywgMik7CiAKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2YWx1YXRlQ29t
cG9zaXRpbmdBZnRlckxheW91dCgpOwotICAgICAgICBjb21wb3NpdG9yKCktPnNldENvbXBvc2l0
aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsKKyAgICBpZiAobV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcgPT0gbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZzsKKwor
ICAgIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgaWYgKGlzU3RhY2tpbmdDb250YWlu
ZXIoKSkKKyAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworICAgIGVsc2UKKyAgICAgICAgY2xl
YXJaT3JkZXJMaXN0cygpOworCisgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3Rz
KCk7CisKKyAgICBjb21wb3NpdG9yKCktPnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0Fm
dGVyTGF5b3V0KCk7CisgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRS
ZWJ1aWxkKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNjaGVkdWxlVXBkYXRlTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkKK3sKKyAgICBpZiAoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92
ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcih0aGlzLCBVcGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOworfQorCit2b2lk
IFJlbmRlckxheWVyOjpzY2hlZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlcigpCit7CisgICAgaWYgKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbEVuYWJsZWQoKSkKKyAgICAgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXIodGhpcywgVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKTsK
K30KKwordm9pZCBSZW5kZXJMYXllcjo6Y2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+
dmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW5kZXJlcigpLT52aWV3KCktPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLnJlbW92ZShjb25zdF9jYXN0PFJlbmRlckxh
eWVyKj4odGhpcykpOworICAgIHJlbmRlcmVyKCktPnZpZXcoKS0+cGVuZGluZ0NvbnRpZ3VpdHlV
cGRhdGVzKCkucmVtb3ZlKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKSk7Cit9CisKK1Nj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcihSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorICAgIDogbV9yZW5kZXJWaWV3KHJlbmRl
clZpZXcpCit7CisgICAgaWYgKG1fcmVuZGVyVmlldykKKyAgICAgICAgbV9yZW5kZXJWaWV3LT5z
Y29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcnNDb3VudCgpKys7Cit9CisKK1Njb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOjpTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRl
cihSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVNb2RlIG1vZGUp
CisgICAgOiBtX3JlbmRlclZpZXcoMCkKK3sKKyAgICBpZiAoIWxheWVyIHx8ICFsYXllci0+cmVu
ZGVyZXIoKS0+dmlldygpIHx8ICFsYXllci0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclZpZXcg
PSBsYXllci0+cmVuZGVyZXIoKS0+dmlldygpOworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29t
cG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJzQ291bnQoKSsrOworCisgICAgaWYgKG1vZGUgPT0gVXBk
YXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgICAgICBtX3JlbmRlclZpZXctPnBlbmRp
bmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpLmFkZChsYXllcik7CisgICAgZWxzZSBpZiAo
bW9kZSA9PSBVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpCisg
ICAgICAgIG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCkuYWRkKGxheWVy
KTsKK30KKworU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXI6On5TY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlcigpCit7CisgICAgaWYgKCFtX3JlbmRlclZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcmVuZGVyVmlldy0+c2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1Vw
ZGF0ZXJzQ291bnQoKS0tOworICAgIEFTU0VSVChtX3JlbmRlclZpZXctPnNjb3BlZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkgPj0gMCk7CisgICAgaWYgKCFtX3JlbmRlclZpZXct
PnNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50KCkpIHsKKyAgICAgICAgSGFz
aFNldDxSZW5kZXJMYXllcio+IHBlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyA9IG1f
cmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCk7CisgICAgICAg
IG1fcmVuZGVyVmlldy0+cGVuZGluZ0NvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKCkuY2xlYXIo
KTsKKworICAgICAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gcGVuZGluZ0NvbnRpZ3VpdHlVcGRh
dGVzID0gbV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKTsKKyAgICAgICAg
bV9yZW5kZXJWaWV3LT5wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXMoKS5jbGVhcigpOworCisgICAg
ICAgIGlmICghcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IHN0YWNraW5nQ29udGV4dHM7CisgICAgICAgICAgICBm
b3IgKEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXRlciA9IHBlbmRpbmdDb250aWd1
aXR5VXBkYXRlcy5iZWdpbigpOyBpdGVyICE9IHBlbmRpbmdDb250aWd1aXR5VXBkYXRlcy5lbmQo
KTsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4
dCA9ICppdGVyOworICAgICAgICAgICAgICAgIHdoaWxlIChzdGFja2luZ0NvbnRleHQgJiYgIXN0
YWNraW5nQ29udGV4dC0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
c3RhY2tpbmdDb250ZXh0ID0gc3RhY2tpbmdDb250ZXh0LT5wYXJlbnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc3RhY2tpbmdDb250ZXh0KQorICAgICAgICAgICAgICAgICAgICBzdGFja2luZ0Nv
bnRleHRzLmFkZChzdGFja2luZ0NvbnRleHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yIChIYXNoU2V0PFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBzdGFja2luZ0NvbnRl
eHRzLmJlZ2luKCk7IGl0ZXIgIT0gc3RhY2tpbmdDb250ZXh0cy5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisgICAg
ICAgICAgICAgICAgKCppdGVyKS0+dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBl
bmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IGZvciAoSGFzaFNldDxSZW5kZXJMYXllcio+OjppdGVyYXRvciBpdGVyID0gcGVuZGluZ0NvbXBv
c2l0ZWRTY3JvbGxpbmdVcGRhdGVzLmJlZ2luKCk7IGl0ZXIgIT0gcGVuZGluZ0NvbXBvc2l0ZWRT
Y3JvbGxpbmdVcGRhdGVzLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgKCppdGVyKS0+
dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAj
ZW5kaWYKQEAgLTIzMzMsNyArMjQ2MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBv
c2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKQogICAgICAgICAvLyByZXBvc2l0aW9uaW5nLCBzbyB1
cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGZyb20gdGhlcmUuCiAgICAgICAgIGlmIChSZW5kZXJM
YXllciogY29tcG9zaXRpbmdBbmNlc3RvciA9IHN0YWNraW5nQ29udGFpbmVyKCktPmVuY2xvc2lu
Z0NvbXBvc2l0aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3IoKS0+Y29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXAoKSkgewotICAgICAgICAgICAgICAgIGlmICh1c2VzQ29t
cG9zaXRlZFNjcm9sbGluZygpICYmICFoYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudCgp
KQorICAgICAgICAgICAgICAgIGlmICh1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKQogICAgICAg
ICAgICAgICAgICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBv
c2l0aW5nVXBkYXRlT25Db21wb3NpdGVkU2Nyb2xsLCBjb21wb3NpdGluZ0FuY2VzdG9yKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+dXBk
YXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVPblNjcm9sbCwgY29tcG9zaXRp
bmdBbmNlc3Rvcik7CkBAIC0zMTc5LDEyICszMzA2LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKIAogICAgIGlmIChvcmlnaW5hbFNjcm9sbE9mZnNl
dCAhPSBzY3JvbGxPZmZzZXQoKSkKICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKEludFBvaW50KHNjcm9sbE9mZnNldCgpKSk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgLy8gQ29tcG9zaXRlZCBzY3JvbGxpbmcgbWF5IG5lZWQgdG8gYmUgZW5h
YmxlZCBvciBkaXNhYmxlZCBpZiB0aGUgYW1vdW50IG9mIG92ZXJmbG93IGNoYW5nZWQuCi0gICAg
aWYgKHJlbmRlcmVyKCktPnZpZXcoKSAmJiBjb21wb3NpdG9yKCktPnVwZGF0ZUxheWVyQ29tcG9z
aXRpbmdTdGF0ZSh0aGlzKSkKLSAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xh
eWVyc05lZWRSZWJ1aWxkKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6b3ZlcmZs
b3dDb250cm9sc0ludGVyc2VjdFJlY3QoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdApA
QCAtMzkxMSw2ICs0MDMyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQKICAgICBpZiAoIWhh
c1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVzKHJlbmRlcmVyKCktPnZp
ZXcoKSk7CisjZW5kaWYKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIodGhpcyk7CiAjZW5kaWYKQEAgLTUzNzMsNiArNTQ5
Nyw5IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zCiAgICAgCiAgICAgQVNTRVJUKGlzU3RhY2tp
bmdDb250YWluZXIoKSB8fCAoIXBvc1pPcmRlckxpc3QoKSB8fCAhcG9zWk9yZGVyTGlzdCgpLT5z
aXplKCkpKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBTY29wZWRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXModGhpcy0+cmVuZGVyZXIoKS0+dmlldygpKTsKKyNlbmRpZgogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9j
YXN0PFJlbmRlckxheWVyKj4odGhpcykpOwogI2VuZGlmCkBAIC01NjExLDYgKzU3MzgsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKCkKICAgICBtX3pPcmRlckxpc3RzRGly
dHkgPSB0cnVlOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fZGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyRGlydHkgPSB0cnVlOworICAgIHNj
aGVkdWxlVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAg
Y29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgICAg
IGlmIChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCkBA
IC01NjIxLDkgKzU3NTAsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlaT3JkZXJMaXN0cygp
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygp
CiB7Ci0gICAgUmVuZGVyTGF5ZXIqIHNjID0gc3RhY2tpbmdDb250YWluZXIoKTsKLSAgICBpZiAo
c2MpCi0gICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgUmVuZGVyTGF5ZXIqIHN0
YWNraW5nQ29udGFpbmVyID0gdGhpcy0+c3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBpZiAoc3Rh
Y2tpbmdDb250YWluZXIpCisgICAgICAgIHN0YWNraW5nQ29udGFpbmVyLT5kaXJ0eVpPcmRlckxp
c3RzKCk7CisKKyAgICAvLyBBbnkgY2hhbmdlIHRoYXQgY291bGQgYWZmZWN0IG91ciBzdGFja2lu
ZyBjb250YWluZXIncyB6LW9yZGVyIGxpc3QgY291bGQKKyAgICAvLyBjYXVzZSBvdGhlciBSZW5k
ZXJMYXllcnMgaW4gb3VyIHN0YWNraW5nIGNvbnRleHQgdG8gZWl0aGVyIG9wdCBpbiBvciBvdXQK
KyAgICAvLyBvZiBjb21wb3NpdGVkIHNjcm9sbGluZy4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ug
bWFrZSBvdXIgc3RhY2tpbmcKKyAgICAvLyBjb250ZXh0IGF3YXJlIG9mIHRoZXNlIHotb3JkZXIg
Y2hhbmdlcyBzbyB0aGUgYXBwcm9wcmlhdGUgdXBkYXRpbmcgY2FuCisgICAgLy8gaGFwcGVuLgor
ICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRleHQgPSB0aGlzLT5zdGFja2luZ0NvbnRleHQo
KTsKKyAgICBpZiAoc3RhY2tpbmdDb250ZXh0ICYmIHN0YWNraW5nQ29udGV4dCAhPSBzdGFja2lu
Z0NvbnRhaW5lcikKKyAgICAgICAgc3RhY2tpbmdDb250ZXh0LT5kaXJ0eVpPcmRlckxpc3RzKCk7
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5Tm9ybWFsRmxvd0xpc3QoKQpAQCAtNTc0Miw3
ICs1ODgwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVI
aWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvcgogCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewotICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAm
JiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgYm9v
bCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgJiYgaXNTdGFj
a2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3RE
aXJ0eSkgJiYgbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJEaXJ0eTsK
ICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAK
QEAgLTU5MzAsMjggKzYwNjgsNDAgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNWaXN1YWxseU5vbkVt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVZpc2liaWxpdHlBZnRlclN0eWxlQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBpZiAoIW9sZFN0eWxlKQot
ICAgICAgICByZXR1cm47CisgICAgRVZpc2liaWxpdHkgb2xkVmlzaWJpbGl0eSA9IFZJU0lCTEU7
CisgICAgaWYgKG9sZFN0eWxlKQorICAgICAgICBvbGRWaXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZp
c2liaWxpdHkoKTsKIAotICAgIGJvb2wgd2FzU3RhY2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0Nv
bnRleHQob2xkU3R5bGUpOwotICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQgPSB0aGlzLT5pc1N0
YWNraW5nQ29udGV4dCgpOwotICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCAhPSB3YXNTdGFja2lu
Z0NvbnRleHQpIHsKLSAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCk7
Ci0gICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKLSAgICAgICAgICAgIGRpcnR5Wk9yZGVy
TGlzdHMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXJaT3JkZXJMaXN0cygpOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKG9sZFZpc2liaWxpdHkgIT0gcmVuZGVyZXIoKS0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpKSB7CisgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0g
dGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKQorICAgICAgICAgICAgbGF5ZXIt
PnNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgfQorfQorCit2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTdGFja2luZ0NvbnRleHRzQWZ0ZXJTdHlsZUNoYW5nZShj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgYm9vbCB3YXNTdGFja2luZ0NvbnRl
eHQgPSBmYWxzZTsKKyAgICBFVmlzaWJpbGl0eSBvbGRWaXNpYmlsaXR5ID0gVklTSUJMRTsKKyAg
ICBpbnQgb2xkWkluZGV4ID0gMDsKKyAgICBpZiAob2xkU3R5bGUpIHsKKyAgICAgICAgd2FzU3Rh
Y2tpbmdDb250ZXh0ID0gaXNTdGFja2luZ0NvbnRleHQob2xkU3R5bGUpOworICAgICAgICBvbGRW
aXNpYmlsaXR5ID0gb2xkU3R5bGUtPnZpc2liaWxpdHkoKTsKKyAgICAgICAgb2xkWkluZGV4ID0g
b2xkU3R5bGUtPnpJbmRleCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW5kZXJMYXllciBh
bHJlYWR5IGhhbmRsZXMgdmlzaWJpbGl0eSBjaGFuZ2VzIHRocm91Z2ggb3VyIHZpc2libGl0eSBk
aXJ0eSBiaXRzLiBUaGlzIGxvZ2ljIGNvdWxkCiAgICAgLy8gbGlrZWx5IGJlIGZvbGRlZCBhbG9u
ZyB3aXRoIHRoZSByZXN0LgotICAgIGlmIChvbGRTdHlsZS0+ekluZGV4KCkgIT0gcmVuZGVyZXIo
KS0+c3R5bGUoKS0+ekluZGV4KCkgfHwgb2xkU3R5bGUtPnZpc2liaWxpdHkoKSAhPSByZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkpIHsKKyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0
ID0gdGhpcy0+aXNTdGFja2luZ0NvbnRleHQoKTsKKyAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQg
IT0gd2FzU3RhY2tpbmdDb250ZXh0CisgICAgICAgIHx8IG9sZFZpc2liaWxpdHkgIT0gcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpCisgICAgICAgIHx8IG9sZFpJbmRleCAhPSByZW5k
ZXJlcigpLT5zdHlsZSgpLT56SW5kZXgoKSkgewogICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGFp
bmVyWk9yZGVyTGlzdHMoKTsKLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KQorICAgICAg
ICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQogICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVhclpPcmRlckxpc3RzKCk7CiAgICAg
fQogfQogCkBAIC02MDEwLDcgKzYxNjAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRBbmNlc3Rv
ckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoUmVuZGVyT2JqZWN0KgogICAg
ICAgICBsYXllci0+bV9oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudERpcnR5ID0gZmFs
c2U7CiAgICAgICAgIGxheWVyLT5tX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50ID0g
dHJ1ZTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIGxheWVyLT51
cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICAgICAgbGF5ZXItPnNldE5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZyhmYWxzZSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAobGF5ZXIt
PnJlbmRlcmVyKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkgPT0gY29udGFpbmluZ0Jsb2NrKQpAQCAt
NjAyMCw3ICs2MTcwLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNP
dXRPZkZsb3dQb3NpdGlvbmVkRGVzY2VuZGFudChSZW5kZXJPYmplY3QqCiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OmRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50
U3RhdHVzKCkKIHsKLSAgICBtX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50RGlydHkg
PSB0cnVlOworICAgIGlmIChtX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50KSB7Cisg
ICAgICAgIG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnREaXJ0eSA9IHRydWU7Cisg
ICAgICAgIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgfQog
ICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgcGFyZW50KCktPmRpcnR5QW5jZXN0b3JDaGFpbkhh
c091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50U3RhdHVzKCk7CiB9CkBAIC02MDI4LDEyICs2
MTgxLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxv
d1Bvc2l0aW9uZWREZXNjZW5kYW50U3RhdHVzKCkKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU91
dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIGJv
b2wgd2FzT3V0T2ZGbG93UG9zaXRpb25lZCA9IG9sZFN0eWxlICYmIChvbGRTdHlsZS0+cG9zaXRp
b24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uIHx8IG9sZFN0eWxlLT5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb24pOwotICAgIGlmIChwYXJlbnQoKSAmJiAoKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpICE9IHdhc091dE9mRmxvd1Bvc2l0aW9uZWQpKSB7
Ci0gICAgICAgIHBhcmVudCgpLT5kaXJ0eUFuY2VzdG9yQ2hhaW5IYXNPdXRPZkZsb3dQb3NpdGlv
bmVkRGVzY2VuZGFudFN0YXR1cygpOwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LSAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgJiYgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQotICAgICAgICAg
ICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91
dCgpOwotI2VuZGlmCisgICAgYm9vbCBpc091dE9mRmxvd1Bvc2l0aW9uZWQgPSByZW5kZXJlcigp
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsKKyAgICBpZiAocGFyZW50KCkgJiYgaXNPdXRPZkZs
b3dQb3NpdGlvbmVkICE9IHdhc091dE9mRmxvd1Bvc2l0aW9uZWQpIHsKKyAgICAgICAgaWYgKGlz
T3V0T2ZGbG93UG9zaXRpb25lZCkKKyAgICAgICAgICAgIHBhcmVudCgpLT5zZXRBbmNlc3RvckNo
YWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQocmVuZGVyZXIoKS0+Y29udGFpbmlu
Z0Jsb2NrKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJlbnQoKS0+ZGlydHlBbmNl
c3RvckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnRTdGF0dXMoKTsKICAgICB9
CiB9CiAKQEAgLTYwNzQsNiArNjIyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdl
ZChTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIAogICAgIHVw
ZGF0ZVNjcm9sbGJhcnNBZnRlclN0eWxlQ2hhbmdlKG9sZFN0eWxlKTsKICAgICB1cGRhdGVTdGFj
a2luZ0NvbnRleHRzQWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7CisgICAgdXBkYXRlVmlzaWJp
bGl0eUFmdGVyU3R5bGVDaGFuZ2Uob2xkU3R5bGUpOwogICAgIC8vIE92ZXJsYXkgc2Nyb2xsYmFy
cyBjYW4gbWFrZSB0aGlzIGxheWVyIHNlbGYtcGFpbnRpbmcgc28gd2UgbmVlZAogICAgIC8vIHRv
IHJlY29tcHV0ZSB0aGUgYml0IG9uY2Ugc2Nyb2xsYmFycyBoYXZlIGJlZW4gdXBkYXRlZC4KICAg
ICB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOwpAQCAtNjEwNyw4ICs2MjYxLDYgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKQogI2VuZGlmCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7Ci0KICAgICBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3U3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgpOwogICAgIGlmIChjb21wb3Np
dG9yKCktPnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSh0aGlzKQogICAgICAgICB8fCBuZWVk
c0NvbXBvc2l0aW5nTGF5ZXJzUmVidWlsdEZvckNsaXAob2xkU3R5bGUsIG5ld1N0eWxlKQpAQCAt
NjE0NSwxMiArNjI5NywxNCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxhYmxlQXJl
YVNldChib29sIGhhc092ZXJmbG93KQogICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyID0gZnJhbWUtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBpc1Zpc2libGVUb0hpdFRlc3Qg
Jj0gb3duZXItPnJlbmRlcmVyKCkgJiYgb3duZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRl
c3RpbmcoKTsKIAotICAgIGlmIChoYXNPdmVyZmxvdyAmJiBpc1Zpc2libGVUb0hpdFRlc3QgPyBm
cmFtZVZpZXctPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMpIDogZnJhbWVWaWV3LT5yZW1vdmVTY3Jv
bGxhYmxlQXJlYSh0aGlzKSkKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
ICAgIHVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwotI2Vsc2UKLSAgICAgICAgcmV0
dXJuOwotI2VuZGlmCisgICAgYm9vbCB1cGRhdGVkU2Nyb2xsYWJsZUFyZWFTZXQgPSBmYWxzZTsK
KyAgICBpZiAoaGFzT3ZlcmZsb3cgJiYgaXNWaXNpYmxlVG9IaXRUZXN0KQorICAgICAgICB1cGRh
dGVkU2Nyb2xsYWJsZUFyZWFTZXQgPSBmcmFtZVZpZXctPmFkZFNjcm9sbGFibGVBcmVhKHRoaXMp
OworICAgIGVsc2UKKyAgICAgICAgdXBkYXRlZFNjcm9sbGFibGVBcmVhU2V0ID0gZnJhbWVWaWV3
LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKKworICAgIGlmICh1cGRhdGVkU2Nyb2xsYWJs
ZUFyZWFTZXQpCisgICAgICAgIHNjaGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5n
KCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggNWUxYzhjOWY4N2JhZjRmNDAz
NmE5ZjFlNzk5YWVjYjNhNmFiOTk2MC4uNmMzMTFmNzNjNWE5MzIwYmFhYmQyNWQ0MjUyNjIwYWE4
YTdlNDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTMxNSw5
ICszMTUsMjggQEAgcHVibGljOgogCiB0eXBlZGVmIFZlY3RvcjxMYXllckZyYWdtZW50LCAxPiBM
YXllckZyYWdtZW50czsKIAorZW51bSBDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlTW9kZSB7Cisg
ICAgVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nLAorICAgIFVwZGF0ZURlc2NlbmRhbnRz
QXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcgorfTsKKworLy8gVGhpcyBSQUlJIG9iamVjdCBh
bGxvd3MgdXMgdG8gYXZvaWQgY2FsbGluZyB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcK
Ky8vIHdoaWxlIGFueSBpbnN0YW5jZSBpcyBpbiBzY29wZS4gV2hlbiB0aGUgbGFzdCBpbnN0YW5j
ZSBpcyBkZXN0cnVjdGVkLCBhbGwgCisvLyB1cGRhdGVzIGFyZSBwcm9jZXNzZWQuIFRoaXMgYWxs
b3dzIHVzIHRvIHBvc3Rwb25lIHVwZGF0ZXMgZHVyaW5nIGxheWVyIGxpc3QKKy8vIHVwZGF0ZXMu
IChJZiB3ZSBkaWRuJ3QgcG9zdHBvbmUgdGhlIHVwZGF0ZXMsIHRoZXkgd291bGQgY2F1c2UgZXJy
b3JzIHNpbmNlCisvLyB0aGV5IHJlcXVpcmUgY2xlYW4gbGlzdHMpLgorc3RydWN0IFNjb3BlZENv
bXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHsKKyAgICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5n
VXBkYXRlcihSZW5kZXJWaWV3Kik7CisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0
ZXIoUmVuZGVyTGF5ZXIqLCBDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlTW9kZSk7CisgICAgflNj
b3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyKCk7Citwcml2YXRlOgorICAgIFJlbmRlclZp
ZXcqIG1fcmVuZGVyVmlldzsKK307CisKIGNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9s
bGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKKyAg
ICBmcmllbmQgc3RydWN0IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyOwogCiAgICAg
UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopOwogICAgIH5SZW5kZXJMYXllcigp
OwpAQCAtNTA2LDYgKzUyNSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gbGF5ZXIgaXRzZWxmLgogICAg
IFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRhaW5lcigpIGNvbnN0OwogCisgICAgLy8gR2V0cyB0
aGUgZW5jbG9zaW5nIHN0YWNraW5nIGNvbnRleHQgZm9yIHRoaXMgbGF5ZXIsIGV4Y2x1ZGluZyB0
aGlzCisgICAgLy8gbGF5ZXIgaXRzZWxmLgorICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRl
eHQoKSBjb25zdDsKKwogICAgIC8vIEdldHMgdGhlIGVuY2xvc2luZyBzdGFja2luZyBjb250YWlu
ZXIgZm9yIHRoaXMgbGF5ZXIsIHBvc3NpYmx5IHRoZSBsYXllcgogICAgIC8vIGl0c2VsZiwgaWYg
aXQgaXMgYSBzdGFja2luZyBjb250YWluZXIuCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1N0
YWNraW5nQ29udGFpbmVyKCkgeyByZXR1cm4gaXNTdGFja2luZ0NvbnRhaW5lcigpID8gdGhpcyA6
IHN0YWNraW5nQ29udGFpbmVyKCk7IH0KQEAgLTg3OSw2ICs5MDIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0
ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgdm9pZCB1cGRhdGVWaXNpYmlsaXR5QWZ0ZXJTdHls
ZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogICAgIHZvaWQgdXBkYXRlU3Rh
Y2tpbmdDb250ZXh0c0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKQEAgLTg4OCw3ICs5MTIsMTggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpcnR5QW5jZXN0b3JDaGFpbkhhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50U3Rh
dHVzKCk7CiAgICAgdm9pZCB1cGRhdGVPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSk7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
dm9pZCB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICB2b2lkIHNldE5lZWRz
Q29tcG9zaXRlZFNjcm9sbGluZyhib29sKTsKKworICAgIHZvaWQgc2NoZWR1bGVVcGRhdGVOZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICB2b2lkIHNjaGVkdWxlVXBkYXRlRGVzY2VuZGFu
dHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgdm9pZCBjYW5jZWxTY2hlZHVs
ZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcygpIGNvbnN0OworI2Vsc2UKKyAgICB2b2lkIHNj
aGVkdWxlVXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgeyB9CisgICAgdm9pZCBzY2hl
ZHVsZVVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpIHsgfQor
ICAgIHZvaWQgY2FuY2VsU2NoZWR1bGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMoKSB7IH0K
KyNlbmRpZgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBjaGFuZ2VkLgog
ICAgIGJvb2wgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtMTE2Niw2ICsxMjAxLDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIGRlc2NlbmRhbnRzIGluIHN0YWNraW5nIG9yZGVyLiBUaGlzIGlzIG9u
ZSBvZiB0aGUgcmVxdWlyZW1lbnRzIG9mIGJlaW5nCiAgICAgLy8gYWJsZSB0byBzYWZlbHkgYmVj
b21lIGEgc3RhY2tpbmcgY29udGV4dC4KICAgICBib29sIG1fZGVzY2VuZGFudHNBcmVDb250aWd1
b3VzSW5TdGFja2luZ09yZGVyIDogMTsKKyAgICBib29sIG1fZGVzY2VuZGFudHNBcmVDb250aWd1
b3VzSW5TdGFja2luZ09yZGVyRGlydHkgOiAxOwogCiAgICAgY29uc3QgYm9vbCBtX2lzUm9vdExh
eWVyIDogMTsKIApAQCAtMTI5Miw2ICsxMzI4LDEwIEBAIGlubGluZSB2b2lkIFJlbmRlckxheWVy
OjpjbGVhclpPcmRlckxpc3RzKCkKIAogaW5saW5lIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVpP
cmRlckxpc3RzKCkKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgU2Nv
cGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0ZWRTY3JvbGxpbmdV
cGRhdGVzKHJlbmRlcmVyKCktPnZpZXcoKSk7CisjZW5kaWYKKwogICAgIGlmICghbV96T3JkZXJM
aXN0c0RpcnR5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMDlmMjI1MzBmN2U5MjYxOGE5
OWNjZGRlNDk1MDdkZjliM2JhYjQ1Yi4uZmQ0MmU4ZTkwZDQ5MWExMzU2OGFlYjY1NzAxZTg1ZmI5
ZjNmNGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKQEAgLTgyOCw2ICs4MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6YWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJl
bgogICAgIGJvb2wgaGF2ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CiAgICAgYWRkVG9PdmVybGFw
TWFwKG92ZXJsYXBNYXAsIGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CiAKKyAg
ICBTY29wZWRDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9s
bGluZ1VwZGF0ZXMobV9yZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5
ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBA
IC05MjksNiArOTMwLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21w
b3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICAgICAgY2hpbGRT
dGF0ZS5tX3Rlc3RpbmdPdmVybGFwID0gdHJ1ZTsKICAgICB9CiAKKyAgICBTY29wZWRDb21wb3Np
dGVkU2Nyb2xsaW5nVXBkYXRlciBzdXNwZW5kQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXMobV9y
ZW5kZXJWaWV3KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25E
ZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCkBAIC0xMTQ0LDYgKzExNDYs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJU
cmVlKFJlbmRlckxheWVyKiBsYXllciwgVmVjdAogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4g
bGF5ZXJDaGlsZHJlbjsKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExpc3QgPSBs
YXllckJhY2tpbmcgPyBsYXllckNoaWxkcmVuIDogY2hpbGRMYXllcnNPZkVuY2xvc2luZ0xheWVy
OwogCisgICAgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgc3VzcGVuZENvbXBvc2l0
ZWRTY3JvbGxpbmdVcGRhdGVzKG1fcmVuZGVyVmlldyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNl
bmRpZgpAQCAtMTM4NCw2ICsxMzg3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZUxheWVyVHJlZUdlb21ldHJ5KFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHQKICNlbmRp
ZgogICAgIH0KIAorICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRD
b21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXll
cik7CiAjZW5kaWYKQEAgLTE0MzUsNiArMTQzOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciogY29t
CiAgICAgaWYgKCFsYXllci0+aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7
CiAjZW5kaWYKQEAgLTE0NzgsNiArMTQ4Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBJbnRSCiAg
ICAgICAgICAgICBsYXllci0+c2V0QmFja2luZ05lZWRzUmVwYWludCgpOwogICAgIH0KIAorICAg
IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xs
aW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXll
ckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKQEAg
LTI4OTUsNiArMjkwMSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNE
Q29udGVudChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0CiAKICAgICBjb25zdF9jYXN0
PFJlbmRlckxheWVyKj4obGF5ZXIpLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAorICAg
IFNjb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyIHN1c3BlbmRDb21wb3NpdGVkU2Nyb2xs
aW5nVXBkYXRlcyhtX3JlbmRlclZpZXcpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXll
ckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0PFJlbmRlckxh
eWVyKj4obGF5ZXIpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCmluZGV4IDMyMTczOTY3MjdkNWM4Y2U3ZWZmNTA4MThjMmY1NzQ0ZDVlODlmMTcuLmFiYjY5
YWJhZTIwZDJjZTgxZWZjNTBjZmE4YTFmMDA0NGFiMzY1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAgUmVuZGVyVmlldzo6UmVuZGVy
VmlldyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZChmYWxzZSkKICAgICAsIG1fbGF5b3V0U3RhdGUoMCkKICAgICAsIG1fbGF5b3V0U3RhdGVEaXNh
YmxlQ291bnQoMCkKKyAgICAsIG1fc2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJzQ291
bnQoMCkKICAgICAsIG1fcmVuZGVyUXVvdGVIZWFkKDApCiAgICAgLCBtX3JlbmRlckNvdW50ZXJD
b3VudCgwKQogICAgICwgbV9sYXlvdXRQaGFzZShSZW5kZXJWaWV3Tm9ybWFsTGF5b3V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggM2M4NGFhYzBjYmU5ZDExYTNjODUy
YTVjNDdlOGRkNGFmNTUzNDhjOC4uZTIyZmU2N2ZjYjU3NTAzYTJkOTcwNDc2Y2I3MjZlNzNhYTIy
NmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0yMjcsNyArMjI3
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlbmRlckNvdW50ZXIoKSB7IG1fcmVuZGVyQ291
bnRlckNvdW50Kys7IH0KICAgICB2b2lkIHJlbW92ZVJlbmRlckNvdW50ZXIoKSB7IEFTU0VSVCht
X3JlbmRlckNvdW50ZXJDb3VudCA+IDApOyBtX3JlbmRlckNvdW50ZXJDb3VudC0tOyB9CiAgICAg
Ym9vbCBoYXNSZW5kZXJDb3VudGVycygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9
Ci0gICAgCisKKyAgICB1bnNpZ25lZCYgc2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXJz
Q291bnQoKSB7IHJldHVybiBtX3Njb3BlZENvbXBvc2l0ZWRTY3JvbGxpbmdVcGRhdGVyc0NvdW50
OyB9CisgICAgSGFzaFNldDxSZW5kZXJMYXllcio+JiBwZW5kaW5nQ29tcG9zaXRlZFNjcm9sbGlu
Z1VwZGF0ZXMoKSB7IHJldHVybiBtX3BlbmRpbmdDb21wb3NpdGVkU2Nyb2xsaW5nVXBkYXRlczsg
fQorICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiYgcGVuZGluZ0NvbnRpZ3VpdHlVcGRhdGVzKCkg
eyByZXR1cm4gbV9wZW5kaW5nQ29udGlndWl0eVVwZGF0ZXM7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCkgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKQEAgLTMzMCw2ICszMzQsMTAgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50OwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9y
PiBtX2NvbXBvc2l0b3I7CisKKyAgICB1bnNpZ25lZCBtX3Njb3BlZENvbXBvc2l0ZWRTY3JvbGxp
bmdVcGRhdGVyc0NvdW50OworICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3BlbmRpbmdDb21w
b3NpdGVkU2Nyb2xsaW5nVXBkYXRlczsKKyAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gbV9wZW5k
aW5nQ29udGlndWl0eVVwZGF0ZXM7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYm
IFVTRSgzRF9HUkFQSElDUykKICAgICBPd25QdHI8Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dD4g
bV9jdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE0ZTQwM2U1ZTFkNjIxZTI4ZTkz
OTFhYjJmNzI2NTFjNGJjYWZiNzAuLmI4YTAxOThmNTA5YmE4MzllMjUzOGVlYjU0YmYyODhmOGU2
YzNmMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wNC0wMiAgSWFuIFZvbGxpY2sgIDx2
b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFYXJseSBvdXQgb2YgUmVuZGVyTGF5ZXI6
OnVwZGF0ZUNhbkJlU3RhY2tpbmdDb250YWluZXIgbW9yZSBvZnRlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTY2CisKKyAgICAgICAgTm90ZTog
VGhpcyBwYXRjaCBpcyBtb2RpZmljYXRpb24gb2YgZWFybGllciB3b3JrIGJ5IEdsZW5uIEhhcnRt
YW5uLgorCisgICAgICAgIEhlcmUgd2UgaW50cm9kdWNlIGEgZGlydHkgYml0IGZvcgorICAgICAg
ICBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlciBpbiBvcmRlciB0byBh
dm9pZCByZWNvbXB1dGluZworICAgICAgICBmcmVzaCB2YWx1ZXMuIFRoaXMgY2F1c2VkIGEgcG90
ZW50aWFsIGZvciBjeWNsaWNhbCBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgdXBkYXRlWk9yZGVy
TGlzdHMoKSBhbmQgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCksIHNvIHdlIGFsc28K
KyAgICAgICAgaW50cm9kdWNlIGEgU2NvcGVkQ29tcG9zaXRlZFNjcm9sbGluZ1VwZGF0ZXIgUkFJ
SSBvYmplY3QgdG8gY2FsbAorICAgICAgICB1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmco
KSBvbmx5IHdoZW4gaXQgcmVhbGx5IG5lZWRzIHRvIGJlLgorICAgICAgICBUaGlzIGhhcyBhIG51
bWJlciBvZiBhZGRpdGlvbmFsIGJlbmVmaXRzLiBJdCBhbHNvIGFsbG93cyB1cyB0bworICAgICAg
ICBwb3N0cG9uZSB1cGRhdGVzIHRoYXQgYXJlIHNjaGVkdWxlZCBkdWUgdG8gYSBzdHlsZSBjaGFu
Z2UgKGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBhIGNoaWxkKSwgdGhhdCBzaG91bGRuJ3Qg
YmUgcHJvY2Vzc2VkIHVudGlsIGxheW91dCBjb21wbGV0ZXMuCisgICAgICAgIEl0IGFsc28gbGV0
cyB1cyBhdm9pZCByZWR1bmRhbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgbGF5ZXIuIElmIHdlCisg
ICAgICAgIHNjaGVkdWxlIG11bHRpcGxlIHVwZGF0ZXMgZm9yIGEgc2luZ2xlIGxheWVyLCBvbmx5
IG9uZSB3aWxsIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICAqIGNvbXBvc2l0aW5n
L292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRlZC1zY3JvbGxpbmctYWZ0
ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRp
bmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1h
ZnRlci1zdHlsZS1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3Zl
cmZsb3cvZHluYW1pYy1jb21wb3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRtbDoKKwogMjAxMy0w
NC0wMiAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4K
IAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9z
aXRlZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2F1dG9tYXRpY2FsbHktb3B0LWludG8tY29tcG9zaXRl
ZC1zY3JvbGxpbmctYWZ0ZXItc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NGRjMjkxNTY1MDU0OTJkYmRkZjg2N2QxOWVmMjkwNzk5ZDNhZDlmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50
by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzkgQEAKK2l0ZXJhdGlvbiAwOiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0
aW9uIDI6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzOiBQQVNT
LCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24gNDogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gNTogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDY6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDc6IFBBU1MsIGRvZXMg
bm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiA4OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4K
K2l0ZXJhdGlvbiA5OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxheWVyIHRyZWUuCitpdGVyYXRpb24g
MTA6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxMTogUEFTUywg
aGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRl
cmF0aW9uIDEzOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNDogUEFTUywgaGFz
IGxheWVyIHRyZWUuCitpdGVyYXRpb24gMTU6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0
aW9uIDE2OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAxNzogUEFTUywgZG9lcyBu
b3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDE4OiBQQVNTLCBkb2VzIG5vdCBoYXZlIGxh
eWVyIHRyZWUuCitpdGVyYXRpb24gMTk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9u
IDIwOiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyMTogUEFTUywgaGFzIGxheWVy
IHRyZWUuCitpdGVyYXRpb24gMjI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDIz
OiBQQVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyNDogUEFTUywgaGFzIGxheWVyIHRy
ZWUuCitpdGVyYXRpb24gMjU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJh
dGlvbiAyNjogUEFTUywgZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLgoraXRlcmF0aW9uIDI3OiBQ
QVNTLCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAyODogUEFTUywgaGFzIGxheWVyIHRyZWUu
CitpdGVyYXRpb24gMjk6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMwOiBQQVNT
LCBoYXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzMTogUEFTUywgaGFzIGxheWVyIHRyZWUuCitp
dGVyYXRpb24gMzI6IFBBU1MsIGhhcyBsYXllciB0cmVlLgoraXRlcmF0aW9uIDMzOiBQQVNTLCBo
YXMgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNDogUEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVy
YXRpb24gMzU6IFBBU1MsIGRvZXMgbm90IGhhdmUgbGF5ZXIgdHJlZS4KK2l0ZXJhdGlvbiAzNjog
UEFTUywgaGFzIGxheWVyIHRyZWUuCitpdGVyYXRpb24gMzc6IFBBU1MsIGhhcyBsYXllciB0cmVl
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0
aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWFmdGVyLXN0eWxlLWNoYW5nZS5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQt
aW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNWFhYWUyZDhjNjcwYjY3ZjBlYzQxZWU1ZGQ0ODkyNzMzNzNkM2NjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1v
cHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbApAQCAt
MCwwICsxLDE2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+
CisgICAgI3ByZWRlY2Vzc29yIHsKKyAgICAgIHdpZHRoOiA3MHB4OworICAgICAgaGVpZ2h0OiA3
MHB4OworICAgICAgbGVmdDogMjVweDsKKyAgICAgIHRvcDogMjVweDsKKyAgICAgIHotaW5kZXg6
IDI7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICBkaXNwbGF5OiBub25lOworICAgIH0KKworICAgICNjb250YWluZXIgeworICAg
ICAgd2lkdGg6IDUwMHB4OworICAgICAgaGVpZ2h0OiA1MDBweDsKKyAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICB3aWR0aDogMXB4OworICAg
ICAgaGVpZ2h0OiAxcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CisgICAgfQorCisgICAgI2NvbnRlbnRQcmVkZWNlc3NvciB7Cisg
ICAgICB6LWluZGV4OiAzOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDUwcHg7
CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9CisKKyAgICAjY29udGVudFN1Y2Nlc3NvciB7
CisgICAgICB3aWR0aDogMTAwMHB4OworICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRp
c3BsYXk6IG5vbmU7CisgICAgfQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgdmFyIGRlYnVnID0gZmFsc2U7CisKKyAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAgIHZh
ciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKTsKKyAgICB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgIHZh
ciBjb250ZW50UHJlZGVjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudFBy
ZWRlY2Vzc29yJyk7CisgICAgdmFyIGNvbnRlbnRTdWNjZXNzb3IgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGVudFN1Y2Nlc3NvcicpOworCisKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5j
dGlvbiB3cml0ZVJlc3VsdChpdGVyYXRpb24sIGV4cGVjdGVkUmVzdWx0KQorICAgIHsKKyAgICAg
IGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgaWYgKGRlYnVnKQorICAgICAgICB3cml0ZURlYnVn
KGl0ZXJhdGlvbik7CisKKyAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIml0ZXJhdGlvbiAiICsg
aXRlcmF0aW9uICsgIjogIjsKKworICAgICAgdmFyIGhhc0xheWVyVHJlZSA9ICEhd2luZG93Lmlu
dGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgaWYgKGhhc0xheWVyVHJl
ZSA9PT0gZXhwZWN0ZWRSZXN1bHQpCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBBU1Ms
ICI7CisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZBSUwsICI7CisK
KyAgICAgIGlmIChoYXNMYXllclRyZWUpCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gImhh
cyBsYXllciB0cmVlLlxuIjsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiZG9lcyBub3QgaGF2ZSBsYXllciB0cmVlLlxuIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3
cml0ZURlYnVnKGl0ZXJhdGlvbikKKyAgICB7CisgICAgICB2YXIgZWxlbWVudHMgPSBbY29udGFp
bmVyLCBjb250ZW50UHJlZGVjZXNzb3IsIGNvbnRlbnQsIGNvbnRlbnRTdWNjZXNzb3JdOworCisg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
IHZhciBlbGVtZW50ID0gZWxlbWVudHNbaV07CisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0g
Z2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9
ICJpdGVyYXRpb24gIiArIGl0ZXJhdGlvbiArICI6XG4iOworICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJcdGVsZW1lbnQ6ICIgKyBlbGVtZW50LmlkICsgIlxuIjsKKyAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiXHRoZWlnaHQ6ICIgKyBjb21wdXRlZFN0eWxlLmhlaWdodCArICJcbiI7
CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlx0d2lkdGg6ICIgKyBjb21wdXRlZFN0eWxl
LndpZHRoICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiXHRvdmVyZmxvd1g6
ICIgKyBjb21wdXRlZFN0eWxlLm92ZXJmbG93WCArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5l
clRleHQgKz0gIlx0b3ZlcmZsb3dZOiAiICsgY29tcHV0ZWRTdHlsZS5vdmVyZmxvd1kgKyAiXG4i
OworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdGRpc3BsYXk6ICIgKyBjb21wdXRlZFN0
eWxlLmRpc3BsYXkgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcdHpJbmRl
eDogIiArIGNvbXB1dGVkU3R5bGUuekluZGV4ICsgIlxuIjsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgIHJlc3VsdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICAgIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29udGVudCcpOworICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpOworICAgICAgY29udGVudFByZWRlY2Vzc29yID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRlbnRQcmVkZWNlc3NvcicpOworICAgICAgY29udGVudFN1Y2Nlc3Nv
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50U3VjY2Vzc29yJyk7CisKKyAgICAg
IHZhciBjb3VudCA9IDA7CisKKyAgICAgIHdyaXRlUmVzdWx0KGNvdW50KyssIGZhbHNlKTsKKwor
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgY29udGVudC5zdHls
ZS5oZWlnaHQgPSBpID8gJzEwMDBweCcgOiAnMXB4JzsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCAyOyBqKyspIHsKKyAgICAgICAgICBjb250ZW50LnN0eWxlLndpZHRoID0gaiA/ICcxMDAw
cHgnIDogJzFweCc7CisgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCAyOyBrKyspIHsKKyAg
ICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5vdmVyZmxvd1ggPSBrID8gJ3Njcm9sbCcgOiAndmlz
aWJsZSc7CisgICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IDI7IG0rKykgeworICAgICAg
ICAgICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0gbSA/ICdzY3JvbGwnIDogJ3Zpc2li
bGUnOworICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IDI7IG4rKykgeworICAgICAg
ICAgICAgICAgIGNvbnRlbnRTdWNjZXNzb3Iuc3R5bGUuZGlzcGxheSA9IG4gPyAnYmxvY2snIDog
J25vbmUnOworCisgICAgICAgICAgICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywgISEoKGkgfHwg
aiB8fCBuKSAmJiAoayB8fCBtKSkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGNvbnRlbnQuc3R5bGUuaGVp
Z2h0ID0gJzEwMDBweCc7CisgICAgICBjb250ZW50LnN0eWxlLndpZHRoID0gJzEwMDBweCc7Cisg
ICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dYID0gJ3Njcm9sbCc7CisgICAgICBjb250YWlu
ZXIuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7CisgICAgICBjb250ZW50U3VjY2Vzc29yLnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICBwcmVkZWNlc3Nvci5zdHlsZS5kaXNwbGF5ID0g
J2Jsb2NrJzsKKworICAgICAgd3JpdGVSZXN1bHQoY291bnQrKywgdHJ1ZSk7CisKKyAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGNvbnRlbnRQcmVkZWNlc3Nvci5z
dHlsZS5kaXNwbGF5ID0gaSA/ICdub25lJyA6ICdibG9jayc7CisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IGog
PyAnYXV0bycgOiAnMSc7CisKKyAgICAgICAgICB3cml0ZVJlc3VsdChjb3VudCsrLCBpICE9PSAw
IHx8IGogIT09IDEpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwcmVkZWNlc3NvciI+PC9kaXY+CisgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iY29udGVudFByZWRlY2Vzc29yIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJjb250ZW50Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250ZW50U3VjY2Vzc29y
Ij48L2Rpdj4KKyAgPC9kaXY+CisgIDxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2R5
bmFtaWMtY29tcG9zaXRlZC1zY3JvbGxpbmctc3RhdHVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9vdmVyZmxvdy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1s
CmluZGV4IDQwZWVhNWYyZDUyZTE5OGMyMjhiMDU0YThmZGM3ZDhjNmIzMWFkZjEuLjI5MmQ3MTBl
N2U4YWU1ZTBhZWY5NTkwMDVhNThiZDBkZWI5NDFmZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1zY3JvbGxpbmctc3RhdHVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZHluYW1pYy1jb21w
b3NpdGVkLXNjcm9sbGluZy1zdGF0dXMuaHRtbApAQCAtMTYsMTggKzE2LDI3IEBACiAgIDwvc3R5
bGU+CiAKICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIH0KIAogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZs
b3dTY3JvbGxFbmFibGVkKHRydWUpOwogCisgICAgZnVuY3Rpb24gcmVwb3J0UmVzdWx0KCkKKyAg
ICB7CisgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubm9uRmFzdFNj
cm9sbGFibGVSZWN0cyhkb2N1bWVudCkubGVuZ3RoID8gIkZBSUwiIDogIlBBU1MiOworICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9CisKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKICAgICAgIGRvY3VtZW50LmJv
ZHkub2Zmc2V0SGVpZ2h0OwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQn
KS5zdHlsZS5oZWlnaHQgPSAnMTAwMHB4JzsKLSAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gd2lu
ZG93LmludGVybmFscy5ub25GYXN0U2Nyb2xsYWJsZVJlY3RzKGRvY3VtZW50KS5sZW5ndGggPyAi
RkFJTCIgOiAiUEFTUyI7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChyZXBvcnRSZXN1bHQsIDAp
OwogICAgIH0KIAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBm
YWxzZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>