<?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>121456</bug_id>
          
          <creation_ts>2013-09-16 15:08:00 -0700</creation_ts>
          <short_desc>Move the widow functions/members out of RenderBlock and into RenderBlockFlow.</short_desc>
          <delta_ts>2013-09-17 09:40:45 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929944</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-16 15:08:00 -0700</bug_when>
    <thetext>Move the widow functions/members out of RenderBlock and into RenderBlockFlow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929945</commentid>
    <comment_count>1</comment_count>
      <attachid>211835</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-16 15:08:52 -0700</bug_when>
    <thetext>Created attachment 211835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929948</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 15:11:28 -0700</bug_when>
    <thetext>Attachment 211835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderBlockFlow.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockFlow.h&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/RenderBlockFlow.cpp:1348:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/rendering/RenderBlockFlow.cpp:1349:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/rendering/RenderBlockFlow.cpp:1354:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/rendering/RenderBlockFlow.cpp:1358:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930263</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-17 09:40:45 -0700</bug_when>
    <thetext>Landed in r155964.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211835</attachid>
            <date>2013-09-16 15:08:52 -0700</date>
            <delta_ts>2013-09-16 15:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30077</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTkwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA5LTE2ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHRoZSBsaW5lIHdpZG93IGZ1
bmN0aW9ucyBvdXQgb2YgUmVuZGVyQmxvY2sgYW5kIGludG8gUmVuZGVyQmxvY2tGbG93LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrUmFyZURhdGE6OlJlbmRlckJs
b2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnNldEJyZWFrQXRMaW5lVG9Bdm9p
ZFdpZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y2xlYXJTaG91bGRC
cmVha0F0TGluZVRvQXZvaWRXaWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OnJlbGF5b3V0VG9Bdm9pZFdpZG93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9j
a0Zsb3dSYXJlRGF0YTo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpzaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVCcmVha1RvQXZvaWRXaWRvdyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmtUb0VuZExpbmVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5l
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisKIDIwMTMtMDktMTYgIEJl
bSBKb25lcy1CZXkgIDxiam9uZXNiZUBhZG9iZS5jb20+CiAKICAgICAgICAgTWFrZSBGbG9hdGlu
Z09iamVjdHMgb3duIGl0J3MgRmxvYXRpbmdPYmplY3QgaW5zdGFuY2VzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1NzgsMTcgKzE1NzgsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0ZvclBhZ2luYXRpb25M
b2dpCiAgICAgfQogfQogCi1ib29sIFJlbmRlckJsb2NrOjpyZWxheW91dFRvQXZvaWRXaWRvd3Mo
TGF5b3V0U3RhdGVNYWludGFpbmVyJiBzdGF0ZVB1c2hlcikKLXsKLSAgICBpZiAoIXNob3VsZEJy
ZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0
YXRlUHVzaGVyLnBvcCgpOwotICAgIHNldEV2ZXJIYWRMYXlvdXQodHJ1ZSk7Ci0gICAgbGF5b3V0
QmxvY2soZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRCbG9jayhib29sLCBMYXlvdXRVbml0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjIwMCwyMyArNjE4OSw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldFBhZ2VMb2dpY2Fs
T2Zmc2V0KEwKICAgICBtX3JhcmVEYXRhLT5tX3BhZ2VMb2dpY2FsT2Zmc2V0ID0gbG9naWNhbE9m
ZnNldDsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6c2V0QnJlYWtBdExpbmVUb0F2b2lkV2lkb3co
aW50IGxpbmVUb0JyZWFrKQotewotICAgIEFTU0VSVChsaW5lVG9CcmVhayk7Ci0gICAgaWYgKCFt
X3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJlbmRlckJsb2Nr
UmFyZURhdGEoKSk7Ci0gICAgbV9yYXJlRGF0YS0+bV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRX
aWRvdyA9IHRydWU7Ci0gICAgbV9yYXJlRGF0YS0+bV9saW5lQnJlYWtUb0F2b2lkV2lkb3cgPSBs
aW5lVG9CcmVhazsKLX0KLQotdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJTaG91bGRCcmVha0F0TGlu
ZVRvQXZvaWRXaWRvdygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9yYXJlRGF0YS0+bV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyA9
IGZhbHNlOwotICAgIG1fcmFyZURhdGEtPm1fbGluZUJyZWFrVG9Bdm9pZFdpZG93ID0gLTE7Ci19
Ci0KIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCkBAIC02NTAyLDg4ICs2NDc0LDYgQEAg
dm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaAogICAgICAgICBjb2xJbmZv
LT51cGRhdGVNaW5pbXVtQ29sdW1uSGVpZ2h0KG1pbkhlaWdodCk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgTGF5b3V0VW5pdCBjYWxjdWxhdGVNaW5pbXVtUGFnZUhlaWdodChSZW5kZXJTdHlsZSogcmVu
ZGVyU3R5bGUsIFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lLCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSkKLXsKLSAgICAvLyBXZSBtYXkgcmVxdWlyZSBhIGNlcnRhaW4g
bWluaW11bSBudW1iZXIgb2YgbGluZXMgcGVyIHBhZ2UgaW4gb3JkZXIgdG8gc2F0aXNmeQotICAg
IC8vIG9ycGhhbnMgYW5kIHdpZG93cywgYW5kIHRoYXQgbWF5IGFmZmVjdCB0aGUgbWluaW11bSBw
YWdlIGhlaWdodC4KLSAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSBtYXg8dW5zaWduZWQ+KHJlbmRl
clN0eWxlLT5oYXNBdXRvT3JwaGFucygpID8gMSA6IHJlbmRlclN0eWxlLT5vcnBoYW5zKCksIHJl
bmRlclN0eWxlLT5oYXNBdXRvV2lkb3dzKCkgPyAxIDogcmVuZGVyU3R5bGUtPndpZG93cygpKTsK
LSAgICBpZiAobGluZUNvdW50ID4gMSkgewotICAgICAgICBSb290SW5saW5lQm94KiBsaW5lID0g
bGFzdExpbmU7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBsaW5lQ291bnQgJiYg
bGluZS0+cHJldlJvb3RCb3goKTsgaSsrKQotICAgICAgICAgICAgbGluZSA9IGxpbmUtPnByZXZS
b290Qm94KCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFBhZ2luYXRpbmcgdXNpbmcgbGluZSBvdmVy
ZmxvdyBpc24ndCBhbGwgZmluZS4gU2VlIEZJWE1FIGluCi0gICAgICAgIC8vIGFkanVzdExpbmVQ
b3NpdGlvbkZvclBhZ2luYXRpb24oKSBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAgICBMYXlvdXRS
ZWN0IG92ZXJmbG93ID0gbGluZS0+bG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdChsaW5lLT5saW5l
VG9wKCksIGxpbmUtPmxpbmVCb3R0b20oKSk7Ci0gICAgICAgIGxpbmVUb3AgPSBtaW4obGluZS0+
bGluZVRvcFdpdGhMZWFkaW5nKCksIG92ZXJmbG93LnkoKSk7Ci0gICAgfQotICAgIHJldHVybiBs
aW5lQm90dG9tIC0gbGluZVRvcDsKLX0KLQotdm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0TGluZVBv
c2l0aW9uRm9yUGFnaW5hdGlvbihSb290SW5saW5lQm94KiBsaW5lQm94LCBMYXlvdXRVbml0JiBk
ZWx0YSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKLXsKLSAgICAvLyBGSVhNRTogRm9y
IG5vdyB3ZSBwYWdpbmF0ZSB1c2luZyBsaW5lIG92ZXJmbG93LiAgVGhpcyBlbnN1cmVzIHRoYXQg
bGluZXMgZG9uJ3Qgb3ZlcmxhcCBhdCBhbGwgd2hlbiB3ZQotICAgIC8vIHB1dCBhIHN0cnV0IGJl
dHdlZW4gdGhlbSBmb3IgcGFnaW5hdGlvbiBwdXJwb3Nlcy4gIEhvd2V2ZXIsIHRoaXMgcmVhbGx5
IGlzbid0IHRoZSBkZXNpcmVkIHJlbmRlcmluZywgc2luY2UKLSAgICAvLyB0aGUgbGluZSBvbiB0
aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2Ugd2lsbCBhcHBlYXIgdG9vIGZhciBkb3duIHJlbGF0aXZl
IHRvIHRoZSBzYW1lIGtpbmQgb2YgbGluZSBhdCB0aGUgdG9wCi0gICAgLy8gb2YgdGhlIGZpcnN0
IGNvbHVtbi4KLSAgICAvLwotICAgIC8vIFRoZSByZW5kZXJpbmcgd2Ugd291bGQgbGlrZSB0byBz
ZWUgaXMgb25lIHdoZXJlIHRoZSBsaW5lVG9wV2l0aExlYWRpbmcgaXMgYXQgdGhlIHRvcCBvZiB0
aGUgY29sdW1uLCBhbmQgYW55IGxpbmUgb3ZlcmZsb3cKLSAgICAvLyBzaW1wbHkgc3BpbGxzIG91
dCBhYm92ZSB0aGUgdG9wIG9mIHRoZSBjb2x1bW4uICBUaGlzIGVmZmVjdCB3b3VsZCBtYXRjaCB3
aGF0IGhhcHBlbnMgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgY29sdW1uLgotICAgIC8vIFdlIGNh
bid0IGFjaGlldmUgdGhpcyByZW5kZXJpbmcsIGhvd2V2ZXIsIHVudGlsIHdlIHN0b3AgY29sdW1u
cyBmcm9tIGNsaXBwaW5nIHRvIHRoZSBjb2x1bW4gYm91bmRzICh0aHVzIGFsbG93aW5nCi0gICAg
Ly8gZm9yIG92ZXJmbG93IHRvIG9jY3VyKSwgYW5kIHRoZW4gY2FjaGUgdmlzaWJsZSBvdmVyZmxv
dyBmb3IgZWFjaCBjb2x1bW4gcmVjdC4KLSAgICAvLwotICAgIC8vIEZ1cnRoZXJtb3JlLCB0aGUg
cGFpbnQgd2UgaGF2ZSB0byBkbyB3aGVuIGEgY29sdW1uIGhhcyBvdmVyZmxvdyBoYXMgdG8gYmUg
c3BlY2lhbC4gIFdlIG5lZWQgdG8gZXhjbHVkZQotICAgIC8vIGNvbnRlbnQgdGhhdCBwYWludHMg
aW4gYSBwcmV2aW91cyBjb2x1bW4gKGFuZCBjb250ZW50IHRoYXQgcGFpbnRzIGluIHRoZSBmb2xs
b3dpbmcgY29sdW1uKS4KLSAgICAvLwotICAgIC8vIEZvciBub3cgd2UnbGwgYXQgbGVhc3QgaG9u
b3IgdGhlIGxpbmVUb3BXaXRoTGVhZGluZyB3aGVuIHBhZ2luYXRpbmcgaWYgaXQgaXMgYWJvdmUg
dGhlIGxvZ2ljYWwgdG9wIG92ZXJmbG93LiBUaGlzIHdpbGwKLSAgICAvLyBhdCBsZWFzdCBtYWtl
IHBvc2l0aXZlIGxlYWRpbmcgd29yayBpbiB0eXBpY2FsIGNhc2VzLgotICAgIC8vCi0gICAgLy8g
RklYTUU6IEFub3RoZXIgcHJvYmxlbSB3aXRoIHNpbXBseSBtb3ZpbmcgbGluZXMgaXMgdGhhdCB0
aGUgYXZhaWxhYmxlIGxpbmUgd2lkdGggbWF5IGNoYW5nZSAoYmVjYXVzZSBvZiBmbG9hdHMpLgot
ICAgIC8vIFRlY2huaWNhbGx5IGlmIHRoZSBsb2NhdGlvbiB3ZSBtb3ZlIHRoZSBsaW5lIHRvIGhh
cyBhIGRpZmZlcmVudCBsaW5lIHdpZHRoIHRoYW4gb3VyIG9sZCBwb3NpdGlvbiwgdGhlbiB3ZSBu
ZWVkIHRvIGRpcnR5IHRoZQotICAgIC8vIGxpbmUgYW5kIGFsbCBmb2xsb3dpbmcgbGluZXMuCi0g
ICAgTGF5b3V0UmVjdCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBsaW5lQm94LT5sb2dpY2FsVmlz
dWFsT3ZlcmZsb3dSZWN0KGxpbmVCb3gtPmxpbmVUb3AoKSwgbGluZUJveC0+bGluZUJvdHRvbSgp
KTsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQgPSBtaW4obGluZUJveC0+bGluZVRvcFdp
dGhMZWFkaW5nKCksIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOwotICAgIExheW91dFVuaXQg
bG9naWNhbEJvdHRvbSA9IG1heChsaW5lQm94LT5saW5lQm90dG9tV2l0aExlYWRpbmcoKSwgbG9n
aWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7Ci0gICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0ID0g
bG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxPZmZzZXQ7Ci0gICAgdXBkYXRlTWluaW11bVBhZ2VIZWln
aHQobG9naWNhbE9mZnNldCwgY2FsY3VsYXRlTWluaW11bVBhZ2VIZWlnaHQoc3R5bGUoKSwgbGlu
ZUJveCwgbG9naWNhbE9mZnNldCwgbG9naWNhbEJvdHRvbSkpOwotICAgIGxvZ2ljYWxPZmZzZXQg
Kz0gZGVsdGE7Ci0gICAgbGluZUJveC0+c2V0UGFnaW5hdGlvblN0cnV0KDApOwotICAgIGxpbmVC
b3gtPnNldElzRmlyc3RBZnRlclBhZ2VCcmVhayhmYWxzZSk7Ci0gICAgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQp
OwotICAgIGJvb2wgaGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ID0gIWZsb3dUaHJlYWQgfHwg
Zmxvd1RocmVhZC0+cmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCgpOwotICAgIC8vIElm
IGxpbmVIZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHBhZ2VMb2dpY2FsSGVpZ2h0LCBidXQgbG9naWNh
bFZpc3VhbE92ZXJmbG93LmhlaWdodCgpIHN0aWxsIGZpdHMsIHdlIGFyZQotICAgIC8vIHN0aWxs
IGdvaW5nIHRvIGFkZCBhIHN0cnV0LCBzbyB0aGF0IHRoZSB2aXNpYmxlIG92ZXJmbG93IGZpdHMg
b24gYSBzaW5nbGUgcGFnZS4KLSAgICBpZiAoIXBhZ2VMb2dpY2FsSGVpZ2h0IHx8IChoYXNVbmlm
b3JtUGFnZUxvZ2ljYWxIZWlnaHQgJiYgbG9naWNhbFZpc3VhbE92ZXJmbG93LmhlaWdodCgpID4g
cGFnZUxvZ2ljYWxIZWlnaHQpCi0gICAgICAgIHx8ICFoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIExheW91dFVuaXQgcmVtYWluaW5nTG9naWNhbEhlaWdo
dCA9IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQsIEV4
Y2x1ZGVQYWdlQm91bmRhcnkpOwotCi0gICAgaW50IGxpbmVJbmRleCA9IGxpbmVDb3VudChsaW5l
Qm94KTsKLSAgICBpZiAocmVtYWluaW5nTG9naWNhbEhlaWdodCA8IGxpbmVIZWlnaHQgfHwgKHNo
b3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkgJiYgbGluZUJyZWFrVG9Bdm9pZFdpZG93KCkg
PT0gbGluZUluZGV4KSkgewotICAgICAgICBpZiAoc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lk
b3coKSAmJiBsaW5lQnJlYWtUb0F2b2lkV2lkb3coKSA9PSBsaW5lSW5kZXgpCi0gICAgICAgICAg
ICBjbGVhclNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCk7Ci0gICAgICAgIC8vIElmIHdl
IGhhdmUgYSBub24tdW5pZm9ybSBwYWdlIGhlaWdodCwgdGhlbiB3ZSBoYXZlIHRvIHNoaWZ0IGZ1
cnRoZXIgcG9zc2libHkuCi0gICAgICAgIGlmICghaGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0
ICYmICFwdXNoVG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhlaWdodChyZW1haW5pbmdMb2dp
Y2FsSGVpZ2h0LCBsb2dpY2FsT2Zmc2V0LCBsaW5lSGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKGxpbmVIZWlnaHQgPiBwYWdlTG9naWNhbEhlaWdodCkgewotICAgICAg
ICAgICAgLy8gU3BsaXQgdGhlIHRvcCBtYXJnaW4gaW4gb3JkZXIgdG8gYXZvaWQgc3BsaXR0aW5n
IHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGxpbmUuCi0gICAgICAgICAgICByZW1haW5pbmdMb2dp
Y2FsSGVpZ2h0IC09IG1pbihsaW5lSGVpZ2h0IC0gcGFnZUxvZ2ljYWxIZWlnaHQsIG1heDxMYXlv
dXRVbml0PigwLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpIC0gbGluZUJveC0+bGluZVRvcFdp
dGhMZWFkaW5nKCkpKTsKLSAgICAgICAgfQotICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNh
bEhlaWdodCA9IGxpbmVIZWlnaHQgKyBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbE9mZnNldCk7
Ci0gICAgICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHRBdE5ld09mZnNldCA9IGhhc1Vu
aWZvcm1QYWdlTG9naWNhbEhlaWdodCA/IHBhZ2VMb2dpY2FsSGVpZ2h0IDogcGFnZUxvZ2ljYWxI
ZWlnaHRGb3JPZmZzZXQobG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOwot
ICAgICAgICBzZXRQYWdlQnJlYWsobG9naWNhbE9mZnNldCwgbGluZUhlaWdodCAtIHJlbWFpbmlu
Z0xvZ2ljYWxIZWlnaHQpOwotICAgICAgICBpZiAoKChsaW5lQm94ID09IGZpcnN0Um9vdEJveCgp
ICYmIHRvdGFsTG9naWNhbEhlaWdodCA8IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQpIHx8
ICghc3R5bGUoKS0+aGFzQXV0b09ycGhhbnMoKSAmJiBzdHlsZSgpLT5vcnBoYW5zKCkgPj0gbGlu
ZUluZGV4KSkKLSAgICAgICAgICAgICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhaXNU
YWJsZUNlbGwoKSkKLSAgICAgICAgICAgIHNldFBhZ2luYXRpb25TdHJ1dChyZW1haW5pbmdMb2dp
Y2FsSGVpZ2h0ICsgbWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxPZmZzZXQpKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBkZWx0YSArPSByZW1haW5pbmdMb2dpY2FsSGVpZ2h0OwotICAg
ICAgICAgICAgbGluZUJveC0+c2V0UGFnaW5hdGlvblN0cnV0KHJlbWFpbmluZ0xvZ2ljYWxIZWln
aHQpOwotICAgICAgICAgICAgbGluZUJveC0+c2V0SXNGaXJzdEFmdGVyUGFnZUJyZWFrKHRydWUp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0ID09IHBh
Z2VMb2dpY2FsSGVpZ2h0ICYmIGxpbmVCb3ggIT0gZmlyc3RSb290Qm94KCkpCi0gICAgICAgIGxp
bmVCb3gtPnNldElzRmlyc3RBZnRlclBhZ2VCcmVhayh0cnVlKTsKLX0KLQogYm9vbCBSZW5kZXJC
bG9jazo6bGluZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9v
dEJveCwgTGF5b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQp
IGNvbnN0CiB7CiAgICAgaWYgKCFmbG93VGhyZWFkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTEgKzMzNSw2IEBA
IHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1dCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3BhZ2luYXRpb25TdHJ1dCA6IExheW91dFVuaXQo
KTsgfQogICAgIHZvaWQgc2V0UGFnaW5hdGlvblN0cnV0KExheW91dFVuaXQpOwogCi0gICAgYm9v
bCBzaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURh
dGEgJiYgbV9yYXJlRGF0YS0+bV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdzsgfQotICAg
IHZvaWQgY2xlYXJTaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdygpIGNvbnN0OwotICAgIGlu
dCBsaW5lQnJlYWtUb0F2b2lkV2lkb3coKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9y
YXJlRGF0YS0+bV9saW5lQnJlYWtUb0F2b2lkV2lkb3cgOiAtMTsgfQotICAgIHZvaWQgc2V0QnJl
YWtBdExpbmVUb0F2b2lkV2lkb3coaW50KTsKLQogICAgIC8vIFRoZSBwYWdlIGxvZ2ljYWwgb2Zm
c2V0IGlzIHRoZSBvYmplY3QncyBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIGluIHRo
ZSBwYWdlIHByb2dyZXNzaW9uCiAgICAgLy8gZGlyZWN0aW9uIChzbyBhbiB4LW9mZnNldCBpbiB2
ZXJ0aWNhbCB0ZXh0IGFuZCBhIHktb2Zmc2V0IGZvciBob3Jpem9udGFsIHRleHQpLgogICAgIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8g
bV9yYXJlRGF0YS0+bV9wYWdlTG9naWNhbE9mZnNldCA6IExheW91dFVuaXQoKTsgfQpAQCAtNjAx
LDggKzU5Niw2IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhlIGxlZ2Vu
ZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgLypyZWxh
eW91dENoaWxkcmVuKi8pIHsgcmV0dXJuIDA7IH0KIAotICAgIGJvb2wgcmVsYXlvdXRUb0F2b2lk
V2lkb3dzKExheW91dFN0YXRlTWFpbnRhaW5lciYpOwotCiAgICAgdm9pZCBjcmVhdGVGaXJzdExl
dHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyT2JqZWN0
KiBjdXJyZW50Q2hpbGQpOwogICAgIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5kZXJP
YmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWlu
ZXIpOwogCkBAIC04NjUsNyArODU4LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlTWlu
aW11bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KTsK
IAogICAgIExheW91dFVuaXQgYWRqdXN0Rm9yVW5zcGxpdHRhYmxlQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBib29sIGluY2x1ZGVNYXJnaW5zID0gZmFs
c2UpOyAvLyBJZiB0aGUgY2hpbGQgaXMgdW5zcGxpdHRhYmxlIGFuZCBjYW4ndCBmaXQgb24gdGhl
IGN1cnJlbnQgcGFnZSwgcmV0dXJuIHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZS9jb2x1bW4uCi0g
ICAgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKFJvb3RJbmxpbmVCb3gqLCBM
YXlvdXRVbml0JiBkZWx0YU9mZnNldCwgUmVuZGVyRmxvd1RocmVhZCopOyAvLyBDb21wdXRlcyBh
IGRlbHRhT2Zmc2V0IHZhbHVlIHRoYXQgcHV0IGEgbGluZSBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0
IHBhZ2UgaWYgaXQgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZS4KIAogICAgIC8vIEFk
anVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhlIGxvY2FsIGNvb3JkcyBvZiB0aGlzIHJl
bmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYpIGNvbnN0OwpA
QCAtOTAzLDggKzg5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbV9wYWdpbmF0aW9uU3Ry
dXQoMCkKICAgICAgICAgICAgICwgbV9wYWdlTG9naWNhbE9mZnNldCgwKQogICAgICAgICAgICAg
LCBtX2xpbmVHcmlkQm94KDApCi0gICAgICAgICAgICAsIG1fbGluZUJyZWFrVG9Bdm9pZFdpZG93
KC0xKQotICAgICAgICAgICAgLCBtX3Nob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGZhbHNl
KQogICAgICAgICB7IAogICAgICAgICB9CiAKQEAgLTkxMywxMSArOTAzLDkgQEAgcHVibGljOgog
ICAgICAgICAKICAgICAgICAgUm9vdElubGluZUJveCogbV9saW5lR3JpZEJveDsKIAotICAgICAg
ICBpbnQgbV9saW5lQnJlYWtUb0F2b2lkV2lkb3c7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAg
ICAgICAgIE93blB0cjxTaGFwZUluc2lkZUluZm8+IG1fc2hhcGVJbnNpZGVJbmZvOwogI2VuZGlm
Ci0gICAgICAgIGJvb2wgbV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyA6IDE7CiAgICAg
IH07CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDkgKzQ3Nyw5
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxkKFIKICAgICBzZXRMb2dp
Y2FsVG9wRm9yQ2hpbGQoY2hpbGQsIGxvZ2ljYWxUb3BFc3RpbWF0ZSwgQXBwbHlMYXlvdXREZWx0
YSk7CiAgICAgZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNoaWxkKTsKIAotICAgIFJl
bmRlckJsb2NrKiBjaGlsZFJlbmRlckJsb2NrID0gY2hpbGQtPmlzUmVuZGVyQmxvY2soKSA/IHRv
UmVuZGVyQmxvY2soY2hpbGQpIDogMDsKKyAgICBSZW5kZXJCbG9ja0Zsb3cqIGNoaWxkQmxvY2tG
bG93ID0gY2hpbGQtPmlzUmVuZGVyQmxvY2tGbG93KCkgPyB0b1JlbmRlckJsb2NrRmxvdyhjaGls
ZCkgOiAwOwogICAgIGJvb2wgbWFya0Rlc2NlbmRhbnRzV2l0aEZsb2F0cyA9IGZhbHNlOwotICAg
IGlmIChsb2dpY2FsVG9wRXN0aW1hdGUgIT0gb2xkTG9naWNhbFRvcCAmJiAhY2hpbGQtPmF2b2lk
c0Zsb2F0cygpICYmIGNoaWxkUmVuZGVyQmxvY2sgJiYgY2hpbGRSZW5kZXJCbG9jay0+Y29udGFp
bnNGbG9hdHMoKSkKKyAgICBpZiAobG9naWNhbFRvcEVzdGltYXRlICE9IG9sZExvZ2ljYWxUb3Ag
JiYgIWNoaWxkLT5hdm9pZHNGbG9hdHMoKSAmJiBjaGlsZEJsb2NrRmxvdyAmJiBjaGlsZEJsb2Nr
Rmxvdy0+Y29udGFpbnNGbG9hdHMoKSkKICAgICAgICAgbWFya0Rlc2NlbmRhbnRzV2l0aEZsb2F0
cyA9IHRydWU7CiAjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICBlbHNlIGlmIChVTkxJ
S0VMWShsb2dpY2FsVG9wRXN0aW1hdGUubWlnaHRCZVNhdHVyYXRlZCgpKSkKQEAgLTQ5NywxMSAr
NDk3LDExIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxkKFIKICAgICAg
ICAgICAgIG1hcmtEZXNjZW5kYW50c1dpdGhGbG9hdHMgPSB0cnVlOwogICAgIH0KIAotICAgIGlm
IChjaGlsZFJlbmRlckJsb2NrKSB7CisgICAgaWYgKGNoaWxkQmxvY2tGbG93KSB7CiAgICAgICAg
IGlmIChtYXJrRGVzY2VuZGFudHNXaXRoRmxvYXRzKQotICAgICAgICAgICAgY2hpbGRSZW5kZXJC
bG9jay0+bWFya0FsbERlc2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91dCgpOworICAgICAgICAg
ICAgY2hpbGRCbG9ja0Zsb3ctPm1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQo
KTsKICAgICAgICAgaWYgKCFjaGlsZC0+aXNXcml0aW5nTW9kZVJvb3QoKSkKLSAgICAgICAgICAg
IHByZXZpb3VzRmxvYXRMb2dpY2FsQm90dG9tID0gbWF4KHByZXZpb3VzRmxvYXRMb2dpY2FsQm90
dG9tLCBvbGRMb2dpY2FsVG9wICsgY2hpbGRSZW5kZXJCbG9jay0+bG93ZXN0RmxvYXRMb2dpY2Fs
Qm90dG9tKCkpOworICAgICAgICAgICAgcHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20gPSBtYXgo
cHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20sIG9sZExvZ2ljYWxUb3AgKyBjaGlsZEJsb2NrRmxv
dy0+bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkpOwogICAgIH0KIAogICAgIGlmICghY2hpbGQt
Pm5lZWRzTGF5b3V0KCkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmxheW91dEJsb2NrQ2hpbGQoUgogICAgIC8vIE5vdyB3ZSBoYXZlIGEgZmluYWwgdG9wIHBvc2l0
aW9uLiBTZWUgaWYgaXQgcmVhbGx5IGRvZXMgZW5kIHVwIGJlaW5nIGRpZmZlcmVudCBmcm9tIG91
ciBlc3RpbWF0ZS4KICAgICAvLyBjbGVhckZsb2F0c0lmTmVlZGVkIGNhbiBhbHNvIG1hcmsgdGhl
IGNoaWxkIGFzIG5lZWRpbmcgYSBsYXlvdXQgZXZlbiB0aG91Z2ggd2UgZGlkbid0IG1vdmUuIFRo
aXMgaGFwcGVucwogICAgIC8vIHdoZW4gY29sbGFwc2VNYXJnaW5zIGR5bmFtaWNhbGx5IGFkZHMg
b3ZlcmhhbmdpbmcgZmxvYXRzIGJlY2F1c2Ugb2YgYSBjaGlsZCB3aXRoIG5lZ2F0aXZlIG1hcmdp
bnMuCi0gICAgaWYgKGxvZ2ljYWxUb3BBZnRlckNsZWFyICE9IGxvZ2ljYWxUb3BFc3RpbWF0ZSB8
fCBjaGlsZC0+bmVlZHNMYXlvdXQoKSB8fCAocGFnaW5hdGVkICYmIGNoaWxkUmVuZGVyQmxvY2sg
JiYgY2hpbGRSZW5kZXJCbG9jay0+c2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSkpIHsK
KyAgICBpZiAobG9naWNhbFRvcEFmdGVyQ2xlYXIgIT0gbG9naWNhbFRvcEVzdGltYXRlIHx8IGNo
aWxkLT5uZWVkc0xheW91dCgpIHx8IChwYWdpbmF0ZWQgJiYgY2hpbGRCbG9ja0Zsb3cgJiYgY2hp
bGRCbG9ja0Zsb3ctPnNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+c2hyaW5rVG9Bdm9pZEZsb2F0cygpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
Y2hpbGQncyB3aWR0aCBkZXBlbmRzIG9uIHRoZSBsaW5lIHdpZHRoLgogICAgICAgICAgICAgLy8g
V2hlbiB0aGUgY2hpbGQgc2hpZnRzIHRvIGNsZWFyIGFuIGl0ZW0sIGl0cyB3aWR0aCBjYW4KQEAg
LTU0MSw5ICs1NDEsOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tDaGlsZChS
CiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoY2hpbGRSZW5kZXJCbG9jaykg
ewotICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXZvaWRzRmxvYXRzKCkgJiYgY2hpbGRSZW5kZXJC
bG9jay0+Y29udGFpbnNGbG9hdHMoKSkKLSAgICAgICAgICAgICAgICBjaGlsZFJlbmRlckJsb2Nr
LT5tYXJrQWxsRGVzY2VuZGFudHNXaXRoRmxvYXRzRm9yTGF5b3V0KCk7CisgICAgICAgIGlmIChj
aGlsZEJsb2NrRmxvdykgeworICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXZvaWRzRmxvYXRzKCkg
JiYgY2hpbGRCbG9ja0Zsb3ctPmNvbnRhaW5zRmxvYXRzKCkpCisgICAgICAgICAgICAgICAgY2hp
bGRCbG9ja0Zsb3ctPm1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoKTsKICAg
ICAgICAgICAgIGlmICghY2hpbGQtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICAgICAgY2hp
bGQtPm1hcmtGb3JQYWdpbmF0aW9uUmVsYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICB9CkBAIC01
NjcsNyArNTY3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQoUgog
CiAgICAgTGF5b3V0U2l6ZSBjaGlsZE9mZnNldCA9IGNoaWxkLT5sb2NhdGlvbigpIC0gb2xkUmVj
dC5sb2NhdGlvbigpOwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHJlbGF5b3V0U2hhcGVE
ZXNjZW5kYW50SWZNb3ZlZChjaGlsZFJlbmRlckJsb2NrLCBjaGlsZE9mZnNldCk7CisgICAgcmVs
YXlvdXRTaGFwZURlc2NlbmRhbnRJZk1vdmVkKGNoaWxkLT5pc1JlbmRlckJsb2NrKCkgPyB0b1Jl
bmRlckJsb2NrKGNoaWxkKSA6IDAsIGNoaWxkT2Zmc2V0KTsKICNlbmRpZgogCiAgICAgLy8gVXBk
YXRlIG91ciBoZWlnaHQgbm93IHRoYXQgdGhlIGNoaWxkIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGUg
Y29ycmVjdCBwb3NpdGlvbi4KQEAgLTU3OCw3ICs1NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0QmxvY2tDaGlsZChSCiAgICAgfQogICAgIC8vIElmIHRoZSBjaGlsZCBoYXMgb3Zl
cmhhbmdpbmcgZmxvYXRzIHRoYXQgaW50cnVkZSBpbnRvIGZvbGxvd2luZyBzaWJsaW5ncyAob3Ig
cG9zc2libHkgb3V0CiAgICAgLy8gb2YgdGhpcyBibG9jayksIHRoZW4gdGhlIHBhcmVudCBnZXRz
IG5vdGlmaWVkIG9mIHRoZSBmbG9hdHMgbm93LgotICAgIGlmIChjaGlsZFJlbmRlckJsb2NrICYm
IGNoaWxkUmVuZGVyQmxvY2stPmNvbnRhaW5zRmxvYXRzKCkpCisgICAgaWYgKGNoaWxkQmxvY2tG
bG93ICYmIGNoaWxkQmxvY2tGbG93LT5jb250YWluc0Zsb2F0cygpKQogICAgICAgICBtYXhGbG9h
dExvZ2ljYWxCb3R0b20gPSBtYXgobWF4RmxvYXRMb2dpY2FsQm90dG9tLCBhZGRPdmVyaGFuZ2lu
Z0Zsb2F0cyh0b1JlbmRlckJsb2NrKGNoaWxkKSwgIWNoaWxkTmVlZGVkTGF5b3V0KSk7CiAKICAg
ICBpZiAoY2hpbGRPZmZzZXQud2lkdGgoKSB8fCBjaGlsZE9mZnNldC5oZWlnaHQoKSkgewpAQCAt
MTMzMyw0ICsxMzMzLDExNCBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Qmxv
Y2tDCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBMYXlvdXRVbml0IGNh
bGN1bGF0ZU1pbmltdW1QYWdlSGVpZ2h0KFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSwgUm9vdElu
bGluZUJveCogbGFzdExpbmUsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tKQoreworICAgIC8vIFdlIG1heSByZXF1aXJlIGEgY2VydGFpbiBtaW5pbXVtIG51bWJlciBv
ZiBsaW5lcyBwZXIgcGFnZSBpbiBvcmRlciB0byBzYXRpc2Z5CisgICAgLy8gb3JwaGFucyBhbmQg
d2lkb3dzLCBhbmQgdGhhdCBtYXkgYWZmZWN0IHRoZSBtaW5pbXVtIHBhZ2UgaGVpZ2h0LgorICAg
IHVuc2lnbmVkIGxpbmVDb3VudCA9IG1heDx1bnNpZ25lZD4ocmVuZGVyU3R5bGUtPmhhc0F1dG9P
cnBoYW5zKCkgPyAxIDogcmVuZGVyU3R5bGUtPm9ycGhhbnMoKSwgcmVuZGVyU3R5bGUtPmhhc0F1
dG9XaWRvd3MoKSA/IDEgOiByZW5kZXJTdHlsZS0+d2lkb3dzKCkpOworICAgIGlmIChsaW5lQ291
bnQgPiAxKSB7CisgICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBsYXN0TGluZTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxpbmVDb3VudCAmJiBsaW5lLT5wcmV2Um9vdEJv
eCgpOyBpKyspCisgICAgICAgICAgICBsaW5lID0gbGluZS0+cHJldlJvb3RCb3goKTsKKworICAg
ICAgICAvLyBGSVhNRTogUGFnaW5hdGluZyB1c2luZyBsaW5lIG92ZXJmbG93IGlzbid0IGFsbCBm
aW5lLiBTZWUgRklYTUUgaW4KKyAgICAgICAgLy8gYWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5h
dGlvbigpIGZvciBtb3JlIGRldGFpbHMuCisgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3cgPSBs
aW5lLT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0KGxpbmUtPmxpbmVUb3AoKSwgbGluZS0+bGlu
ZUJvdHRvbSgpKTsKKyAgICAgICAgbGluZVRvcCA9IG1pbihsaW5lLT5saW5lVG9wV2l0aExlYWRp
bmcoKSwgb3ZlcmZsb3cueSgpKTsKKyAgICB9CisgICAgcmV0dXJuIGxpbmVCb3R0b20gLSBsaW5l
VG9wOworfQorCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFn
aW5hdGlvbihSb290SW5saW5lQm94KiBsaW5lQm94LCBMYXlvdXRVbml0JiBkZWx0YSwgUmVuZGVy
Rmxvd1RocmVhZCogZmxvd1RocmVhZCkKK3sKKyAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBwYWdp
bmF0ZSB1c2luZyBsaW5lIG92ZXJmbG93LiAgVGhpcyBlbnN1cmVzIHRoYXQgbGluZXMgZG9uJ3Qg
b3ZlcmxhcCBhdCBhbGwgd2hlbiB3ZQorICAgIC8vIHB1dCBhIHN0cnV0IGJldHdlZW4gdGhlbSBm
b3IgcGFnaW5hdGlvbiBwdXJwb3Nlcy4gIEhvd2V2ZXIsIHRoaXMgcmVhbGx5IGlzbid0IHRoZSBk
ZXNpcmVkIHJlbmRlcmluZywgc2luY2UKKyAgICAvLyB0aGUgbGluZSBvbiB0aGUgdG9wIG9mIHRo
ZSBuZXh0IHBhZ2Ugd2lsbCBhcHBlYXIgdG9vIGZhciBkb3duIHJlbGF0aXZlIHRvIHRoZSBzYW1l
IGtpbmQgb2YgbGluZSBhdCB0aGUgdG9wCisgICAgLy8gb2YgdGhlIGZpcnN0IGNvbHVtbi4KKyAg
ICAvLworICAgIC8vIFRoZSByZW5kZXJpbmcgd2Ugd291bGQgbGlrZSB0byBzZWUgaXMgb25lIHdo
ZXJlIHRoZSBsaW5lVG9wV2l0aExlYWRpbmcgaXMgYXQgdGhlIHRvcCBvZiB0aGUgY29sdW1uLCBh
bmQgYW55IGxpbmUgb3ZlcmZsb3cKKyAgICAvLyBzaW1wbHkgc3BpbGxzIG91dCBhYm92ZSB0aGUg
dG9wIG9mIHRoZSBjb2x1bW4uICBUaGlzIGVmZmVjdCB3b3VsZCBtYXRjaCB3aGF0IGhhcHBlbnMg
YXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgY29sdW1uLgorICAgIC8vIFdlIGNhbid0IGFjaGlldmUg
dGhpcyByZW5kZXJpbmcsIGhvd2V2ZXIsIHVudGlsIHdlIHN0b3AgY29sdW1ucyBmcm9tIGNsaXBw
aW5nIHRvIHRoZSBjb2x1bW4gYm91bmRzICh0aHVzIGFsbG93aW5nCisgICAgLy8gZm9yIG92ZXJm
bG93IHRvIG9jY3VyKSwgYW5kIHRoZW4gY2FjaGUgdmlzaWJsZSBvdmVyZmxvdyBmb3IgZWFjaCBj
b2x1bW4gcmVjdC4KKyAgICAvLworICAgIC8vIEZ1cnRoZXJtb3JlLCB0aGUgcGFpbnQgd2UgaGF2
ZSB0byBkbyB3aGVuIGEgY29sdW1uIGhhcyBvdmVyZmxvdyBoYXMgdG8gYmUgc3BlY2lhbC4gIFdl
IG5lZWQgdG8gZXhjbHVkZQorICAgIC8vIGNvbnRlbnQgdGhhdCBwYWludHMgaW4gYSBwcmV2aW91
cyBjb2x1bW4gKGFuZCBjb250ZW50IHRoYXQgcGFpbnRzIGluIHRoZSBmb2xsb3dpbmcgY29sdW1u
KS4KKyAgICAvLworICAgIC8vIEZvciBub3cgd2UnbGwgYXQgbGVhc3QgaG9ub3IgdGhlIGxpbmVU
b3BXaXRoTGVhZGluZyB3aGVuIHBhZ2luYXRpbmcgaWYgaXQgaXMgYWJvdmUgdGhlIGxvZ2ljYWwg
dG9wIG92ZXJmbG93LiBUaGlzIHdpbGwKKyAgICAvLyBhdCBsZWFzdCBtYWtlIHBvc2l0aXZlIGxl
YWRpbmcgd29yayBpbiB0eXBpY2FsIGNhc2VzLgorICAgIC8vCisgICAgLy8gRklYTUU6IEFub3Ro
ZXIgcHJvYmxlbSB3aXRoIHNpbXBseSBtb3ZpbmcgbGluZXMgaXMgdGhhdCB0aGUgYXZhaWxhYmxl
IGxpbmUgd2lkdGggbWF5IGNoYW5nZSAoYmVjYXVzZSBvZiBmbG9hdHMpLgorICAgIC8vIFRlY2hu
aWNhbGx5IGlmIHRoZSBsb2NhdGlvbiB3ZSBtb3ZlIHRoZSBsaW5lIHRvIGhhcyBhIGRpZmZlcmVu
dCBsaW5lIHdpZHRoIHRoYW4gb3VyIG9sZCBwb3NpdGlvbiwgdGhlbiB3ZSBuZWVkIHRvIGRpcnR5
IHRoZQorICAgIC8vIGxpbmUgYW5kIGFsbCBmb2xsb3dpbmcgbGluZXMuCisgICAgTGF5b3V0UmVj
dCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBsaW5lQm94LT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dS
ZWN0KGxpbmVCb3gtPmxpbmVUb3AoKSwgbGluZUJveC0+bGluZUJvdHRvbSgpKTsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxPZmZzZXQgPSBtaW4obGluZUJveC0+bGluZVRvcFdpdGhMZWFkaW5nKCks
IGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRv
bSA9IG1heChsaW5lQm94LT5saW5lQm90dG9tV2l0aExlYWRpbmcoKSwgbG9naWNhbFZpc3VhbE92
ZXJmbG93Lm1heFkoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0ID0gbG9naWNhbEJvdHRv
bSAtIGxvZ2ljYWxPZmZzZXQ7CisgICAgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQobG9naWNhbE9m
ZnNldCwgY2FsY3VsYXRlTWluaW11bVBhZ2VIZWlnaHQoc3R5bGUoKSwgbGluZUJveCwgbG9naWNh
bE9mZnNldCwgbG9naWNhbEJvdHRvbSkpOworICAgIGxvZ2ljYWxPZmZzZXQgKz0gZGVsdGE7Cisg
ICAgbGluZUJveC0+c2V0UGFnaW5hdGlvblN0cnV0KDApOworICAgIGxpbmVCb3gtPnNldElzRmly
c3RBZnRlclBhZ2VCcmVhayhmYWxzZSk7CisgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQpOworICAgIGJvb2wg
aGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ID0gIWZsb3dUaHJlYWQgfHwgZmxvd1RocmVhZC0+
cmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCgpOworICAgIC8vIElmIGxpbmVIZWlnaHQg
aXMgZ3JlYXRlciB0aGFuIHBhZ2VMb2dpY2FsSGVpZ2h0LCBidXQgbG9naWNhbFZpc3VhbE92ZXJm
bG93LmhlaWdodCgpIHN0aWxsIGZpdHMsIHdlIGFyZQorICAgIC8vIHN0aWxsIGdvaW5nIHRvIGFk
ZCBhIHN0cnV0LCBzbyB0aGF0IHRoZSB2aXNpYmxlIG92ZXJmbG93IGZpdHMgb24gYSBzaW5nbGUg
cGFnZS4KKyAgICBpZiAoIXBhZ2VMb2dpY2FsSGVpZ2h0IHx8IChoYXNVbmlmb3JtUGFnZUxvZ2lj
YWxIZWlnaHQgJiYgbG9naWNhbFZpc3VhbE92ZXJmbG93LmhlaWdodCgpID4gcGFnZUxvZ2ljYWxI
ZWlnaHQpCisgICAgICAgIHx8ICFoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0KSkKKyAgICAgICAg
cmV0dXJuOworICAgIExheW91dFVuaXQgcmVtYWluaW5nTG9naWNhbEhlaWdodCA9IHBhZ2VSZW1h
aW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQsIEV4Y2x1ZGVQYWdlQm91
bmRhcnkpOworCisgICAgaW50IGxpbmVJbmRleCA9IGxpbmVDb3VudChsaW5lQm94KTsKKyAgICBp
ZiAocmVtYWluaW5nTG9naWNhbEhlaWdodCA8IGxpbmVIZWlnaHQgfHwgKHNob3VsZEJyZWFrQXRM
aW5lVG9Bdm9pZFdpZG93KCkgJiYgbGluZUJyZWFrVG9Bdm9pZFdpZG93KCkgPT0gbGluZUluZGV4
KSkgeworICAgICAgICBpZiAoc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSAmJiBsaW5l
QnJlYWtUb0F2b2lkV2lkb3coKSA9PSBsaW5lSW5kZXgpCisgICAgICAgICAgICBjbGVhclNob3Vs
ZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCk7CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBub24t
dW5pZm9ybSBwYWdlIGhlaWdodCwgdGhlbiB3ZSBoYXZlIHRvIHNoaWZ0IGZ1cnRoZXIgcG9zc2li
bHkuCisgICAgICAgIGlmICghaGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ICYmICFwdXNoVG9O
ZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhlaWdodChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0LCBs
b2dpY2FsT2Zmc2V0LCBsaW5lSGVpZ2h0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKGxpbmVIZWlnaHQgPiBwYWdlTG9naWNhbEhlaWdodCkgeworICAgICAgICAgICAgLy8gU3Bs
aXQgdGhlIHRvcCBtYXJnaW4gaW4gb3JkZXIgdG8gYXZvaWQgc3BsaXR0aW5nIHRoZSB2aXNpYmxl
IHBhcnQgb2YgdGhlIGxpbmUuCisgICAgICAgICAgICByZW1haW5pbmdMb2dpY2FsSGVpZ2h0IC09
IG1pbihsaW5lSGVpZ2h0IC0gcGFnZUxvZ2ljYWxIZWlnaHQsIG1heDxMYXlvdXRVbml0PigwLCBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpIC0gbGluZUJveC0+bGluZVRvcFdpdGhMZWFkaW5nKCkp
KTsKKyAgICAgICAgfQorICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbEhlaWdodCA9IGxp
bmVIZWlnaHQgKyBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbE9mZnNldCk7CisgICAgICAgIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHRBdE5ld09mZnNldCA9IGhhc1VuaWZvcm1QYWdlTG9n
aWNhbEhlaWdodCA/IHBhZ2VMb2dpY2FsSGVpZ2h0IDogcGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZz
ZXQobG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOworICAgICAgICBzZXRQ
YWdlQnJlYWsobG9naWNhbE9mZnNldCwgbGluZUhlaWdodCAtIHJlbWFpbmluZ0xvZ2ljYWxIZWln
aHQpOworICAgICAgICBpZiAoKChsaW5lQm94ID09IGZpcnN0Um9vdEJveCgpICYmIHRvdGFsTG9n
aWNhbEhlaWdodCA8IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQpIHx8ICghc3R5bGUoKS0+
aGFzQXV0b09ycGhhbnMoKSAmJiBzdHlsZSgpLT5vcnBoYW5zKCkgPj0gbGluZUluZGV4KSkKKyAg
ICAgICAgICAgICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhaXNUYWJsZUNlbGwoKSkK
KyAgICAgICAgICAgIHNldFBhZ2luYXRpb25TdHJ1dChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0ICsg
bWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxPZmZzZXQpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBkZWx0YSArPSByZW1haW5pbmdMb2dpY2FsSGVpZ2h0OworICAgICAgICAgICAgbGlu
ZUJveC0+c2V0UGFnaW5hdGlvblN0cnV0KHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOworICAgICAg
ICAgICAgbGluZUJveC0+c2V0SXNGaXJzdEFmdGVyUGFnZUJyZWFrKHRydWUpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0ID09IHBhZ2VMb2dpY2FsSGVp
Z2h0ICYmIGxpbmVCb3ggIT0gZmlyc3RSb290Qm94KCkpCisgICAgICAgIGxpbmVCb3gtPnNldElz
Rmlyc3RBZnRlclBhZ2VCcmVhayh0cnVlKTsKK30KKwordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNl
dEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGludCBsaW5lVG9CcmVhaykKK3sKKyAgICBBU1NFUlQo
bGluZVRvQnJlYWspOworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSh0aGlzKSk7CisgICAgbV9yYXJl
RGF0YS0+bV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyA9IHRydWU7CisgICAgbV9yYXJl
RGF0YS0+bV9saW5lQnJlYWtUb0F2b2lkV2lkb3cgPSBsaW5lVG9CcmVhazsKK30KKwordm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSBjb25z
dAoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmFyZURh
dGEtPm1fc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3cgPSBmYWxzZTsKKyAgICBtX3JhcmVE
YXRhLT5tX2xpbmVCcmVha1RvQXZvaWRXaWRvdyA9IC0xOworfQorCitib29sIFJlbmRlckJsb2Nr
Rmxvdzo6cmVsYXlvdXRUb0F2b2lkV2lkb3dzKExheW91dFN0YXRlTWFpbnRhaW5lciYgc3RhdGVQ
dXNoZXIpCit7CisgICAgaWYgKCFzaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsKKyAgICBzZXRFdmVy
SGFkTGF5b3V0KHRydWUpOworICAgIGxheW91dEJsb2NrKGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4
ICs4NiwxMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBSZW5kZXJCbG9ja0Zsb3dS
YXJlRGF0YShjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGJsb2NrKQogICAgICAgICAgICAgOiBtX21h
cmdpbnMocG9zaXRpdmVNYXJnaW5CZWZvcmVEZWZhdWx0KGJsb2NrKSwgbmVnYXRpdmVNYXJnaW5C
ZWZvcmVEZWZhdWx0KGJsb2NrKSwgcG9zaXRpdmVNYXJnaW5BZnRlckRlZmF1bHQoYmxvY2spLCBu
ZWdhdGl2ZU1hcmdpbkFmdGVyRGVmYXVsdChibG9jaykpCisgICAgICAgICAgICAsIG1fbGluZUJy
ZWFrVG9Bdm9pZFdpZG93KC0xKQogICAgICAgICAgICAgLCBtX2Rpc2NhcmRNYXJnaW5CZWZvcmUo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fZGlzY2FyZE1hcmdpbkFmdGVyKGZhbHNlKQorICAgICAg
ICAgICAgLCBtX3Nob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGZhbHNlKQogICAgICAgICB7
IAogICAgICAgICB9CiAKQEAgLTEwOSw4ICsxMTEsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBNYXJnaW5WYWx1ZXMgbV9tYXJnaW5zOworICAgICAgICBpbnQgbV9s
aW5lQnJlYWtUb0F2b2lkV2lkb3c7CiAgICAgICAgIGJvb2wgbV9kaXNjYXJkTWFyZ2luQmVmb3Jl
IDogMTsKICAgICAgICAgYm9vbCBtX2Rpc2NhcmRNYXJnaW5BZnRlciA6IDE7CisgICAgICAgIGJv
b2wgbV9zaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyA6IDE7CiAgICAgfTsKIAogICAgIGNs
YXNzIE1hcmdpbkluZm8gewpAQCAtMjAzLDYgKzIwNywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBo
YW5kbGVBZnRlclNpZGVPZkJsb2NrKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGJvdHRvbSwg
TWFyZ2luSW5mbyYpOwogICAgIHZvaWQgc2V0Q29sbGFwc2VkQm90dG9tTWFyZ2luKGNvbnN0IE1h
cmdpbkluZm8mKTsKIAorICAgIGJvb2wgc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSBj
b25zdCB7IHJldHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURhdGEtPm1fc2hvdWxkQnJlYWtBdExp
bmVUb0F2b2lkV2lkb3c7IH0KKyAgICB2b2lkIGNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2b2lk
V2lkb3coKSBjb25zdDsKKyAgICBpbnQgbGluZUJyZWFrVG9Bdm9pZFdpZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fbGluZUJyZWFrVG9Bdm9pZFdpZG93IDog
LTE7IH0KKyAgICB2b2lkIHNldEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGludCk7CisgICAgYm9v
bCByZWxheW91dFRvQXZvaWRXaWRvd3MoTGF5b3V0U3RhdGVNYWludGFpbmVyJik7CisKIHByb3Rl
Y3RlZDoKICAgICBMYXlvdXRVbml0IG1heFBvc2l0aXZlTWFyZ2luQmVmb3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fbWFyZ2lucy5wb3NpdGl2ZU1hcmdpbkJl
Zm9yZSgpIDogUmVuZGVyQmxvY2tGbG93UmFyZURhdGE6OnBvc2l0aXZlTWFyZ2luQmVmb3JlRGVm
YXVsdCh0aGlzKTsgfQogICAgIExheW91dFVuaXQgbWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9tYXJnaW5zLm5lZ2F0aXZl
TWFyZ2luQmVmb3JlKCkgOiBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YTo6bmVnYXRpdmVNYXJnaW5C
ZWZvcmVEZWZhdWx0KHRoaXMpOyB9CkBAIC0yMzcsNiArMjQ3LDEwIEBAIHByb3RlY3RlZDoKICAg
ICBMYXlvdXRVbml0IGFwcGx5QmVmb3JlQnJlYWsoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5p
dCBsb2dpY2FsT2Zmc2V0KTsgLy8gSWYgdGhlIGNoaWxkIGhhcyBhIGJlZm9yZSBicmVhaywgdGhl
biByZXR1cm4gYSBuZXcgeVBvcyB0aGF0IHNoaWZ0cyB0byB0aGUgdG9wIG9mIHRoZSBuZXh0IHBh
Z2UvY29sdW1uLgogICAgIExheW91dFVuaXQgYXBwbHlBZnRlckJyZWFrKFJlbmRlckJveCogY2hp
bGQsIExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgTWFyZ2luSW5mbyYpOyAvLyBJZiB0aGUgY2hp
bGQgaGFzIGFuIGFmdGVyIGJyZWFrLCB0aGVuIHJldHVybiBhIG5ldyBvZmZzZXQgdGhhdCBzaGlm
dHMgdG8gdGhlIHRvcCBvZiB0aGUgbmV4dCBwYWdlL2NvbHVtbi4KICAgICBMYXlvdXRVbml0IGFk
anVzdEJsb2NrQ2hpbGRGb3JQYWdpbmF0aW9uKExheW91dFVuaXQgbG9naWNhbFRvcEFmdGVyQ2xl
YXIsIExheW91dFVuaXQgZXN0aW1hdGVXaXRob3V0UGFnaW5hdGlvbiwgUmVuZGVyQm94KiBjaGls
ZCwgYm9vbCBhdEJlZm9yZVNpZGVPZkJsb2NrKTsKKyAgICAKK3B1YmxpYzoKKyAgICAvLyBGSVhN
RS1CTE9DS0ZMT1c6IFRoaXMgY2FuIGJlIG1hZGUgcHJvdGVjdGVkIGFnYWluIG9uY2UgYWxsIGNh
bGxlcnMgaGF2ZSBiZWVuIG1vdmVkIGhlcmUuCisgICAgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25G
b3JQYWdpbmF0aW9uKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0JiBkZWx0YU9mZnNldCwgUmVu
ZGVyRmxvd1RocmVhZCopOyAvLyBDb21wdXRlcyBhIGRlbHRhT2Zmc2V0IHZhbHVlIHRoYXQgcHV0
IGEgbGluZSBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2UgaWYgaXQgZG9lc24ndCBmaXQgb24g
dGhlIGN1cnJlbnQgcGFnZS4KIAogcHJvdGVjdGVkOgogICAgIE93blB0cjxSZW5kZXJCbG9ja0Zs
b3dSYXJlRGF0YT4gbV9yYXJlRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2MCw3ICsxNTYwLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVu
c0FuZEZsb2F0c0luUgogCiAgICAgICAgICAgICAgICAgaWYgKHBhZ2luYXRlZCkgewogICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFkanVzdG1lbnQgPSAwOwotICAgICAgICAgICAgICAg
ICAgICBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKGxpbmVCb3gsIGFkanVzdG1lbnQs
IGxheW91dFN0YXRlLmZsb3dUaHJlYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
LUJMT0NLRkxPVzogUmVtb3ZlIHRoaXMgdHlwZSBjb252ZXJzaW9uIG9uY2UgdGhlIG93bmluZyBm
dW5jdGlvbiBtb3Zlcy4KKyAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9ja0Zsb3codGhp
cyktPmFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24obGluZUJveCwgYWRqdXN0bWVudCwg
bGF5b3V0U3RhdGUuZmxvd1RocmVhZCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFkanVz
dG1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xkTGluZVdpZHRo
ID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShvbGRMb2dpY2FsSGVpZ2h0LCBsYXlvdXRT
dGF0ZS5saW5lSW5mbygpLmlzRmlyc3RMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
bGluZUJveC0+YWRqdXN0QmxvY2tEaXJlY3Rpb25Qb3NpdGlvbihhZGp1c3RtZW50KTsKQEAgLTE2
NjksNyArMTY3MCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblIK
ICAgICAgICAgICAgICAgICBsaW5lQm94ID0gbGluZUJveC0+cHJldlJvb3RCb3goKTsKIAogICAg
ICAgICAgICAgLy8gV2Ugbm93IHdhbnQgdG8gYnJlYWsgYXQgdGhpcyBsaW5lLiBSZW1lbWJlciBm
b3IgbmV4dCBsYXlvdXQgYW5kIHRyaWdnZXIgcmVsYXlvdXQuCi0gICAgICAgICAgICBzZXRCcmVh
a0F0TGluZVRvQXZvaWRXaWRvdyhsaW5lQ291bnQobGluZUJveCkpOworICAgICAgICAgICAgLy8g
RklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdGhpcyB0eXBlIGNvbnZlcnNpb24gb25jZSB0aGUgb3du
aW5nIGZ1bmN0aW9uIG1vdmVzLgorICAgICAgICAgICAgdG9SZW5kZXJCbG9ja0Zsb3codGhpcykt
PnNldEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGxpbmVDb3VudChsaW5lQm94KSk7CiAgICAgICAg
ICAgICBtYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShsYXN0Um9vdEJveCgpLT5saW5lQm90dG9t
V2l0aExlYWRpbmcoKSwgbGluZUJveC0+bGluZUJvdHRvbVdpdGhMZWFkaW5nKCksIGxpbmVCb3gp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTY4Niw3ICsxNjg4LDggQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGlua1RvRW5kTGluZUlmTmVlZGVkKAogICAgICAgICAgICAgICAgIGxpbmUtPmF0dGFjaExp
bmUoKTsKICAgICAgICAgICAgICAgICBpZiAocGFnaW5hdGVkKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGRlbHRhIC09IGxpbmUtPnBhZ2luYXRpb25TdHJ1dCgpOwotICAgICAgICAgICAgICAgICAg
ICBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKGxpbmUsIGRlbHRhLCBsYXlvdXRTdGF0
ZS5mbG93VGhyZWFkKCkpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6
IFJlbW92ZSB0aGlzIHR5cGUgY29udmVyc2lvbiBvbmNlIHRoZSBvd25pbmcgZnVuY3Rpb24gbW92
ZXMuCisgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyQmxvY2tGbG93KHRoaXMpLT5hZGp1c3RM
aW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKGxpbmUsIGRlbHRhLCBsYXlvdXRTdGF0ZS5mbG93VGhy
ZWFkKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZGVsdGEpIHsK
ICAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGUudXBkYXRlUmVwYWludFJhbmdlRnJvbUJv
eChsaW5lLCBkZWx0YSk7CkBAIC0xOTIwLDcgKzE5MjMsOCBAQCBSb290SW5saW5lQm94KiBSZW5k
ZXJCbG9jazo6ZGV0ZXJtaW5lU3RhCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uRGVsdGEgLT0gY3Vyci0+cGFn
aW5hdGlvblN0cnV0KCk7Ci0gICAgICAgICAgICAgICAgYWRqdXN0TGluZVBvc2l0aW9uRm9yUGFn
aW5hdGlvbihjdXJyLCBwYWdpbmF0aW9uRGVsdGEsIGxheW91dFN0YXRlLmZsb3dUaHJlYWQoKSk7
CisgICAgICAgICAgICAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdGhpcyB0eXBlIGNv
bnZlcnNpb24gb25jZSB0aGUgb3duaW5nIGZ1bmN0aW9uIG1vdmVzLgorICAgICAgICAgICAgICAg
IHRvUmVuZGVyQmxvY2tGbG93KHRoaXMpLT5hZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9u
KGN1cnIsIHBhZ2luYXRpb25EZWx0YSwgbGF5b3V0U3RhdGUuZmxvd1RocmVhZCgpKTsKICAgICAg
ICAgICAgICAgICBpZiAocGFnaW5hdGlvbkRlbHRhKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250YWluc0Zsb2F0cygpIHx8ICFsYXlvdXRTdGF0ZS5mbG9hdHMoKS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyBiZXR0ZXIgZXZlbnR1YWxseS4g
IEZvciBub3cgaWYgd2UgZXZlciBzaGlmdCBiZWNhdXNlIG9mIHBhZ2luYXRpb24gYW5kIGZsb2F0
cyBhcmUgcHJlc2VudCBqdXN0IGdvIHRvIGEgZnVsbCBsYXlvdXQuCkBAIC0yMDY5LDcgKzIwNzMs
OCBAQCBib29sIFJlbmRlckJsb2NrOjpjaGVja1BhZ2luYXRpb25BbmRGbG9hCiAgICAgICAgICAg
ICAgICAgLy8gc3RydXQgeWV0LgogICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xkUGFnaW5h
dGlvblN0cnV0ID0gbGluZUJveC0+cGFnaW5hdGlvblN0cnV0KCk7CiAgICAgICAgICAgICAgICAg
bGluZURlbHRhIC09IG9sZFBhZ2luYXRpb25TdHJ1dDsKLSAgICAgICAgICAgICAgICBhZGp1c3RM
aW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKGxpbmVCb3gsIGxpbmVEZWx0YSwgbGF5b3V0U3RhdGUu
Zmxvd1RocmVhZCgpKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92
ZSB0aGlzIHR5cGUgY29udmVyc2lvbiBvbmNlIHRoZSBvd25pbmcgZnVuY3Rpb24gbW92ZXMuCisg
ICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9ja0Zsb3codGhpcyktPmFkanVzdExpbmVQb3NpdGlv
bkZvclBhZ2luYXRpb24obGluZUJveCwgbGluZURlbHRhLCBsYXlvdXRTdGF0ZS5mbG93VGhyZWFk
KCkpOwogICAgICAgICAgICAgICAgIGxpbmVCb3gtPnNldFBhZ2luYXRpb25TdHJ1dChvbGRQYWdp
bmF0aW9uU3RydXQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxpbmVXaWR0aEZv
clBhZ2luYXRlZExpbmVDaGFuZ2VkKGxpbmVCb3gsIGxpbmVEZWx0YSwgbGF5b3V0U3RhdGUuZmxv
d1RocmVhZCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw3IEBAIGNvbnN0IGludCBzaG93VHJl
ZUNoYXJhY3Rlck9mZnNldCA9IDM5OwogLy8gQmFzZSBjbGFzcyBmb3IgYWxsIHJlbmRlcmluZyB0
cmVlIG9iamVjdHMuCiBjbGFzcyBSZW5kZXJPYmplY3QgOiBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGll
bnQgewogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJCbG9jazsKKyAgICBmcmllbmQgY2xhc3MgUmVu
ZGVyQmxvY2tGbG93OwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllcjsKICAgICBmcmllbmQg
Y2xhc3MgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OwogcHVibGljOgo=
</data>
<flag name="review"
          id="233958"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>