<?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>204514</bug_id>
          
          <creation_ts>2019-11-22 07:05:27 -0800</creation_ts>
          <short_desc>[LFC][IFC] Line::Run::expand should take a range of runs to merge</short_desc>
          <delta_ts>2019-11-22 15:06:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1592780</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-11-22 07:05:27 -0800</bug_when>
    <thetext>instead of merging one by one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592782</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-22 07:06:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/57428139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592783</commentid>
    <comment_count>2</comment_count>
      <attachid>384150</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-22 07:19:04 -0800</bug_when>
    <thetext>Created attachment 384150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592790</commentid>
    <comment_count>3</comment_count>
      <attachid>384150</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-22 07:36:18 -0800</bug_when>
    <thetext>Comment on attachment 384150
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:315
&gt; +            auto&amp; trailingRun = m_inlineItemRuns[i + 1];
&gt; +            if (!ContinousContent::canMergeRuns(*m_inlineItemRuns[i], *trailingRun))
&gt;                  break;
&gt; -            runList.last().expand(*nextRun);
&gt; -            // Skip the merged run.
&gt; -            ++i;
&gt; +            continousContent.append(*trailingRun);

Maybe the canMergeRuns call could be done in ContinousContent too? Like instead of append do something like

continousContent.mergeIfNeeded(*m_inlineItemRuns[i], m_inlineItemRuns[i + 1]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592801</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-11-22 08:08:40 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 384150 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384150&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:315
&gt; &gt; +            auto&amp; trailingRun = m_inlineItemRuns[i + 1];
&gt; &gt; +            if (!ContinousContent::canMergeRuns(*m_inlineItemRuns[i], *trailingRun))
&gt; &gt;                  break;
&gt; &gt; -            runList.last().expand(*nextRun);
&gt; &gt; -            // Skip the merged run.
&gt; &gt; -            ++i;
&gt; &gt; +            continousContent.append(*trailingRun);
&gt; 
&gt; Maybe the canMergeRuns call could be done in ContinousContent too? Like
&gt; instead of append do something like
&gt; 
&gt; continousContent.mergeIfNeeded(*m_inlineItemRuns[i], m_inlineItemRuns[i +
&gt; 1]);
good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592968</commentid>
    <comment_count>5</comment_count>
      <attachid>384189</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-22 13:06:37 -0800</bug_when>
    <thetext>Created attachment 384189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593036</commentid>
    <comment_count>6</comment_count>
      <attachid>384189</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-22 15:06:09 -0800</bug_when>
    <thetext>Comment on attachment 384189
Patch

Clearing flags on attachment: 384189

Committed r252807: &lt;https://trac.webkit.org/changeset/252807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593037</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-22 15:06:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384150</attachid>
            <date>2019-11-22 07:19:04 -0800</date>
            <delta_ts>2019-11-22 13:06:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204514-20191122071841.patch</filename>
            <type>text/plain</type>
            <size>9715</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0ZThlMWU4YzRmNzk1
NjZjMzI3MDE3MWU3MjNiYWQzYjFhNWEzYS4uZGJkYTQ2MjZmZTIxODIxOTFkNjI4MTlmMTUwZTYz
ZWE4NDQ0MTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTExLTIyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBMaW5lOjpS
dW46OmV4cGFuZCBzaG91bGQgdGFrZSBhIHJhbmdlIG9mIHJ1bnMgdG8gbWVyZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDUxNAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTc0MjgxMzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQXMgcGFydCBvZiBMaW5lOjpjbG9zZSwgd2UgaXRlcmF0ZSB0aHJv
dWdoIHRoZSBydW5zIGFuZCBtZXJnZSB0aGVtIGlmIHBvc3NpYmxlLgorICAgICAgICBlLmcgW3Rl
eHRdWyBdW2NvbnRlbnRdWyBdW2FuZF1bICAgICAgICAgXVttb3JlXSAtPiBbdGV4dCBjb250ZW50
IGFuZCBdW21vcmVdIChub3RlIHRoZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcpCisgICAgICAgIElu
c3RlYWQgb2YgdGFraW5nIGFuZCBleHBhbmRpbmcgdGhlIHJ1bnMgb25lIGJ5IG9uZSwgbGV0J3Mg
Y29sbGVjdCB0aGUgY29udGludW91cyBuZWlnaGJvcmluZyBydW5zIGZpcnN0CisgICAgICAgIGFu
ZCBleHBhbmQgdGhlIGN1cnJlbnQgcnVuIHdpdGggdGhlIGNvbnRpbnVvdXMgcmFuZ2UgaW4gb25l
IGdvLiBUaGlzIHNoYXZlcyBvZmYgfjIlIG9uIGxpbmUtbGF5b3V0LXNpbXBsZS5odG1sLgorCisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50Ojp3aWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6Omhhc1RyYWlsaW5n
RXhwYW5zaW9uT3Bwb3J0dW5pdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpD
b250aW5vdXNDb250ZW50OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmNhbk1lcmdlUnVucyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6Y2xvc2UpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKwogMjAxOS0xMS0yMCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEFkZCBzdXBwb3J0IGZvciBMRkMgbGF5b3V0
IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwCmluZGV4IDU3MDUzMzVkMjRmYjU0OTVlNDhmYjNiMTAzZGM2NTkwMmRh
MWFkYTMuLmVhMDRjODg2NzNjMzlhMDkzMTA1OTkyMTcwNzk5ODRkYWZiMWFlYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
Y3BwCkBAIC0zNyw2ICszNywzMCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKExpbmUpOwogCitjbGFzcyBJbmxpbmVJdGVtUnVuOworc3RydWN0IENv
bnRpbm91c0NvbnRlbnQgeworcHVibGljOgorICAgIENvbnRpbm91c0NvbnRlbnQoYm9vbCB0ZXh0
SXNBbGlnbkp1c3RpZnkpOworCisgICAgdm9pZCBhcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYp
OworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbGVuZ3RoOyB9CisgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBMYXlvdXRV
bml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorCisgICAgYm9vbCBoYXNUcmFp
bGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFpbGluZ0V4
cGFuc2lvbk9wcG9ydHVuaXR5OyB9CisgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudDsgfQorCisg
ICAgc3RhdGljIGJvb2wgY2FuTWVyZ2VSdW5zKGNvbnN0IElubGluZUl0ZW1SdW4mIGxlYWRpbmdS
dW4sIGNvbnN0IElubGluZUl0ZW1SdW4mIHRyYWlsaW5nUnVuKTsKKworcHJpdmF0ZToKKyAgICBi
b29sIG1fdGV4dElzQWxpZ25KdXN0aWZ5IHsgZmFsc2UgfTsKKyAgICB1bnNpZ25lZCBtX2xlbmd0
aCB7IDAgfTsKKyAgICBMYXlvdXRVbml0IG1fd2lkdGg7CisgICAgYm9vbCBtX2hhc1RyYWlsaW5n
RXhwYW5zaW9uT3Bwb3J0dW5pdHkgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudCB7IDAgfTsKK307CisKIGNsYXNzIElubGluZUl0ZW1SdW4gewogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTkxJTkUoSW5saW5lSXRlbVJ1bik7CiBwdWJsaWM6CkBAIC04
NSw2ICsxMDksMzkgQEAgdm9pZCBJbmxpbmVJdGVtUnVuOjpzZXRDb2xsYXBzZXNUb1plcm9BZHZh
bmNlV2lkdGgoKQogICAgIG1fbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9KTsKIH0KIAorQ29udGlu
b3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudChib29sIHRleHRJc0FsaWduSnVzdGlmeSkKKyAg
ICA6IG1fdGV4dElzQWxpZ25KdXN0aWZ5KHRleHRJc0FsaWduSnVzdGlmeSkKK3sKK30KKwordm9p
ZCBDb250aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5saW5lSXRl
bVJ1bikKK3sKKyAgICBtX2xlbmd0aCArPSBpbmxpbmVJdGVtUnVuLnRleHRDb250ZXh0KCktPmxl
bmd0aCgpOworICAgIG1fd2lkdGggKz0gaW5saW5lSXRlbVJ1bi5sb2dpY2FsUmVjdCgpLndpZHRo
KCk7CisgICAgaWYgKG1fdGV4dElzQWxpZ25KdXN0aWZ5KSB7CisgICAgICAgIG1faGFzVHJhaWxp
bmdFeHBhbnNpb25PcHBvcnR1bml0eSA9IGlubGluZUl0ZW1SdW4uaGFzRXhwYW5zaW9uT3Bwb3J0
dW5pdHkoKTsKKyAgICAgICAgaWYgKG1faGFzVHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSkK
KyAgICAgICAgICAgICsrbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50OworICAgIH0KK30KKwor
Ym9vbCBDb250aW5vdXNDb250ZW50OjpjYW5NZXJnZVJ1bnMoY29uc3QgSW5saW5lSXRlbVJ1biYg
bGVhZGluZ1J1biwgY29uc3QgSW5saW5lSXRlbVJ1biYgdHJhaWxpbmdSdW4pCit7CisgICAgLy8g
TWVyZ2VkIGNvbnRlbnQgbmVlZHMgdG8gYmUgY29udGludW91cy4KKyAgICBpZiAobGVhZGluZ1J1
bi5pc0NvbGxhcHNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gT25seSB0ZXh0
IGNvbnRlbnQgY2FuIGJlIG1lcmdlZC4KKyAgICBpZiAoIWxlYWRpbmdSdW4uaXNUZXh0KCkgfHwg
IXRyYWlsaW5nUnVuLmlzVGV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRG8g
bm90IG1lcmdlIHJ1bnMgYWNyb3NzIGlubGluZSBib3hlcyAoPHNwYW4+Zm9vPC9zcGFuPjxzcGFu
PmJhcjwvc3Bhbj4pCisgICAgaWYgKCZsZWFkaW5nUnVuLmxheW91dEJveCgpICE9ICZ0cmFpbGlu
Z1J1bi5sYXlvdXRCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFZpc3VhbGx5
IGVtcHR5IHJ1bnMgYXJlIGlnbm9yZWQuCisgICAgaWYgKGxlYWRpbmdSdW4uaXNDb2xsYXBzZWRU
b1plcm9BZHZhbmNlV2lkdGgoKSB8fCB0cmFpbGluZ1J1bi5pc0NvbGxhcHNlZFRvWmVyb0FkdmFu
Y2VXaWR0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IExpbmU6OlJ1bjo6UnVuKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlIHR5
cGUsIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0KQogICAgIDogbV9sYXlvdXRCb3go
JmxheW91dEJveCkKICAgICAsIG1fdHlwZSh0eXBlKQpAQCAtMTIzLDI3ICsxODAsMjcgQEAgdm9p
ZCBMaW5lOjpSdW46OnNldENvbXB1dGVkSG9yaXpvbnRhbEV4cGFuc2lvbihMYXlvdXRVbml0IGxv
Z2ljYWxFeHBhbnNpb24pCiAgICAgbV90ZXh0Q29udGV4dC0+c2V0RXhwYW5zaW9uKHsgbV90ZXh0
Q29udGV4dC0+ZXhwYW5zaW9uKCktPmJlaGF2aW9yLCBsb2dpY2FsRXhwYW5zaW9uIH0pOwogfQog
Ci12b2lkIExpbmU6OlJ1bjo6ZXhwYW5kKGNvbnN0IElubGluZUl0ZW1SdW4mIG5leHRSdW4pCit2
b2lkIExpbmU6OlJ1bjo6ZXhwYW5kKGNvbnN0IENvbnRpbm91c0NvbnRlbnQmIGNvbnRpbm91c0Nv
bnRlbnQpCiB7CiAgICAgQVNTRVJUKGlzVGV4dCgpKTsKLSAgICBBU1NFUlQobmV4dFJ1bi5pc1Rl
eHQoKSk7CiAgICAgQVNTRVJUKCFpc0NvbGxhcHNlZFRvVmlzdWFsbHlFbXB0eSgpKTsKIAotICAg
IG1fbG9naWNhbFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KG5leHRSdW4ubG9naWNhbFJlY3QoKS53
aWR0aCgpKTsKLSAgICBhdXRvIGV4cGFuZGVkTGVuZ3RoID0gbV90ZXh0Q29udGV4dC0+bGVuZ3Ro
KCkgKyBuZXh0UnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpOworICAgIG1fbG9naWNhbFJlY3Qu
ZXhwYW5kSG9yaXpvbnRhbGx5KGNvbnRpbm91c0NvbnRlbnQud2lkdGgoKSk7CisgICAgYXV0byBl
eHBhbmRlZExlbmd0aCA9IG1fdGV4dENvbnRleHQtPmxlbmd0aCgpICsgY29udGlub3VzQ29udGVu
dC5sZW5ndGgoKTsKICAgICBtX3RleHRDb250ZXh0LT5leHBhbmQobGF5b3V0Qm94KCkudGV4dENv
bnRleHQoKS5jb250ZW50LnN1YnN0cmluZyhtX3RleHRDb250ZXh0LT5zdGFydCgpLCBleHBhbmRl
ZExlbmd0aCksIGV4cGFuZGVkTGVuZ3RoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVy
eSBzaW1wbGUgZXhwYW5zaW9uIG1lcmdlLiBXZSBzaG91bGQgZXZlbnR1YWxseSBzd2l0Y2ggb3Zl
ciB0byBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudC4gCi0gICAgaWYgKGhh
c0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgJiYgbmV4dFJ1bi5oYXNFeHBhbnNpb25PcHBvcnR1bml0
eSgpKSB7Ci0gICAgICAgIC8vIFJ1biBpcyBleHBhbmRlZCB3aXRoIGEgd2hpdGVzcGFjZSBjb250
ZW50LgotICAgICAgICBhZGp1c3RFeHBhbnNpb25CZWhhdmlvcihGb3JiaWRMZWFkaW5nRXhwYW5z
aW9uIHwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7Ci0gICAgICAgICsrbV9leHBhbnNpb25PcHBv
cnR1bml0eUNvdW50OwotICAgIH0gZWxzZSBpZiAoIWhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkg
JiYgbmV4dFJ1bi5oYXNFeHBhbnNpb25PcHBvcnR1bml0eSgpKSB7Ci0gICAgICAgIC8vIE5vbndo
aXRlc3BhY2UgcnVucyBpcyBleHBhbmRlZCB3aXRoIHdoaXRlc3BhY2UuCi0gICAgICAgIHNldEhh
c0V4cGFuc2lvbk9wcG9ydHVuaXR5KEZvcmJpZExlYWRpbmdFeHBhbnNpb24gfCBBbGxvd1RyYWls
aW5nRXhwYW5zaW9uKTsKLSAgICB9IGVsc2UgaWYgKGhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkg
JiYgIW5leHRSdW4uaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSkgewotICAgICAgICAvLyBSdW4g
aXMgZXhwYW5kZWQgd2l0aCBhIG5vbndoaXRlc3BhY2UgY29udGVudC4KLSAgICAgICAgYWRqdXN0
RXhwYW5zaW9uQmVoYXZpb3IoQWxsb3dMZWFkaW5nRXhwYW5zaW9uIHwgQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbik7CisgICAgYXV0byBleHBhbnNpb25CZWhhdmlvciA9IGNvbnRpbm91c0NvbnRlbnQu
aGFzVHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSgpID8gKEZvcmJpZExlYWRpbmdFeHBhbnNp
b24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSA6IChBbGxvd0xlYWRpbmdFeHBhbnNpb24gfCBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBpZiAoaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHko
KSkgeworICAgICAgICAvLyBSdW4gaXMgZXhwYW5kZWQgd2l0aCBhIHRyYWlsaW5nIHdoaXRlc3Bh
Y2UgY29udGVudD8KKyAgICAgICAgYWRqdXN0RXhwYW5zaW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVo
YXZpb3IpOworICAgICAgICBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgKz0gY29udGlub3Vz
Q29udGVudC5leHBhbnNpb25PcHBvcnR1bml0eUNvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGNvbnRpbm91c0NvbnRlbnQuZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCgp
KSB7CisgICAgICAgIHNldEhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KGV4cGFuc2lvbkJlaGF2aW9y
KTsKKyAgICAgICAgbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50ID0gY29udGlub3VzQ29udGVu
dC5leHBhbnNpb25PcHBvcnR1bml0eUNvdW50KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiB9
CiAKQEAgLTI1MCwzMCArMzA3LDE2IEBAIExpbmU6OlJ1bkxpc3QgTGluZTo6Y2xvc2UoSXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVuCiAKICAgICAg
ICAgY29uc3RydWN0UnVuKCptX2lubGluZUl0ZW1SdW5zW2ldKTsKICAgICAgICAgLy8gTWVyZ2Ug
ZWxpZ2libGUgcnVucy4KLSAgICAgICAgd2hpbGUgKGkgPCBtX2lubGluZUl0ZW1SdW5zLnNpemUo
KSAtIDEpIHsKLSAgICAgICAgICAgIGF1dG8gY2FuTWVyZ2VSdW5zID0gW10gKGNvbnN0IGF1dG8m
IGN1cnJlbnRSdW4sIGNvbnN0IGF1dG8mIG5leHRSdW4pIHsKLSAgICAgICAgICAgICAgICAvLyBE
byBub3QgbWVyZ2UgcnVucyBhY3Jvc3MgaW5saW5lIGJveGVzICg8c3Bhbj5mb288L3NwYW4+PHNw
YW4+YmFyPC9zcGFuPikKLSAgICAgICAgICAgICAgICBpZiAoJmN1cnJlbnRSdW4ubGF5b3V0Qm94
KCkgIT0gJm5leHRSdW4ubGF5b3V0Qm94KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICAvLyBPbmx5IHRleHQgY29udGVudCBjYW4gYmUgbWVyZ2Vk
LgotICAgICAgICAgICAgICAgIGlmICghY3VycmVudFJ1bi5pc1RleHQoKSB8fCAhbmV4dFJ1bi5p
c1RleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIC8vIE1lcmdlZCBjb250ZW50IG5lZWRzIHRvIGJlIGNvbnRpbnVvdXMuCi0gICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRSdW4uaXNDb2xsYXBzZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIC8vIFZpc3VhbGx5IGVtcHR5IHJ1bnMgYXJl
IGlnbm9yZWQuCi0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSdW4uaXNDb2xsYXBzZWRUb1pl
cm9BZHZhbmNlV2lkdGgoKSB8fCBuZXh0UnVuLmlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRo
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhdXRvJiBjdXJyZW50UnVu
ID0gbV9pbmxpbmVJdGVtUnVuc1tpXTsKLSAgICAgICAgICAgIGF1dG8mIG5leHRSdW4gPSBtX2lu
bGluZUl0ZW1SdW5zW2kgKyAxXTsKLSAgICAgICAgICAgIGlmICghY2FuTWVyZ2VSdW5zKCpjdXJy
ZW50UnVuLCAqbmV4dFJ1bikpCisgICAgICAgIGF1dG8gY29udGlub3VzQ29udGVudCA9IENvbnRp
bm91c0NvbnRlbnQgeyBpc1RleHRBbGlnbkp1c3RpZnkoKSB9OworICAgICAgICBmb3IgKDsgaSA8
IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgICAgICBhdXRvJiB0
cmFpbGluZ1J1biA9IG1faW5saW5lSXRlbVJ1bnNbaSArIDFdOworICAgICAgICAgICAgaWYgKCFD
b250aW5vdXNDb250ZW50OjpjYW5NZXJnZVJ1bnMoKm1faW5saW5lSXRlbVJ1bnNbaV0sICp0cmFp
bGluZ1J1bikpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBydW5MaXN0Lmxh
c3QoKS5leHBhbmQoKm5leHRSdW4pOwotICAgICAgICAgICAgLy8gU2tpcCB0aGUgbWVyZ2VkIHJ1
bi4KLSAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRpbm91c0NvbnRlbnQuYXBwZW5k
KCp0cmFpbGluZ1J1bik7CiAgICAgICAgIH0KKyAgICAgICAgLy8gRG8gd2UgaGF2ZSBhIHJhbmdl
IHRvIG1lcmdlPworICAgICAgICBpZiAoIWNvbnRpbm91c0NvbnRlbnQuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcnVuTGlzdC5sYXN0KCkuZXhwYW5kKGNvbnRpbm91c0NvbnRlbnQpOwogICAgIH0K
IAogICAgIGlmICghbV9za2lwQWxpZ25tZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggY2YwMjY1YWMzYTY3ZDdj
NDE2ZTBjOWY1MmI2MjQxZDA0Zjk4NzE5Yy4uMzQxNDcxM2Y2MjQ5NGIzZGM1ZDQ5ZDFhYTg4MTA2
YmU0NWQwMjA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmUuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIExheW91dCB7CiAKK3N0cnVjdCBDb250aW5vdXNDb250ZW50OwogY2xhc3Mg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CiBjbGFzcyBJbmxpbmVJdGVtUnVuOwogCkBAIC04Niw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExpbmU7CiAgICAgICAgIFJ1
bihjb25zdCBCb3gmLCBJbmxpbmVJdGVtOjpUeXBlLCBjb25zdCBEaXNwbGF5OjpSZWN0Jik7CiAK
LSAgICAgICAgdm9pZCBleHBhbmQoY29uc3QgSW5saW5lSXRlbVJ1biYpOworICAgICAgICB2b2lk
IGV4cGFuZChjb25zdCBDb250aW5vdXNDb250ZW50Jik7CiAgICAgICAgIHZvaWQgYWRqdXN0TG9n
aWNhbFRvcChMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9sb2dpY2FsUmVjdC5zZXRUb3AobG9n
aWNhbFRvcCk7IH0KICAgICAgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KExheW91dFVuaXQgb2Zm
c2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZUhvcml6b250YWxseShvZmZzZXQpOyB9CiAgICAgICAg
IHZvaWQgbW92ZVZlcnRpY2FsbHkoTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5t
b3ZlVmVydGljYWxseShvZmZzZXQpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384189</attachid>
            <date>2019-11-22 13:06:37 -0800</date>
            <delta_ts>2019-11-22 15:06:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204514-20191122130614.patch</filename>
            <type>text/plain</type>
            <size>13176</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM4ZWVmNGRmYTgyYWMx
MTA4NjZjODNmNDk1Y2ExMGFmYTk1MWIyYy4uN2E5ZGY3NjUzNzcxMzhhYmU2YjY0NDhhNjFjODk1
NTdhZTE3YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTExLTIyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBMaW5lOjpS
dW46OmV4cGFuZCBzaG91bGQgdGFrZSBhIHJhbmdlIG9mIHJ1bnMgdG8gbWVyZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDUxNAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTc0MjgxMzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQXMgcGFydCBvZiBMaW5lOjpjbG9zZSwgd2UgaXRlcmF0ZSB0aHJv
dWdoIHRoZSBydW5zIGFuZCBtZXJnZSB0aGVtIGlmIHBvc3NpYmxlLgorICAgICAgICBlLmcgW3Rl
eHRdWyBdW2NvbnRlbnRdWyBdW2FuZF1bICAgICAgICAgXVttb3JlXSAtPiBbdGV4dCBjb250ZW50
IGFuZCBdW21vcmVdIChub3RlIHRoZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcpCisgICAgICAgIElu
c3RlYWQgb2YgdGFraW5nIGFuZCBleHBhbmRpbmcgdGhlIHJ1bnMgb25lIGJ5IG9uZSwgbGV0J3Mg
Y29sbGVjdCB0aGUgY29udGludW91cyBuZWlnaGJvcmluZyBydW5zIGZpcnN0CisgICAgICAgIGFu
ZCBleHBhbmQgdGhlIGN1cnJlbnQgcnVuIHdpdGggdGhlIGNvbnRpbnVvdXMgcmFuZ2UgaW4gb25l
IGdvLiBUaGlzIHNoYXZlcyBvZmYgfjIlIG9uIGxpbmUtbGF5b3V0LXNpbXBsZS5odG1sLgorCisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50Ojp3aWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6Omhhc1RyYWlsaW5n
RXhwYW5zaW9uT3Bwb3J0dW5pdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpD
b250aW5vdXNDb250ZW50OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmNhbk1lcmdlUnVucyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6Y2xvc2UpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKwogMjAxOS0xMS0yMiAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTGluZTo6aW5saW5lSXRlbUNvbnRl
bnRIZWlnaHQgc2hvdWxkIG9ubHkgY2FsbCBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JC
b3ggd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXggNDVhMTQ2OGVjNDg2MmQ1M2I0ZTI0NmNiZWQ2
ZTBjNmZkY2MwZTVjNC4uNGFmMGNmN2I4NTBkNmI0NDM5MzBlMDRmZDgzMzQyM2FmYTIzYzE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZS5jcHAKQEAgLTg1LDEwICs4NSw5OSBAQCB2b2lkIElubGluZUl0ZW1SdW46OnNldENv
bGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpCiAgICAgbV9sb2dpY2FsUmVjdC5zZXRXaWR0aCh7
IH0pOwogfQogCi1MaW5lOjpSdW46OlJ1bihjb25zdCBCb3gmIGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZSB0eXBlLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCkKLSAgICA6IG1f
bGF5b3V0Qm94KCZsYXlvdXRCb3gpCi0gICAgLCBtX3R5cGUodHlwZSkKK3N0cnVjdCBDb250aW5v
dXNDb250ZW50IHsKK3B1YmxpYzoKKyAgICBDb250aW5vdXNDb250ZW50KGNvbnN0IElubGluZUl0
ZW1SdW4mLCBib29sIHRleHRJc0FsaWduSnVzdGlmeSk7CisKKyAgICBib29sIGFwcGVuZChjb25z
dCBJbmxpbmVJdGVtUnVuJik7CisgICAgTGluZTo6UnVuIGNsb3NlKCk7CisKK3ByaXZhdGU6Cisg
ICAgc3RhdGljIGJvb2wgY2FuQmVFeHBhbmRlZChjb25zdCBJbmxpbmVJdGVtUnVuJiBydW4pIHsg
cmV0dXJuIHJ1bi5pc1RleHQoKSAmJiAhcnVuLmlzQ29sbGFwc2VkKCkgJiYgIXJ1bi5pc0NvbGxh
cHNlZFRvWmVyb0FkdmFuY2VXaWR0aCgpOyB9CisgICAgYm9vbCBjYW5CZU1lcmdlZChjb25zdCBJ
bmxpbmVJdGVtUnVuJiBydW4pIGNvbnN0IHsgcmV0dXJuIHJ1bi5pc1RleHQoKSAmJiAhcnVuLmlz
Q29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCkgJiYgJm1faW5pdGlhbElubGluZVJ1bi5sYXlv
dXRCb3goKSA9PSAmcnVuLmxheW91dEJveCgpOyB9CisKKyAgICBjb25zdCBJbmxpbmVJdGVtUnVu
JiBtX2luaXRpYWxJbmxpbmVSdW47CisgICAgY29uc3QgYm9vbCBtX3RleHRJc0FsaWduSnVzdGlm
eSB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV9leHBhbmRlZExlbmd0aCB7IDAgfTsKKyAgICBM
YXlvdXRVbml0IG1fZXhwYW5kZWRXaWR0aDsKKyAgICBib29sIG1fdHJhaWxpbmdSdW5DYW5CZUV4
cGFuZGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1
bml0eSB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50
IHsgMCB9OworfTsKKworQ29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudChjb25zdCBJ
bmxpbmVJdGVtUnVuJiBpbml0aWFsSW5saW5lUnVuLCBib29sIHRleHRJc0FsaWduSnVzdGlmeSkK
KyAgICA6IG1faW5pdGlhbElubGluZVJ1bihpbml0aWFsSW5saW5lUnVuKQorICAgICwgbV90ZXh0
SXNBbGlnbkp1c3RpZnkodGV4dElzQWxpZ25KdXN0aWZ5KQorICAgICwgbV90cmFpbGluZ1J1bkNh
bkJlRXhwYW5kZWQoY2FuQmVFeHBhbmRlZChpbml0aWFsSW5saW5lUnVuKSkKK3sKK30KKworYm9v
bCBDb250aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5saW5lSXRl
bVJ1bikKK3sKKyAgICAvLyBNZXJnZWQgY29udGVudCBuZWVkcyB0byBiZSBjb250aW51b3VzLgor
ICAgIGlmICghbV90cmFpbGluZ1J1bkNhbkJlRXhwYW5kZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWNhbkJlTWVyZ2VkKGlubGluZUl0ZW1SdW4pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX3RyYWlsaW5nUnVuQ2FuQmVFeHBhbmRlZCA9IGNhbkJlRXhwYW5kZWQo
aW5saW5lSXRlbVJ1bik7CisKKyAgICBBU1NFUlQoaW5saW5lSXRlbVJ1bi5pc1RleHQoKSk7Cisg
ICAgbV9leHBhbmRlZExlbmd0aCArPSBpbmxpbmVJdGVtUnVuLnRleHRDb250ZXh0KCktPmxlbmd0
aCgpOworICAgIG1fZXhwYW5kZWRXaWR0aCArPSBpbmxpbmVJdGVtUnVuLmxvZ2ljYWxSZWN0KCku
d2lkdGgoKTsKKworICAgIGlmIChtX3RleHRJc0FsaWduSnVzdGlmeSkgeworICAgICAgICBtX2hh
c1RyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkgPSBpbmxpbmVJdGVtUnVuLmhhc0V4cGFuc2lv
bk9wcG9ydHVuaXR5KCk7CisgICAgICAgIGlmIChtX2hhc1RyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0
dW5pdHkpCisgICAgICAgICAgICArK21fZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudDsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0xpbmU6OlJ1biBDb250aW5vdXNDb250ZW50OjpjbG9z
ZSgpCit7CisgICAgaWYgKCFtX2V4cGFuZGVkTGVuZ3RoKQorICAgICAgICByZXR1cm4geyBtX2lu
aXRpYWxJbmxpbmVSdW4gfTsKKyAgICAvLyBFeHBhbmQgdGhlIHRleHQgY29udGVudCBhbmQgc2V0
IHRoZSBleHBhbnNpb24gb3Bwb3J0dW5pdGllcy4KKyAgICBBU1NFUlQobV9pbml0aWFsSW5saW5l
UnVuLmlzVGV4dCgpKTsKKyAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gbV9pbml0aWFsSW5saW5lUnVu
LmxvZ2ljYWxSZWN0KCk7CisgICAgbG9naWNhbFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KG1fZXhw
YW5kZWRXaWR0aCk7CisKKyAgICBhdXRvIHRleHRDb250ZXh0ID0gKm1faW5pdGlhbElubGluZVJ1
bi50ZXh0Q29udGV4dCgpOworICAgIGF1dG8gbGVuZ3RoID0gdGV4dENvbnRleHQubGVuZ3RoKCkg
KyBtX2V4cGFuZGVkTGVuZ3RoOworICAgIHRleHRDb250ZXh0LmV4cGFuZChtX2luaXRpYWxJbmxp
bmVSdW4ubGF5b3V0Qm94KCkudGV4dENvbnRleHQoKS5jb250ZW50LnN1YnN0cmluZyh0ZXh0Q29u
dGV4dC5zdGFydCgpLCBsZW5ndGgpLCBsZW5ndGgpOworCisgICAgaWYgKG1fdGV4dElzQWxpZ25K
dXN0aWZ5KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZXhwYW5z
aW9uIG1lcmdlLiBXZSBzaG91bGQgZXZlbnR1YWxseSBzd2l0Y2ggb3ZlciB0byBGb250Q2FzY2Fk
ZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudC4KKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uQmVoYXZpb3IgPSBtX2hhc1RyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkgPyAo
Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiB8IEFsbG93VHJhaWxpbmdFeHBhbnNpb24pIDogKEFsbG93
TGVhZGluZ0V4cGFuc2lvbiB8IEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOworICAgICAgICBpZiAo
bV9pbml0aWFsSW5saW5lUnVuLmhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkpCisgICAgICAgICAg
ICArK21fZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudDsKKyAgICAgICAgdGV4dENvbnRleHQuc2V0
RXhwYW5zaW9uKHsgZXhwYW5zaW9uQmVoYXZpb3IsIHsgfSB9KTsKKyAgICB9CisgICAgcmV0dXJu
IHsgbV9pbml0aWFsSW5saW5lUnVuLCBsb2dpY2FsUmVjdCwgdGV4dENvbnRleHQsIG1fZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCB9OworfQorCitMaW5lOjpSdW46OlJ1bihjb25zdCBJbmxpbmVJ
dGVtUnVuJiBpbmxpbmVJdGVtUnVuKQorICAgIDogbV9sYXlvdXRCb3goJmlubGluZUl0ZW1SdW4u
bGF5b3V0Qm94KCkpCisgICAgLCBtX3R5cGUoaW5saW5lSXRlbVJ1bi50eXBlKCkpCisgICAgLCBt
X2xvZ2ljYWxSZWN0KGlubGluZUl0ZW1SdW4ubG9naWNhbFJlY3QoKSkKKyAgICAsIG1fdGV4dENv
bnRleHQoaW5saW5lSXRlbVJ1bi50ZXh0Q29udGV4dCgpKQorICAgICwgbV9pc0NvbGxhcHNlZFRv
VmlzdWFsbHlFbXB0eShpbmxpbmVJdGVtUnVuLmlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRo
KCkpCit7CisgICAgaWYgKGlubGluZUl0ZW1SdW4uaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSkg
eworICAgICAgICBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSAxOworICAgICAgICBBU1NF
UlQobV90ZXh0Q29udGV4dCk7CisgICAgICAgIG1fdGV4dENvbnRleHQtPnNldEV4cGFuc2lvbih7
IERlZmF1bHRFeHBhbnNpb24sIHsgfSB9KTsKKyAgICB9Cit9CisKK0xpbmU6OlJ1bjo6UnVuKGNv
bnN0IElubGluZUl0ZW1SdW4mIGlubGluZUl0ZW1SdW4sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxv
Z2ljYWxSZWN0LCBjb25zdCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0JiB0ZXh0Q29udGV4dCwg
dW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKKyAgICA6IG1fbGF5b3V0Qm94KCZp
bmxpbmVJdGVtUnVuLmxheW91dEJveCgpKQorICAgICwgbV90eXBlKGlubGluZUl0ZW1SdW4udHlw
ZSgpKQogICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKKyAgICAsIG1fdGV4dENvbnRl
eHQodGV4dENvbnRleHQpCisgICAgLCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCkKKyAgICAsIG1faXNDb2xsYXBzZWRUb1Zpc3VhbGx5RW1wdHko
aW5saW5lSXRlbVJ1bi5pc0NvbGxhcHNlZFRvWmVyb0FkdmFuY2VXaWR0aCgpKQogewogfQogCkBA
IC0xMDcsMTQgKzE5Niw2IEBAIGlubGluZSBPcHRpb25hbDxFeHBhbnNpb25CZWhhdmlvcj4gTGlu
ZTo6UnVuOjpleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBMaW5lOjpSdW46OnNldEhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KEV4cGFuc2lvbkJlaGF2
aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQotewotICAgIEFTU0VSVChpc1RleHQoKSk7Ci0gICAgQVNT
RVJUKCFoYXNFeHBhbnNpb25PcHBvcnR1bml0eSgpKTsKLSAgICBtX2V4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnQgPSAxOwotICAgIG1fdGV4dENvbnRleHQtPnNldEV4cGFuc2lvbih7IGV4cGFuc2lv
bkJlaGF2aW9yLCB7IH0gfSk7Ci19Ci0KIHZvaWQgTGluZTo6UnVuOjpzZXRDb21wdXRlZEhvcml6
b250YWxFeHBhbnNpb24oTGF5b3V0VW5pdCBsb2dpY2FsRXhwYW5zaW9uKQogewogICAgIEFTU0VS
VChpc1RleHQoKSk7CkBAIC0xMjMsMzAgKzIwNCw2IEBAIHZvaWQgTGluZTo6UnVuOjpzZXRDb21w
dXRlZEhvcml6b250YWxFeHBhbnNpb24oTGF5b3V0VW5pdCBsb2dpY2FsRXhwYW5zaW9uKQogICAg
IG1fdGV4dENvbnRleHQtPnNldEV4cGFuc2lvbih7IG1fdGV4dENvbnRleHQtPmV4cGFuc2lvbigp
LT5iZWhhdmlvciwgbG9naWNhbEV4cGFuc2lvbiB9KTsKIH0KIAotdm9pZCBMaW5lOjpSdW46OmV4
cGFuZChjb25zdCBJbmxpbmVJdGVtUnVuJiBuZXh0UnVuKQotewotICAgIEFTU0VSVChpc1RleHQo
KSk7Ci0gICAgQVNTRVJUKG5leHRSdW4uaXNUZXh0KCkpOwotICAgIEFTU0VSVCghaXNDb2xsYXBz
ZWRUb1Zpc3VhbGx5RW1wdHkoKSk7Ci0KLSAgICBtX2xvZ2ljYWxSZWN0LmV4cGFuZEhvcml6b250
YWxseShuZXh0UnVuLmxvZ2ljYWxSZWN0KCkud2lkdGgoKSk7Ci0gICAgYXV0byBleHBhbmRlZExl
bmd0aCA9IG1fdGV4dENvbnRleHQtPmxlbmd0aCgpICsgbmV4dFJ1bi50ZXh0Q29udGV4dCgpLT5s
ZW5ndGgoKTsKLSAgICBtX3RleHRDb250ZXh0LT5leHBhbmQobGF5b3V0Qm94KCkudGV4dENvbnRl
eHQoKS5jb250ZW50LnN1YnN0cmluZyhtX3RleHRDb250ZXh0LT5zdGFydCgpLCBleHBhbmRlZExl
bmd0aCksIGV4cGFuZGVkTGVuZ3RoKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSBz
aW1wbGUgZXhwYW5zaW9uIG1lcmdlLiBXZSBzaG91bGQgZXZlbnR1YWxseSBzd2l0Y2ggb3ZlciB0
byBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudC4gCi0gICAgaWYgKGhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5KCkgJiYgbmV4dFJ1bi5oYXNFeHBhbnNpb25PcHBvcnR1bml0eSgp
KSB7Ci0gICAgICAgIC8vIFJ1biBpcyBleHBhbmRlZCB3aXRoIGEgd2hpdGVzcGFjZSBjb250ZW50
LgotICAgICAgICBhZGp1c3RFeHBhbnNpb25CZWhhdmlvcihGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
IHwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7Ci0gICAgICAgICsrbV9leHBhbnNpb25PcHBvcnR1
bml0eUNvdW50OwotICAgIH0gZWxzZSBpZiAoIWhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgJiYg
bmV4dFJ1bi5oYXNFeHBhbnNpb25PcHBvcnR1bml0eSgpKSB7Ci0gICAgICAgIC8vIE5vbndoaXRl
c3BhY2UgcnVucyBpcyBleHBhbmRlZCB3aXRoIHdoaXRlc3BhY2UuCi0gICAgICAgIHNldEhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5KEZvcmJpZExlYWRpbmdFeHBhbnNpb24gfCBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uKTsKLSAgICB9IGVsc2UgaWYgKGhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgJiYg
IW5leHRSdW4uaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSkgewotICAgICAgICAvLyBSdW4gaXMg
ZXhwYW5kZWQgd2l0aCBhIG5vbndoaXRlc3BhY2UgY29udGVudC4KLSAgICAgICAgYWRqdXN0RXhw
YW5zaW9uQmVoYXZpb3IoQWxsb3dMZWFkaW5nRXhwYW5zaW9uIHwgQWxsb3dUcmFpbGluZ0V4cGFu
c2lvbik7Ci0gICAgfQotfQotCiBMaW5lOjpMaW5lKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiBp
bml0aWFsQ29uc3RyYWludHMsIE9wdGlvbmFsPFRleHRBbGlnbk1vZGU+IGhvcml6b250YWxBbGln
bm1lbnQsIFNraXBBbGlnbm1lbnQgc2tpcEFsaWdubWVudCkKICAgICA6IG1faW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2luaXRpYWxTdHJ1
dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUgPyBpbml0aWFsQ29uc3RyYWlu
dHMuaGVpZ2h0QW5kQmFzZWxpbmUtPnN0cnV0IDogV1RGOjpudWxsb3B0KQpAQCAtMjMxLDQ5ICsy
ODgsMTUgQEAgTGluZTo6UnVuTGlzdCBMaW5lOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNv
bnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW4KICAgICAvLyAzLiBBbGlnbiBtZXJnZWQg
cnVucyBib3RoIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS4KICAgICByZW1vdmVUcmFpbGlu
Z1RyaW1tYWJsZUNvbnRlbnQoKTsKICAgICBSdW5MaXN0IHJ1bkxpc3Q7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpOyArK2kpIHsKLQotICAgICAg
ICBhdXRvIGNvbnN0cnVjdFJ1biA9IFsmXSAoY29uc3QgYXV0byYgaW5saW5lSXRlbVJ1bikgewot
ICAgICAgICAgICAgcnVuTGlzdC5hcHBlbmQoUnVuIHsgaW5saW5lSXRlbVJ1bi5sYXlvdXRCb3go
KSwgaW5saW5lSXRlbVJ1bi50eXBlKCksIGlubGluZUl0ZW1SdW4ubG9naWNhbFJlY3QoKSB9KTsK
LSAgICAgICAgICAgIGlmICghaW5saW5lSXRlbVJ1bi5pc1RleHQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bkxpc3QubGFzdCgpOwotICAg
ICAgICAgICAgaWYgKGlubGluZUl0ZW1SdW4uaXNDb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGgo
KSkKLSAgICAgICAgICAgICAgICBydW4uc2V0SXNDb2xsYXBzZWRUb1Zpc3VhbGx5RW1wdHkoKTsK
LSAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb250ZXh0ID0gaW5saW5lSXRlbVJ1bi50ZXh0Q29u
dGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgcnVuLnNldFRleHRDb250ZXh0KCp0ZXh0Q29udGV4
dCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzVGV4dEFsaWduSnVzdGlmeSgpICYmIGlubGluZUl0
ZW1SdW4uaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcnVu
LnNldEhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KERlZmF1bHRFeHBhbnNpb24pOwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0cnVjdFJ1bigqbV9pbmxpbmVJdGVtUnVu
c1tpXSk7CisgICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOworICAgIHdoaWxlIChydW5JbmRleCA8
IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE1lcmdlIGVsaWdpYmxlIHJ1
bnMuCi0gICAgICAgIHdoaWxlIChpIDwgbV9pbmxpbmVJdGVtUnVucy5zaXplKCkgLSAxKSB7Ci0g
ICAgICAgICAgICBhdXRvIGNhbk1lcmdlUnVucyA9IFtdIChjb25zdCBhdXRvJiBjdXJyZW50UnVu
LCBjb25zdCBhdXRvJiBuZXh0UnVuKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG8gbm90IG1lcmdl
IHJ1bnMgYWNyb3NzIGlubGluZSBib3hlcyAoPHNwYW4+Zm9vPC9zcGFuPjxzcGFuPmJhcjwvc3Bh
bj4pCi0gICAgICAgICAgICAgICAgaWYgKCZjdXJyZW50UnVuLmxheW91dEJveCgpICE9ICZuZXh0
UnVuLmxheW91dEJveCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgLy8gT25seSB0ZXh0IGNvbnRlbnQgY2FuIGJlIG1lcmdlZC4KLSAgICAgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRSdW4uaXNUZXh0KCkgfHwgIW5leHRSdW4uaXNUZXh0KCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAvLyBNZXJn
ZWQgY29udGVudCBuZWVkcyB0byBiZSBjb250aW51b3VzLgotICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50UnVuLmlzQ29sbGFwc2VkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAvLyBWaXN1YWxseSBlbXB0eSBydW5zIGFyZSBpZ25vcmVkLgot
ICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UnVuLmlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdp
ZHRoKCkgfHwgbmV4dFJ1bi5pc0NvbGxhcHNlZFRvWmVyb0FkdmFuY2VXaWR0aCgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYXV0byYgY3VycmVudFJ1biA9IG1faW5saW5l
SXRlbVJ1bnNbaV07Ci0gICAgICAgICAgICBhdXRvJiBuZXh0UnVuID0gbV9pbmxpbmVJdGVtUnVu
c1tpICsgMV07Ci0gICAgICAgICAgICBpZiAoIWNhbk1lcmdlUnVucygqY3VycmVudFJ1biwgKm5l
eHRSdW4pKQorICAgICAgICBhdXRvIGNvbnRpbm91c0NvbnRlbnQgPSBDb250aW5vdXNDb250ZW50
IHsgKm1faW5saW5lSXRlbVJ1bnNbcnVuSW5kZXhdLCBpc1RleHRBbGlnbkp1c3RpZnkoKSB9Owor
ICAgICAgICB3aGlsZSAoKytydW5JbmRleCA8IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWNvbnRpbm91c0NvbnRlbnQuYXBwZW5kKCptX2lubGluZUl0ZW1SdW5z
W3J1bkluZGV4XSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBydW5MaXN0
Lmxhc3QoKS5leHBhbmQoKm5leHRSdW4pOwotICAgICAgICAgICAgLy8gU2tpcCB0aGUgbWVyZ2Vk
IHJ1bi4KLSAgICAgICAgICAgICsraTsKICAgICAgICAgfQorICAgICAgICBydW5MaXN0LmFwcGVu
ZChjb250aW5vdXNDb250ZW50LmNsb3NlKCkpOwogICAgIH0KIAogICAgIGlmICghbV9za2lwQWxp
Z25tZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmgKaW5kZXggN2M5OTBlYTgwOGU2YmFjNjRlMDE4NDVmNTM5OTJlOGFjNGYx
YjZhOS4uNzA3NzE5MWU4NTkzOWZkYzczOGRhNTU1MDJlN2JlNzk5ZTk4YTQyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApA
QCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7
CiAKK3N0cnVjdCBDb250aW5vdXNDb250ZW50OwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ7CiBjbGFzcyBJbmxpbmVJdGVtUnVuOwogCkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1vdmVMb2dpY2FsUmlnaHQoTGF5b3V0VW5pdCk7CiAKICAgICBzdHJ1Y3QgUnVuIHsK
KyAgICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW1SdW4mKTsKKyAgICAgICAgUnVuKGNvbnN0IElu
bGluZUl0ZW1SdW4mLCBjb25zdCBEaXNwbGF5OjpSZWN0JiwgY29uc3QgRGlzcGxheTo6UnVuOjpU
ZXh0Q29udGV4dCYsIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpOwogICAgICAg
ICBSdW4oUnVuJiYpID0gZGVmYXVsdDsKICAgICAgICAgUnVuJiBvcGVyYXRvcj0oUnVuJiYgb3Ro
ZXIpID0gZGVmYXVsdDsKIApAQCAtODQsMTcgKzg3LDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5lOwotICAgICAgICBSdW4oY29uc3QgQm94Jiwg
SW5saW5lSXRlbTo6VHlwZSwgY29uc3QgRGlzcGxheTo6UmVjdCYpOwogCi0gICAgICAgIHZvaWQg
ZXhwYW5kKGNvbnN0IElubGluZUl0ZW1SdW4mKTsKICAgICAgICAgdm9pZCBhZGp1c3RMb2dpY2Fs
VG9wKExheW91dFVuaXQgbG9naWNhbFRvcCkgeyBtX2xvZ2ljYWxSZWN0LnNldFRvcChsb2dpY2Fs
VG9wKTsgfQogICAgICAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBvZmZzZXQp
IHsgbV9sb2dpY2FsUmVjdC5tb3ZlSG9yaXpvbnRhbGx5KG9mZnNldCk7IH0KICAgICAgICAgdm9p
ZCBtb3ZlVmVydGljYWxseShMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xvZ2ljYWxSZWN0Lm1vdmVW
ZXJ0aWNhbGx5KG9mZnNldCk7IH0KIAotICAgICAgICB2b2lkIHNldFRleHRDb250ZXh0KGNvbnN0
IERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgdGV4dENvbnRleHQpIHsgbV90ZXh0Q29udGV4dCA9
IHRleHRDb250ZXh0OyB9Ci0gICAgICAgIHZvaWQgc2V0SXNDb2xsYXBzZWRUb1Zpc3VhbGx5RW1w
dHkoKSB7IG1faXNDb2xsYXBzZWRUb1Zpc3VhbGx5RW1wdHkgPSB0cnVlOyB9Ci0KLSAgICAgICAg
dm9pZCBzZXRIYXNFeHBhbnNpb25PcHBvcnR1bml0eShFeHBhbnNpb25CZWhhdmlvcik7CiAgICAg
ICAgIGJvb2wgaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX2V4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQ7IH0KICAgICAgICAgT3B0aW9uYWw8RXhwYW5zaW9uQmVoYXZp
b3I+IGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>