<?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>58362</bug_id>
          
          <creation_ts>2011-04-12 12:45:11 -0700</creation_ts>
          <short_desc>Bundle w and tmpW in findNextLineBreak together as a class</short_desc>
          <delta_ts>2011-04-12 14:33:03 -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>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384264</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 12:45:11 -0700</bug_when>
    <thetext>This is a cleanup. In this patch, I&apos;m going to rename w, tmpW, and width as committedWidth, uncommittedWidth, and availableWith respectively per Dave&apos;s suggestion.  Furthermore, I&apos;m going to create a new LineWidth class out of committedWidth and uncommittedWidth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384354</commentid>
    <comment_count>1</comment_count>
      <attachid>89268</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 14:05:22 -0700</bug_when>
    <thetext>Created attachment 89268
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384357</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 14:07:43 -0700</bug_when>
    <thetext>After this patch, I&apos;ll move availableWidth into LineWidth and will merge LineWidth and LineOffsets after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384358</commentid>
    <comment_count>3</comment_count>
      <attachid>89268</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-04-12 14:10:44 -0700</bug_when>
    <thetext>Comment on attachment 89268
cleanup

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

This could also be done as a followup, but availableWidth should move into LineWidth as well.  Then you could ask questions like &quot;remainingWidth()&quot; to get availableWidth - currentWidth etc., and lots of these comparisons would get cleaner.

r=me

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1639
&gt; +inline LineWidth::LineWidth()
&gt; +    : m_uncommittedWidth(0)
&gt; +    , m_committedWidth(0)
&gt; +{
&gt; +}

I don&apos;t much like this style when the class is so tiny.  I&apos;d just put this right inside the class declaration.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1645
&gt; +inline void LineWidth::commit()
&gt; +{
&gt; +    m_committedWidth += m_uncommittedWidth;
&gt; +    m_uncommittedWidth = 0;
&gt; +}

Same here.  Just put it up where you first declared the function.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1660
&gt; +    float availableWidth = lineOffsets.width();
&gt; +    LineWidth width;

Any reason not to just merge LineWidth with LineOffsets? They&apos;re close enough to one another that I&apos;d just make them a single struct. I guess that could be done in a future patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384362</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 14:13:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 89268 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89268&amp;action=review
&gt; 
&gt; This could also be done as a followup, but availableWidth should move into LineWidth as well.  Then you could ask questions like &quot;remainingWidth()&quot; to get availableWidth - currentWidth etc., and lots of these comparisons would get cleaner.

Yup. My plan exactly!

&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1639
&gt; &gt; +inline LineWidth::LineWidth()
&gt; &gt; +    : m_uncommittedWidth(0)
&gt; &gt; +    , m_committedWidth(0)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; I don&apos;t much like this style when the class is so tiny.  I&apos;d just put this right inside the class declaration.

Okay, will do.

&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1660
&gt; &gt; +    float availableWidth = lineOffsets.width();
&gt; &gt; +    LineWidth width;
&gt; 
&gt; Any reason not to just merge LineWidth with LineOffsets? They&apos;re close enough to one another that I&apos;d just make them a single struct. I guess that could be done in a future patch though.

That&apos;s a part of my plan as well :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384390</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 14:33:03 -0700</bug_when>
    <thetext>Committed r83640: &lt;http://trac.webkit.org/changeset/83640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89268</attachid>
            <date>2011-04-12 14:05:22 -0700</date>
            <delta_ts>2011-04-12 14:10:44 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-58362-20110412140521.patch</filename>
            <type>text/plain</type>
            <size>20132</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDQtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIHcgYW5kIHRtcFcgaW4gZmluZE5leHRMaW5lQnJlYWsg
dG9nZXRoZXIgYXMgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTgzNjIKKworICAgICAgICBSZW5hbWVkIHcsIHRlbXBXLCBhbmQgd2lkdGgg
aW4gZmluZE5leHRMaW5lQnJlYWsgdG8gY29tbWl0dGVkV2lkdGgsIHVuY29tbWl0dGVkV2lkdGgs
CisgICAgICAgIGFuZCBhdmFpbGFibGVXaWR0aCByZXNwZWN0aXZlbHkuIEFsc28gYnVuZGxlZCBj
b21taXR0ZWRXaWR0aCBhbmQgdW5jb21taXR0ZWRXaXRoIGFzIGEgY2xhc3MKKyAgICAgICAgbmFt
ZWQgTGluZVdpZHRoLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OkxpbmVXaWR0aCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpjdXJyZW50V2lkdGgpOiBBZGRlZDsgcmV0dXJu
cyB0aGUgc3VtIG9mIGNvbW1pdHRlZCBhbmQgdW5jb21taXR0ZWQgd2lkdGguCisgICAgICAgIChX
ZWJDb3JlOjpMaW5lV2lkdGg6OnVuY29tbWl0dGVkV2lkdGgpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6Y29tbWl0dGVkV2lkdGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVXaWR0aDo6YWRkVW5jb21taXR0ZWRXaWR0aCk6IEFkZGVkOyBhZGRzIHRoZSBzcGVj
aWZpZWQgd2lkdGggdG8gdGhlIHVuY29tbWl0dGVkIHdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6
TGluZVdpZHRoOjpjb21taXQpOiBBZGRlZDsgY29tbWl0cyB0aGUgY3VycmVudCB3aWR0aCBhbmQg
Y2xlYXJzIHRoZSB1bmNvbW1pdHRlZCB3aWR0aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpmaW5kTmV4dExpbmVCcmVhayk6IFVzZXMgTGluZVdpZHRoLgorCiAyMDExLTA0LTEyICBM
dWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gODM2MDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYxNSw2ICsxNjE1LDM1IEBAIGlubGluZSB2b2lkIExpbmVPZmZzZXRzOjpz
aHJpbmtXaWR0aEZvck4KICAgICAgICAgbV9yaWdodCA9IG1fYmxvY2stPmxvZ2ljYWxMZWZ0Rm9y
RmxvYXQobmV3RmxvYXQpOwogfQogCitjbGFzcyBMaW5lV2lkdGggeworcHVibGljOgorICAgIExp
bmVXaWR0aCgpOworICAgIGZsb2F0IGN1cnJlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29t
bWl0dGVkV2lkdGggKyBtX3VuY29tbWl0dGVkV2lkdGg7IH0KKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZXZlbnR1YWxseSByZXBsYWNlIHRoZXNlIHR3byBmdW5jdGlvbnMgYnkgb25lcyB0aGF0
IHdvcmsgb24gYSBoaWdoZXIgYWJzdHJhY3Rpb24uCisgICAgZmxvYXQgdW5jb21taXR0ZWRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5jb21taXR0ZWRXaWR0aDsgfQorICAgIGZsb2F0IGNvbW1p
dHRlZFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aDsgfQorCisgICAgdm9p
ZCBhZGRVbmNvbW1pdHRlZFdpZHRoKGZsb2F0IGRlbHRhKSB7IG1fdW5jb21taXR0ZWRXaWR0aCAr
PSBkZWx0YTsgfQorICAgIHZvaWQgY29tbWl0KCk7CisKK3ByaXZhdGU6CisgICAgZmxvYXQgbV91
bmNvbW1pdHRlZFdpZHRoOworICAgIGZsb2F0IG1fY29tbWl0dGVkV2lkdGg7Cit9OworCitpbmxp
bmUgTGluZVdpZHRoOjpMaW5lV2lkdGgoKQorICAgIDogbV91bmNvbW1pdHRlZFdpZHRoKDApCisg
ICAgLCBtX2NvbW1pdHRlZFdpZHRoKDApCit7Cit9CisKK2lubGluZSB2b2lkIExpbmVXaWR0aDo6
Y29tbWl0KCkKK3sKKyAgICBtX2NvbW1pdHRlZFdpZHRoICs9IG1fdW5jb21taXR0ZWRXaWR0aDsK
KyAgICBtX3VuY29tbWl0dGVkV2lkdGggPSAwOworfQorCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJC
bG9jazo6ZmluZE5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9v
bCBmaXJzdExpbmUsIGJvb2wmIGlzTGluZUVtcHR5LCBMaW5lQnJlYWtJdGVyYXRvckluZm8mIGxp
bmVCcmVha0l0ZXJhdG9ySW5mbywgYm9vbCYgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBoeXBoZW5h
dGVkLCBFQ2xlYXIqIGNsZWFyLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgVmVjdG9yPFJlbmRlckJveCo+JiBwb3NpdGlvbmVkQm94ZXMpCiB7CkBAIC0xNjI3LDkg
KzE2NTYsOCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAKICAg
ICBza2lwTGVhZGluZ1doaXRlc3BhY2UocmVzb2x2ZXIsIGlzTGluZUVtcHR5LCBwcmV2aW91c0xp
bmVCcm9rZUNsZWFubHksIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVPZmZzZXRzKTsK
IAotICAgIGZsb2F0IHdpZHRoID0gbGluZU9mZnNldHMud2lkdGgoKTsKLSAgICBmbG9hdCB3ID0g
MDsKLSAgICBmbG9hdCB0bXBXID0gMDsKKyAgICBmbG9hdCBhdmFpbGFibGVXaWR0aCA9IGxpbmVP
ZmZzZXRzLndpZHRoKCk7CisgICAgTGluZVdpZHRoIHdpZHRoOwogICAgIC8vIFRoZSBhbW91bnQg
Ynkgd2hpY2ggfHdpZHRofCBoYXMgYmVlbiBpbmZsYXRlZCB0byBhY2NvdW50IGZvciBwb3NzaWJs
ZSBjb250cmFjdGlvbiBkdWUgdG8gcnVieSBvdmVyaGFuZy4KICAgICBmbG9hdCB0b3RhbE92ZXJo
YW5nV2lkdGggPSAwOwogCkBAIC0xNjkyLDcgKzE3MjAsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5k
ZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0g
UmVuZGVyU3R5bGU6OmNvbGxhcHNlV2hpdGVTcGFjZShjdXJyV1MpOwogICAgICAgICAgICAgCiAg
ICAgICAgIGlmIChvLT5pc0JSKCkpIHsKLSAgICAgICAgICAgIGlmICh3ICsgdG1wVyA8PSB3aWR0
aCkgeworICAgICAgICAgICAgaWYgKHdpZHRoLmN1cnJlbnRXaWR0aCgpIDw9IGF2YWlsYWJsZVdp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgbEJyZWFrLm1vdmVUb1N0YXJ0T2Yobyk7CiAgICAgICAg
ICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgpOwogCkBAIC0xNzIwLDkgKzE3NDgsOSBAQCBJbmxp
bmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgLy8g
Y2hlY2sgaWYgaXQgZml0cyBpbiB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICAgICAgICAgIC8v
IElmIGl0IGRvZXMsIHBvc2l0aW9uIGl0IG5vdywgb3RoZXJ3aXNlLCBwb3NpdGlvbgogICAgICAg
ICAgICAgICAgIC8vIGl0IGFmdGVyIG1vdmluZyB0byBuZXh0IGxpbmUgKGluIG5ld0xpbmUoKSBm
dW5jKQotICAgICAgICAgICAgICAgIGlmIChmbG9hdHNGaXRPbkxpbmUgJiYgbG9naWNhbFdpZHRo
Rm9yRmxvYXQoZikgKyB3ICsgdG1wVyA8PSB3aWR0aCkgeworICAgICAgICAgICAgICAgIGlmIChm
bG9hdHNGaXRPbkxpbmUgJiYgbG9naWNhbFdpZHRoRm9yRmxvYXQoZikgKyB3aWR0aC5jdXJyZW50
V2lkdGgoKSA8PSBhdmFpbGFibGVXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBwb3NpdGlv
bk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVPZmZzZXRz
KTsKLSAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBsaW5lT2Zmc2V0cy53aWR0aCgpICsgdG90
YWxPdmVyaGFuZ1dpZHRoOworICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGxp
bmVPZmZzZXRzLndpZHRoKCkgKyB0b3RhbE92ZXJoYW5nV2lkdGg7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChsQnJlYWsubV9vYmogPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFsQnJlYWsubV9wb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLmluY3Jl
bWVudCgpOwpAQCAtMTc4MywxNCArMTgxMSwxMyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9j
azo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICB0bXBXICs9IGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChmbG93Qm94KSArIGJvcmRl
clBhZGRpbmdNYXJnaW5FbmQoZmxvd0JveCk7CisgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1p
dHRlZFdpZHRoKGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChmbG93Qm94KSArIGJvcmRlclBhZGRp
bmdNYXJnaW5FbmQoZmxvd0JveCkpOwogICAgICAgICB9IGVsc2UgaWYgKG8tPmlzUmVwbGFjZWQo
KSkgewogICAgICAgICAgICAgUmVuZGVyQm94KiByZXBsYWNlZEJveCA9IHRvUmVuZGVyQm94KG8p
OwogCiAgICAgICAgICAgICAvLyBCcmVhayBvbiByZXBsYWNlZCBlbGVtZW50cyBpZiBlaXRoZXIg
aGFzIG5vcm1hbCB3aGl0ZS1zcGFjZS4KICAgICAgICAgICAgIGlmICgoYXV0b1dyYXAgfHwgUmVu
ZGVyU3R5bGU6OmF1dG9XcmFwKGxhc3RXUykpICYmICghby0+aXNJbWFnZSgpIHx8IGFsbG93SW1h
Z2VzVG9CcmVhaykpIHsKLSAgICAgICAgICAgICAgICB3ICs9IHRtcFc7Ci0gICAgICAgICAgICAg
ICAgdG1wVyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGguY29tbWl0KCk7CiAgICAgICAgICAg
ICAgICAgbEJyZWFrLm1vdmVUb1N0YXJ0T2Yobyk7CiAgICAgICAgICAgICB9CiAKQEAgLTE4MTYs
MjAgKzE4NDMsMjAgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQog
ICAgICAgICAgICAgICAgICAgICBpZ25vcmluZ1NwYWNlcyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlckxpc3RNYXJrZXIobyktPmlzSW5zaWRl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHRtcFcgKz0gcmVwbGFjZWRMb2dpY2FsV2lkdGg7Cisg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgocmVwbGFjZWRMb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdG1wVyArPSBy
ZXBsYWNlZExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRl
ZFdpZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIGlmIChvLT5pc1J1YnlS
dW4oKSkgewogICAgICAgICAgICAgICAgIFJlbmRlclJ1YnlSdW4qIHJ1YnlSdW4gPSB0b1JlbmRl
clJ1YnlSdW4obyk7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T3Zlcmhhbmc7CiAgICAgICAg
ICAgICAgICAgaW50IGVuZE92ZXJoYW5nOwogICAgICAgICAgICAgICAgIHJ1YnlSdW4tPmdldE92
ZXJoYW5nKGZpcnN0TGluZSwgbGFzdCwgbmV4dCwgc3RhcnRPdmVyaGFuZywgZW5kT3Zlcmhhbmcp
OwotICAgICAgICAgICAgICAgIHN0YXJ0T3ZlcmhhbmcgPSBtaW48aW50PihzdGFydE92ZXJoYW5n
LCB3KTsKKyAgICAgICAgICAgICAgICBzdGFydE92ZXJoYW5nID0gbWluPGludD4oc3RhcnRPdmVy
aGFuZywgd2lkdGguY29tbWl0dGVkV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgdG90YWxPdmVy
aGFuZ1dpZHRoICs9IHN0YXJ0T3Zlcmhhbmc7Ci0gICAgICAgICAgICAgICAgd2lkdGggKz0gc3Rh
cnRPdmVyaGFuZzsKLSAgICAgICAgICAgICAgICBlbmRPdmVyaGFuZyA9IG1heChtaW48aW50Pihl
bmRPdmVyaGFuZywgd2lkdGggLSAodyArIHRtcFcpKSwgMCk7CisgICAgICAgICAgICAgICAgYXZh
aWxhYmxlV2lkdGggKz0gc3RhcnRPdmVyaGFuZzsKKyAgICAgICAgICAgICAgICBlbmRPdmVyaGFu
ZyA9IG1heChtaW48aW50PihlbmRPdmVyaGFuZywgYXZhaWxhYmxlV2lkdGggLSB3aWR0aC5jdXJy
ZW50V2lkdGgoKSksIDApOwogICAgICAgICAgICAgICAgIHRvdGFsT3ZlcmhhbmdXaWR0aCArPSBl
bmRPdmVyaGFuZzsKLSAgICAgICAgICAgICAgICB3aWR0aCArPSBlbmRPdmVyaGFuZzsKKyAgICAg
ICAgICAgICAgICBhdmFpbGFibGVXaWR0aCArPSBlbmRPdmVyaGFuZzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChvLT5pc1RleHQoKSkgewogICAgICAgICAgICAgaWYgKCFwb3Mp
CkBAIC0xODYxLDE5ICsxODg4LDE4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5k
TmV4dExpbmUKICAgICAgICAgICAgIC8vIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4K
ICAgICAgICAgICAgIGZsb2F0IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSBmLnR5cGVzZXR0aW5n
RmVhdHVyZXMoKSAmIEtlcm5pbmcgPyBmLndpZHRoKFRleHRSdW4oJnNwYWNlLCAxKSkgKyB3b3Jk
U3BhY2luZyA6IDA7CiAKLSAgICAgICAgICAgIGZsb2F0IHdyYXBXID0gdG1wVyArIGlubGluZUxv
Z2ljYWxXaWR0aChvLCAhYXBwbGllZFN0YXJ0V2lkdGgsIHRydWUpOworICAgICAgICAgICAgZmxv
YXQgd3JhcFcgPSB3aWR0aC51bmNvbW1pdHRlZFdpZHRoKCkgKyBpbmxpbmVMb2dpY2FsV2lkdGgo
bywgIWFwcGxpZWRTdGFydFdpZHRoLCB0cnVlKTsKICAgICAgICAgICAgIGZsb2F0IGNoYXJXaWR0
aCA9IDA7CiAgICAgICAgICAgICBib29sIGJyZWFrTkJTUCA9IGF1dG9XcmFwICYmIG8tPnN0eWxl
KCktPm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgICAgICAgICAvLyBBdXRvLXdyYXBwaW5nIHRl
eHQgc2hvdWxkIHdyYXAgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQgb25seSBpZiBpdCBjb3VsZCBu
b3Qgd3JhcCBiZWZvcmUgdGhlIHdvcmQsCiAgICAgICAgICAgICAvLyB3aGljaCBpcyBvbmx5IHBv
c3NpYmxlIGlmIHRoZSB3b3JkIGlzIHRoZSBmaXJzdCB0aGluZyBvbiB0aGUgbGluZSwgdGhhdCBp
cywgaWYgfHd8IGlzIHplcm8uCi0gICAgICAgICAgICBib29sIGJyZWFrV29yZHMgPSBvLT5zdHls
ZSgpLT5icmVha1dvcmRzKCkgJiYgKChhdXRvV3JhcCAmJiAhdykgfHwgY3VycldTID09IFBSRSk7
CisgICAgICAgICAgICBib29sIGJyZWFrV29yZHMgPSBvLT5zdHlsZSgpLT5icmVha1dvcmRzKCkg
JiYgKChhdXRvV3JhcCAmJiAhd2lkdGguY29tbWl0dGVkV2lkdGgoKSkgfHwgY3VycldTID09IFBS
RSk7CiAgICAgICAgICAgICBib29sIG1pZFdvcmRCcmVhayA9IGZhbHNlOwogICAgICAgICAgICAg
Ym9vbCBicmVha0FsbCA9IG8tPnN0eWxlKCktPndvcmRCcmVhaygpID09IEJyZWFrQWxsV29yZEJy
ZWFrICYmIGF1dG9XcmFwOwogICAgICAgICAgICAgZmxvYXQgaHlwaGVuV2lkdGggPSAwOwogCiAg
ICAgICAgICAgICBpZiAodC0+aXNXb3JkQnJlYWsoKSkgewotICAgICAgICAgICAgICAgIHcgKz0g
dG1wVzsKLSAgICAgICAgICAgICAgICB0bXBXID0gMDsKKyAgICAgICAgICAgICAgICB3aWR0aC5j
b21taXQoKTsKICAgICAgICAgICAgICAgICBsQnJlYWsubW92ZVRvU3RhcnRPZihvKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWxlbik7CiAgICAgICAgICAgICB9CkBAIC0xODkwLDcgKzE5MTYs
NyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAg
ICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBhdXRvV3JhcCAmJiAhaHlwaGVuV2lkdGggJiYg
c3R5bGUtPmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgewogICAgICAgICAgICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGh5cGhlblN0cmluZyA9IHN0eWxlLT5oeXBoZW5TdHJpbmcoKTsK
ICAgICAgICAgICAgICAgICAgICAgaHlwaGVuV2lkdGggPSBmLndpZHRoKFRleHRSdW4oaHlwaGVu
U3RyaW5nLmNoYXJhY3RlcnMoKSwgaHlwaGVuU3RyaW5nLmxlbmd0aCgpKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHRtcFcgKz0gaHlwaGVuV2lkdGg7CisgICAgICAgICAgICAgICAgICAgIHdpZHRo
LmFkZFVuY29tbWl0dGVkV2lkdGgoaHlwaGVuV2lkdGgpOwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlXb3JkU3BhY2luZyA9IGZhbHNlOwpAQCAtMTg5OSw4
ICsxOTI1LDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogCiAg
ICAgICAgICAgICAgICAgaWYgKChicmVha0FsbCB8fCBicmVha1dvcmRzKSAmJiAhbWlkV29yZEJy
ZWFrKSB7CiAgICAgICAgICAgICAgICAgICAgIHdyYXBXICs9IGNoYXJXaWR0aDsKLSAgICAgICAg
ICAgICAgICAgICAgY2hhcldpZHRoID0gdGV4dFdpZHRoKHQsIHBvcywgMSwgZiwgdyArIHdyYXBX
LCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVTcGFjZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1pZFdvcmRCcmVhayA9IHcgKyB3cmFwVyArIGNoYXJXaWR0aCA+IHdpZHRoOworICAgICAgICAg
ICAgICAgICAgICBjaGFyV2lkdGggPSB0ZXh0V2lkdGgodCwgcG9zLCAxLCBmLCB3aWR0aC5jb21t
aXR0ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNwYWNlKTsK
KyAgICAgICAgICAgICAgICAgICAgbWlkV29yZEJyZWFrID0gd2lkdGguY29tbWl0dGVkV2lkdGgo
KSArIHdyYXBXICsgY2hhcldpZHRoID4gYXZhaWxhYmxlV2lkdGg7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgaWYgKGxpbmVCcmVha0l0ZXJhdG9ySW5mby5maXJzdCAhPSB0
KSB7CkBAIC0xOTMxLDQwICsxOTU3LDQwIEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpm
aW5kTmV4dExpbmUKIAogICAgICAgICAgICAgICAgICAgICBmbG9hdCBhZGRpdGlvbmFsVG1wVzsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggJiYgY3VycmVu
dENoYXJhY3RlcklzU3BhY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVG1w
VyA9IHRleHRXaWR0aCh0LCBsYXN0U3BhY2UsIHBvcyArIDEgLSBsYXN0U3BhY2UsIGYsIHcgKyB0
bXBXLCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVTcGFjZSkgLSB3b3JkVHJhaWxpbmdTcGFj
ZVdpZHRoICsgbGFzdFNwYWNlV29yZFNwYWNpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRpdGlvbmFsVG1wVyA9IHRleHRXaWR0aCh0LCBsYXN0U3BhY2UsIHBvcyArIDEgLSBsYXN0U3Bh
Y2UsIGYsIHdpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVT
cGFjZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoICsgbGFzdFNwYWNlV29yZFNwYWNpbmc7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9u
YWxUbXBXID0gdGV4dFdpZHRoKHQsIGxhc3RTcGFjZSwgcG9zIC0gbGFzdFNwYWNlLCBmLCB3ICsg
dG1wVywgaXNGaXhlZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UpICsgbGFzdFNwYWNlV29yZFNw
YWNpbmc7Ci0gICAgICAgICAgICAgICAgICAgIHRtcFcgKz0gYWRkaXRpb25hbFRtcFc7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVG1wVyA9IHRleHRXaWR0aCh0LCBsYXN0U3Bh
Y2UsIHBvcyAtIGxhc3RTcGFjZSwgZiwgd2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRj
aCwgY29sbGFwc2VXaGl0ZVNwYWNlKSArIGxhc3RTcGFjZVdvcmRTcGFjaW5nOworICAgICAgICAg
ICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGFkZGl0aW9uYWxUbXBXKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFhcHBsaWVkU3RhcnRXaWR0aCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdG1wVyArPSBpbmxpbmVMb2dpY2FsV2lkdGgobywgdHJ1ZSwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChpbmxpbmVM
b2dpY2FsV2lkdGgobywgdHJ1ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGxpZWRTdGFydFdpZHRoID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYXBwbHlXb3JkU3BhY2luZyA9ICB3b3Jk
U3BhY2luZyAmJiBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJ
c1NwYWNlOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghdyAmJiBhdXRvV3JhcCAmJiB0bXBX
ID4gd2lkdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBmaXRCZWxvd0Zsb2F0cyh0bXBXLCB0
b3RhbE92ZXJoYW5nV2lkdGgsIGZpcnN0TGluZSwgd2lkdGgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIXdpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgYXV0b1dyYXAgJiYgd2lkdGgudW5jb21t
aXR0ZWRXaWR0aCgpID4gYXZhaWxhYmxlV2lkdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBm
aXRCZWxvd0Zsb2F0cyh3aWR0aC51bmNvbW1pdHRlZFdpZHRoKCksIHRvdGFsT3ZlcmhhbmdXaWR0
aCwgZmlyc3RMaW5lLCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG9XcmFwIHx8IGJyZWFrV29yZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IHdlIGJyZWFrIG9ubHkgYWZ0ZXIgd2hpdGUtc3BhY2UsIGNvbnNpZGVyIHRoZSBjdXJyZW50IGNo
YXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgY2FuZGlkYXRlIHdpZHRoIGZv
ciB0aGlzIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxpbmVXYXNUb29XaWRl
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodyArIHRtcFcgPD0gd2lkdGgg
JiYgY3VycmVudENoYXJhY3RlcklzV1MgJiYgby0+c3R5bGUoKS0+YnJlYWtPbmx5QWZ0ZXJXaGl0
ZVNwYWNlKCkgJiYgIW1pZFdvcmRCcmVhaykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBjaGFyV2lkdGggPSB0ZXh0V2lkdGgodCwgcG9zLCAxLCBmLCB3ICsgdG1wVywgaXNGaXhl
ZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UpICsgKGFwcGx5V29yZFNwYWNpbmcgPyB3b3JkU3Bh
Y2luZyA6IDApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoLmN1cnJlbnRXaWR0
aCgpIDw9IGF2YWlsYWJsZVdpZHRoICYmIGN1cnJlbnRDaGFyYWN0ZXJJc1dTICYmIG8tPnN0eWxl
KCktPmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpICYmICFtaWRXb3JkQnJlYWspIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhcldpZHRoID0gdGV4dFdpZHRoKHQsIHBvcywg
MSwgZiwgd2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNw
YWNlKSArIChhcHBseVdvcmRTcGFjaW5nID8gd29yZFNwYWNpbmcgOiAwKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBsaW5lIGlzIHRvbyBiaWcgZXZlbiB3aXRob3V0
IHRoZSBleHRyYSBzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBl
bmQgb2YgdGhlIGxpbmUuIElmIGl0IGlzIG5vdCwgZG8gbm90aGluZy4gCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIGxpbmUgbmVlZHMgdGhlIGV4dHJhIHdoaXRlc3BhY2Ug
dG8gYmUgdG9vIGxvbmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gbW92
ZSB0aGUgbGluZSBicmVhayB0byB0aGUgc3BhY2UgYW5kIHNraXAgYWxsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgd2hpdGVzcGFjZS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodyArIHRtcFcgKyBjaGFyV2lkdGggPiB3aWR0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aC5jdXJyZW50V2lkdGgoKSArIGNoYXJXaWR0
aCA+IGF2YWlsYWJsZVdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmVXYXNUb29XaWRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEJy
ZWFrLm1vdmVUbyhvLCBwb3MsIG5leHRCcmVha2FibGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBza2lwVHJhaWxpbmdXaGl0ZXNwYWNlKGxCcmVhaywgaXNMaW5lRW1wdHksIHBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxp
bmVXYXNUb29XaWRlIHx8IHcgKyB0bXBXID4gd2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY2FuSHlwaGVuYXRlICYmIHcgKyB0bXBXID4gd2lkdGgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVuYXRpbmcodCwgZiwgc3R5bGUtPmxvY2Fs
ZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25M
aW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgcG9zLCB3ICsgdG1wVyAtIGFkZGl0aW9uYWxUbXBXLCB3
aWR0aCwgaXNGaXhlZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UsIGxhc3RTcGFjZVdvcmRTcGFj
aW5nLCBsQnJlYWssIG5leHRCcmVha2FibGUsIGh5cGhlbmF0ZWQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxpbmVXYXNUb29XaWRlIHx8IHdpZHRoLmN1cnJlbnRXaWR0aCgpID4gYXZh
aWxhYmxlV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVu
YXRlICYmIHdpZHRoLmN1cnJlbnRXaWR0aCgpID4gYXZhaWxhYmxlV2lkdGgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVuYXRpbmcodCwgZiwgc3R5bGUtPmxvY2Fs
ZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25M
aW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgcG9zLCB3aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0
aW9uYWxUbXBXLCBhdmFpbGFibGVXaWR0aCwgaXNGaXhlZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3Bh
Y2UsIGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBsQnJlYWssIG5leHRCcmVha2FibGUsIGh5cGhlbmF0
ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHlwaGVuYXRlZCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTE5ODIsMTAgKzIwMDgsMTAgQEAgSW5saW5lSXRlcmF0b3Ig
UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gZW5kOyAvLyBEaWRuJ3QgZml0LiBKdW1wIHRvIHRoZSBlbmQuCiAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmV0d2Vl
bldvcmRzIHx8IChtaWRXb3JkQnJlYWsgJiYgIWF1dG9XcmFwKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wVyAtPSBhZGRpdGlvbmFsVG1wVzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCgtYWRkaXRpb25hbFRtcFcp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoeXBoZW5XaWR0aCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgd2lkdGggb2YgdGhlIHNv
ZnQgaHlwaGVuIG91dCBzaW5jZSB3ZSBmaXQgb24gYSBsaW5lLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0bXBXIC09IGh5cGhlbldpZHRoOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKC1oeXBoZW5XaWR0aCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGhlbldpZHRoID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMDA0LDkg
KzIwMzAsOCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAg
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0b1dyYXAgJiYg
YmV0d2VlbldvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3ICs9IHRtcFc7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aC5jb21taXQoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyYXBXID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcFcgPSAwOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbEJyZWFrLm1vdmVUbyhvLCBwb3MsIG5leHRCcmVha2FibGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0by13cmFwcGluZyB0ZXh0IHNob3VsZCBub3Qg
d3JhcCBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCBvbmNlIGl0IGhhcyBoYWQgYW4KICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IHRvIGJyZWFrIGFmdGVyIGEgd29yZC4KQEAg
LTIwODAsMTcgKzIxMDUsMTYgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0
TGluZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBJTVBPUlRBTlQ6IHBvcyBpcyA+
IGxlbmd0aCBoZXJlIQotICAgICAgICAgICAgZmxvYXQgYWRkaXRpb25hbFRtcFcgPSBpZ25vcmlu
Z1NwYWNlcyA/IDAgOiB0ZXh0V2lkdGgodCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIGYs
IHcgKyB0bXBXLCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVTcGFjZSkgKyBsYXN0U3BhY2VX
b3JkU3BhY2luZzsKLSAgICAgICAgICAgIHRtcFcgKz0gYWRkaXRpb25hbFRtcFc7Ci0gICAgICAg
ICAgICB0bXBXICs9IGlubGluZUxvZ2ljYWxXaWR0aChvLCAhYXBwbGllZFN0YXJ0V2lkdGgsIHRy
dWUpOworICAgICAgICAgICAgZmxvYXQgYWRkaXRpb25hbFRtcFcgPSBpZ25vcmluZ1NwYWNlcyA/
IDAgOiB0ZXh0V2lkdGgodCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIGYsIHdpZHRoLmN1
cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVTcGFjZSkgKyBsYXN0U3Bh
Y2VXb3JkU3BhY2luZzsKKyAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoYWRk
aXRpb25hbFRtcFcgKyBpbmxpbmVMb2dpY2FsV2lkdGgobywgIWFwcGxpZWRTdGFydFdpZHRoLCB0
cnVlKSk7CiAKLSAgICAgICAgICAgIGlmICh3ICsgdG1wVyA+IHdpZHRoKSB7CisgICAgICAgICAg
ICBpZiAod2lkdGguY3VycmVudFdpZHRoKCkgPiBhdmFpbGFibGVXaWR0aCkgewogICAgICAgICAg
ICAgICAgIGlmIChjYW5IeXBoZW5hdGUpCi0gICAgICAgICAgICAgICAgICAgIHRyeUh5cGhlbmF0
aW5nKHQsIGYsIHN0eWxlLT5sb2NhbGUoKSwgc3R5bGUtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUo
KSwgc3R5bGUtPmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2UsIHBvcywgdyArIHRt
cFcgLSBhZGRpdGlvbmFsVG1wVywgd2lkdGgsIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNw
YWNlLCBsYXN0U3BhY2VXb3JkU3BhY2luZywgbEJyZWFrLCBuZXh0QnJlYWthYmxlLCBoeXBoZW5h
dGVkKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVuYXRp
bmcodCwgZiwgc3R5bGUtPmxvY2FsZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSgp
LCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgcG9zLCB3aWR0aC5j
dXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUbXBXLCBhdmFpbGFibGVXaWR0aCwgaXNGaXhlZFBp
dGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UsIGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBsQnJlYWssIG5l
eHRCcmVha2FibGUsIGh5cGhlbmF0ZWQpOworCiAgICAgICAgICAgICAgICAgaWYgKCFoeXBoZW5h
dGVkICYmIGxCcmVhay5tX29iaiAmJiBsQnJlYWsubV9wb3MgJiYgbEJyZWFrLm1fb2JqLT5pc1Rl
eHQoKSAmJiB0b1JlbmRlclRleHQobEJyZWFrLm1fb2JqKS0+dGV4dExlbmd0aCgpICYmIHRvUmVu
ZGVyVGV4dChsQnJlYWsubV9vYmopLT5jaGFyYWN0ZXJzKClbbEJyZWFrLm1fcG9zIC0gMV0gPT0g
c29mdEh5cGhlbiAmJiBzdHlsZS0+aHlwaGVucygpICE9IEh5cGhlbnNOb25lKQogICAgICAgICAg
ICAgICAgICAgICBoeXBoZW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAg
ICAgICAgICAgIGlmIChoeXBoZW5hdGVkKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsK
ICAgICAgICAgICAgIH0KQEAgLTIwOTgsNyArMjEyMiw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
CiAgICAgICAgIGJvb2wgY2hlY2tGb3JCcmVhayA9IGF1dG9XcmFwOwotICAgICAgICBpZiAodyAm
JiB3ICsgdG1wVyA+IHdpZHRoICYmIGxCcmVhay5tX29iaiAmJiBjdXJyV1MgPT0gTk9XUkFQKQor
ICAgICAgICBpZiAod2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiB3aWR0aC5jdXJyZW50V2lkdGgo
KSA+IGF2YWlsYWJsZVdpZHRoICYmIGxCcmVhay5tX29iaiAmJiBjdXJyV1MgPT0gTk9XUkFQKQog
ICAgICAgICAgICAgY2hlY2tGb3JCcmVhayA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKG5leHQg
JiYgby0+aXNUZXh0KCkgJiYgbmV4dC0+aXNUZXh0KCkgJiYgIW5leHQtPmlzQlIoKSkgewogICAg
ICAgICAgICAgaWYgKGF1dG9XcmFwIHx8IChuZXh0LT5zdHlsZSgpLT5hdXRvV3JhcCgpKSkgewpA
QCAtMjExNiw0NSArMjE0MCw0MyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5l
eHRMaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3JCcmVhayA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmV4dFRleHQtPmlzV29yZEJyZWFrKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ZvckJyZWFrID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgYm9vbCB3aWxsRml0T25MaW5lID0gdyArIHRtcFcgPD0gd2lkdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghd2lsbEZpdE9uTGluZSAmJiAhdykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgZml0QmVsb3dGbG9hdHModG1wVywgdG90YWxPdmVyaGFuZ1dpZHRoLCBmaXJz
dExpbmUsIHdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxGaXRPbkxpbmUgPSB0
bXBXIDw9IHdpZHRoOworICAgICAgICAgICAgICAgICAgICBib29sIHdpbGxGaXRPbkxpbmUgPSB3
aWR0aC5jdXJyZW50V2lkdGgoKSA8PSBhdmFpbGFibGVXaWR0aDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCF3aWxsRml0T25MaW5lICYmICF3aWR0aC5jb21taXR0ZWRXaWR0aCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaXRCZWxvd0Zsb2F0cyh3aWR0aC51bmNvbW1pdHRlZFdpZHRo
KCksIHRvdGFsT3ZlcmhhbmdXaWR0aCwgZmlyc3RMaW5lLCBhdmFpbGFibGVXaWR0aCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aWxsRml0T25MaW5lID0gd2lkdGgudW5jb21taXR0ZWRXaWR0
aCgpIDw9IGF2YWlsYWJsZVdpZHRoOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY2FuUGxhY2VPbkxpbmUgPSB3aWxsRml0T25MaW5lIHx8ICFhdXRvV3Jh
cFdhc0V2ZXJUcnVlT25MaW5lOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2FuUGxhY2VPbkxp
bmUgJiYgY2hlY2tGb3JCcmVhaykgewotICAgICAgICAgICAgICAgICAgICAgICAgdyArPSB0bXBX
OwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wVyA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aC5jb21taXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxCcmVhay5tb3Zl
VG9TdGFydE9mKG5leHQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNoZWNrRm9yQnJlYWsg
JiYgKHcgKyB0bXBXID4gd2lkdGgpKSB7CisgICAgICAgIGlmIChjaGVja0ZvckJyZWFrICYmICh3
aWR0aC5jdXJyZW50V2lkdGgoKSA+IGF2YWlsYWJsZVdpZHRoKSkgewogICAgICAgICAgICAgLy8g
aWYgd2UgaGF2ZSBmbG9hdHMsIHRyeSB0byBnZXQgYmVsb3cgdGhlbS4KICAgICAgICAgICAgIGlm
IChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSAmJiAhaWdub3JpbmdTcGFjZXMgJiYgby0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNl
T2JqZWN0ID0gMDsKICAgICAgICAgICAgICAgICB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5jbGVh
cigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodykKKyAgICAgICAgICAgIGlm
ICh3aWR0aC5jb21taXR0ZWRXaWR0aCgpKQogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogCi0g
ICAgICAgICAgICBmaXRCZWxvd0Zsb2F0cyh0bXBXLCB0b3RhbE92ZXJoYW5nV2lkdGgsIGZpcnN0
TGluZSwgd2lkdGgpOworICAgICAgICAgICAgZml0QmVsb3dGbG9hdHMod2lkdGgudW5jb21taXR0
ZWRXaWR0aCgpLCB0b3RhbE92ZXJoYW5nV2lkdGgsIGZpcnN0TGluZSwgYXZhaWxhYmxlV2lkdGgp
OwogCiAgICAgICAgICAgICAvLyB8d2lkdGh8IG1heSBoYXZlIGJlZW4gYWRqdXN0ZWQgYmVjYXVz
ZSB3ZSBnb3Qgc2hvdmVkIGRvd24gcGFzdCBhIGZsb2F0ICh0aHVzCiAgICAgICAgICAgICAvLyBn
aXZpbmcgdXMgbW9yZSByb29tKSwgc28gd2UgbmVlZCB0byByZXRlc3QsIGFuZCBvbmx5IGp1bXAg
dG8KICAgICAgICAgICAgIC8vIHRoZSBlbmQgbGFiZWwgaWYgd2Ugc3RpbGwgZG9uJ3QgZml0IG9u
IHRoZSBsaW5lLiAtZHdoCi0gICAgICAgICAgICBpZiAodyArIHRtcFcgPiB3aWR0aCkKKyAgICAg
ICAgICAgIGlmICh3aWR0aC5jdXJyZW50V2lkdGgoKSA+IGF2YWlsYWJsZVdpZHRoKQogICAgICAg
ICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFvLT5pc0Zsb2F0
aW5nT3JQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIGxhc3QgPSBvOwogICAgICAgICAgICAg
aWYgKGxhc3QtPmlzUmVwbGFjZWQoKSAmJiBhdXRvV3JhcCAmJiAoIWxhc3QtPmlzSW1hZ2UoKSB8
fCBhbGxvd0ltYWdlc1RvQnJlYWspICYmICghbGFzdC0+aXNMaXN0TWFya2VyKCkgfHwgdG9SZW5k
ZXJMaXN0TWFya2VyKGxhc3QpLT5pc0luc2lkZSgpKSkgewotICAgICAgICAgICAgICAgIHcgKz0g
dG1wVzsKLSAgICAgICAgICAgICAgICB0bXBXID0gMDsKKyAgICAgICAgICAgICAgICB3aWR0aC5j
b21taXQoKTsKICAgICAgICAgICAgICAgICBsQnJlYWsubW92ZVRvU3RhcnRPZihuZXh0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE3MCw5ICsyMTkyLDggQEAgSW5saW5lSXRlcmF0
b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICBwb3MgPSAwOwogICAgICAgICBh
dFN0YXJ0ID0gZmFsc2U7CiAgICAgfQotCiAgICAgCi0gICAgaWYgKHcgKyB0bXBXIDw9IHdpZHRo
IHx8IGxhc3RXUyA9PSBOT1dSQVApCisgICAgaWYgKHdpZHRoLmN1cnJlbnRXaWR0aCgpIDw9IGF2
YWlsYWJsZVdpZHRoIHx8IGxhc3RXUyA9PSBOT1dSQVApCiAgICAgICAgIGxCcmVhay5jbGVhcigp
OwogCiAgZW5kOgo=
</data>
<flag name="review"
          id="81923"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>