<?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>190448</bug_id>
          
          <creation_ts>2018-10-10 15:18:07 -0700</creation_ts>
          <short_desc>Use std::optional&lt;size_t&gt; for a WebBackForwardList&apos;s current index</short_desc>
          <delta_ts>2018-10-15 08:26:25 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467850</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-10 15:18:07 -0700</bug_when>
    <thetext>Use std::optional&lt;size_t&gt; for a WebBackForwardList&apos;s current index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467851</commentid>
    <comment_count>1</comment_count>
      <attachid>351993</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-10 15:18:39 -0700</bug_when>
    <thetext>Created attachment 351993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469229</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-15 08:25:27 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/237100/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469234</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-15 08:26:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/45271685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351993</attachid>
            <date>2018-10-10 15:18:39 -0700</date>
            <delta_ts>2018-10-12 17:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190448-20181010151839.patch</filename>
            <type>text/plain</type>
            <size>18271</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcwMTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBmb3IgYSBXZWJCYWNrRm9yd2FyZExpc3QncyBjdXJyZW50IGluZGV4Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHJlbW92
ZSBtX2NhcGFjaXR5LCB3aGljaCB3YXMgaW1tdXRhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0OjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0OjphZGRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpnb1Rv
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRM
aXN0Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJh
Y2tMaXN0QXNBUElBcnJheVdpdGhMaW1pdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RBc0FQSUFycmF5V2l0aExpbWl0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVBbGxJdGVtcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdDo6Y3VycmVudEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOC0xMC0x
MCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFy
ZSBtb3JlIFdLU2hhcmVTaGVldCBjb2RlIGJldHdlZW4gbWFjT1MgYW5kIGlPUywgYW5kIGZpeCBh
IGZldyBidWdzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAJKHJldmlzaW9uIDIzNjk3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDYgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIERlZmF1bHRDYXBhY2l0eSA9IAogCiBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3Bh
Z2UoJnBhZ2UpCi0gICAgLCBtX2hhc0N1cnJlbnRJbmRleChmYWxzZSkKLSAgICAsIG1fY3VycmVu
dEluZGV4KDApCi0gICAgLCBtX2NhcGFjaXR5KERlZmF1bHRDYXBhY2l0eSkKIHsKICAgICBMT0co
QmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBDcmVhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdCAl
cCIsIHRoaXMpOwogfQpAQCAtNTQsNyArNTEsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJC
YWNrRm9yd2FyZExpc3QoCiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgRGVz
dHJveWluZyBXZWJCYWNrRm9yd2FyZExpc3QgJXAiLCB0aGlzKTsKIAogICAgIC8vIEEgV2ViQmFj
a0ZvcndhcmRMaXN0IHNob3VsZCBuZXZlciBiZSBkZXN0cm95ZWQgdW5sZXNzIGl0J3MgYXNzb2Np
YXRlZCBwYWdlIGhhcyBiZWVuIGNsb3NlZCBvciBpcyBpbnZhbGlkLgotICAgIEFTU0VSVCgoIW1f
cGFnZSAmJiAhbV9oYXNDdXJyZW50SW5kZXgpIHx8ICFtX3BhZ2UtPmlzVmFsaWQoKSk7CisgICAg
QVNTRVJUKCghbV9wYWdlICYmICFtX2N1cnJlbnRJbmRleCkgfHwgIW1fcGFnZS0+aXNWYWxpZCgp
KTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0OjppdGVt
Rm9ySUQoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTg1
LDIzICs4MiwyMyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cGFnZUNsb3NlZCgpCiAKICAg
ICBtX3BhZ2UgPSBudWxscHRyOwogICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgIG1faGFzQ3Vy
cmVudEluZGV4ID0gZmFsc2U7CisgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPiYmIG5ld0l0ZW0pCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBt
X2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50
SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKLSAgICBpZiAo
IW1fY2FwYWNpdHkgfHwgIW1fcGFnZSkKKyAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0ZW1z
OwogICAgIAotICAgIGlmIChtX2hhc0N1cnJlbnRJbmRleCkgeworICAgIGlmIChtX2N1cnJlbnRJ
bmRleCkgewogICAgICAgICBtX3BhZ2UtPnJlY29yZEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hv
dCgpOwogCiAgICAgICAgIC8vIFRvc3MgZXZlcnl0aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0Lgot
ICAgICAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gbV9jdXJyZW50SW5kZXggKyAxOworICAgICAg
ICB1bnNpZ25lZCB0YXJnZXRTaXplID0gKm1fY3VycmVudEluZGV4ICsgMTsKICAgICAgICAgcmVt
b3ZlZEl0ZW1zLnJlc2VydmVDYXBhY2l0eShtX2VudHJpZXMuc2l6ZSgpIC0gdGFyZ2V0U2l6ZSk7
CiAgICAgICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewogICAgICAg
ICAgICAgZGlkUmVtb3ZlSXRlbShtX2VudHJpZXMubGFzdCgpKTsKQEAgLTExMSwxNSArMTA4LDE1
IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWIKIAogICAgICAgICAv
LyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBsaXN0IGlzIGdldHRpbmcgdG9vIGJpZywgYXMg
bG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKICAgICAgICAgLy8gKG9yIGV2ZW4gaWYgd2UgYXJl
LCBpZiB3ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCi0gICAgICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudEluZGV4IHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsK
KyAgICAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPj0gRGVmYXVsdENhcGFjaXR5ICYmICgqbV9j
dXJyZW50SW5kZXgpKSB7CiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKG1fZW50cmllc1swXSk7
CiAgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzWzBdKSk7
CiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwogCiAgICAgICAgICAgICBpZiAobV9l
bnRyaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX2hhc0N1cnJlbnRJbmRleCA9IGZh
bHNlOworICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4LS07CisgICAgICAg
ICAgICAgICAgLS0qbV9jdXJyZW50SW5kZXg7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBJZiB3ZSBoYXZlIG5vIGN1cnJlbnQgaXRlbSBpbmRleCB3ZSBzaG91bGQgYWxzbyBu
b3QgaGF2ZSBhbnkgZW50cmllcy4KQEAgLTEzNiw0MiArMTMzLDQxIEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWIKIAogICAgIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRJ
dGVtID0gdHJ1ZTsKIAotICAgIGlmICghbV9oYXNDdXJyZW50SW5kZXgpIHsKKyAgICBpZiAoIW1f
Y3VycmVudEluZGV4KSB7CiAgICAgICAgIEFTU0VSVChtX2VudHJpZXMuaXNFbXB0eSgpKTsKICAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSAwOwotICAgICAgICBtX2hhc0N1cnJlbnRJbmRleCA9IHRy
dWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2hvdWxkS2VlcEN1cnJlbnRJdGVtID0gbV9wYWdl
LT5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QobV9lbnRyaWVzW21f
Y3VycmVudEluZGV4XSk7CisgICAgICAgIHNob3VsZEtlZXBDdXJyZW50SXRlbSA9IG1fcGFnZS0+
c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KG1fZW50cmllc1sqbV9j
dXJyZW50SW5kZXhdKTsKICAgICAgICAgaWYgKHNob3VsZEtlZXBDdXJyZW50SXRlbSkKLSAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4Kys7CisgICAgICAgICAgICArKyptX2N1cnJlbnRJbmRleDsK
ICAgICB9CiAKICAgICBhdXRvKiBuZXdJdGVtUHRyID0gbmV3SXRlbS5wdHIoKTsKICAgICBpZiAo
IXNob3VsZEtlZXBDdXJyZW50SXRlbSkgewogICAgICAgICAvLyBtX2N1cnJlbnQgc2hvdWxkIG5l
dmVyIGJlIHBvaW50aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgZW50cmllcyBWZWN0b3IuCiAgICAg
ICAgIC8vIElmIGl0IGlzLCBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcgYW5kIHdlIHNob3VsZCBu
b3QgdHJ5IHRvIHN3YXAgaW4gdGhlIG5ldyBpdGVtLgotICAgICAgICBBU1NFUlQobV9jdXJyZW50
SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKCptX2N1cnJlbnRJbmRl
eCA8IG1fZW50cmllcy5zaXplKCkpOwogCi0gICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9l
bnRyaWVzW21fY3VycmVudEluZGV4XS5jb3B5UmVmKCkpOwotICAgICAgICBtX2VudHJpZXNbbV9j
dXJyZW50SW5kZXhdID0gV1RGTW92ZShuZXdJdGVtKTsKKyAgICAgICAgcmVtb3ZlZEl0ZW1zLmFw
cGVuZChtX2VudHJpZXNbKm1fY3VycmVudEluZGV4XS5jb3B5UmVmKCkpOworICAgICAgICBtX2Vu
dHJpZXNbKm1fY3VycmVudEluZGV4XSA9IFdURk1vdmUobmV3SXRlbSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gbV9jdXJyZW50IHNob3VsZCBuZXZlciBiZSBwb2ludGluZyBtb3JlIHRoYW4g
MSBwYXN0IHRoZSBlbmQgb2YgdGhlIGVudHJpZXMgVmVjdG9yLgogICAgICAgICAvLyBJZiBpdCBp
cywgc29tZXRoaW5nIGhhcyBnb25lIHdyb25nIGFuZCB3ZSBzaG91bGQgbm90IHRyeSB0byBpbnNl
cnQgdGhlIG5ldyBpdGVtLgotICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPD0gbV9lbnRy
aWVzLnNpemUoKSk7CisgICAgICAgIEFTU0VSVCgqbV9jdXJyZW50SW5kZXggPD0gbV9lbnRyaWVz
LnNpemUoKSk7CiAKLSAgICAgICAgaWYgKG1fY3VycmVudEluZGV4IDw9IG1fZW50cmllcy5zaXpl
KCkpCi0gICAgICAgICAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVudEluZGV4LCBXVEZNb3Zl
KG5ld0l0ZW0pKTsKKyAgICAgICAgaWYgKCptX2N1cnJlbnRJbmRleCA8PSBtX2VudHJpZXMuc2l6
ZSgpKQorICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydCgqbV9jdXJyZW50SW5kZXgsIFdURk1v
dmUobmV3SXRlbSkpOwogICAgIH0KIAotICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zvcndh
cmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCBhZGRlZCBhbiBpdGVtLiBDdXJyZW50IHNpemUgJXp1
LCBjdXJyZW50IGluZGV4ICV6dSwgdGhyZXcgYXdheSAlenUgaXRlbXMiLCB0aGlzLCBtX2VudHJp
ZXMuc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgcmVtb3ZlZEl0ZW1zLnNpemUoKSk7CisgICAgTE9H
KEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0ICVwIGFkZGVk
IGFuIGl0ZW0uIEN1cnJlbnQgc2l6ZSAlenUsIGN1cnJlbnQgaW5kZXggJXp1LCB0aHJldyBhd2F5
ICV6dSBpdGVtcyIsIHRoaXMsIG1fZW50cmllcy5zaXplKCksICptX2N1cnJlbnRJbmRleCwgcmVt
b3ZlZEl0ZW1zLnNpemUoKSk7CiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qo
bmV3SXRlbVB0ciwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKIH0KIAogdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3Q6OmdvVG9JdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5z
aXplKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKSk7CiAKLSAgICBpZiAoIW1fZW50cmllcy5zaXplKCkgfHwgIW1fcGFn
ZSB8fCAhbV9oYXNDdXJyZW50SW5kZXgpCisgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpIHx8ICFt
X3BhZ2UgfHwgIW1fY3VycmVudEluZGV4KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3Qg
dGFyZ2V0SW5kZXggPSBub3RGb3VuZDsKQEAgLTE4OCw3ICsxODQsNyBAQCB2b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oV2ViQmFjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAodGFyZ2V0SW5kZXggPCBtX2N1cnJlbnRJbmRleCkgeworICAgIGlmICh0YXJnZXRJbmRl
eCA8ICptX2N1cnJlbnRJbmRleCkgewogICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IG1fZW50cmll
cy5zaXplKCkgLSB0YXJnZXRJbmRleCAtIDE7CiAgICAgICAgIFN0cmluZyBkZWx0YVZhbHVlID0g
ZGVsdGEgPiAxMCA/ICJvdmVyMTAiX3MgOiBTdHJpbmc6Om51bWJlcihkZWx0YSk7CiAgICAgICAg
IG1fcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpiYWNrTmF2aWdhdGlvbkRlbHRhS2V5KCksIGRlbHRhVmFsdWUsIFNob3VsZFNhbXBsZTo6
Tm8pOwpAQCAtMTk2LDE4ICsxOTIsMTggQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmdvVG9J
dGVtKFdlYkJhYwogCiAgICAgLy8gSWYgd2UncmUgZ29pbmcgdG8gYW4gaXRlbSBkaWZmZXJlbnQg
ZnJvbSB0aGUgY3VycmVudCBpdGVtLCBhc2sgdGhlIGNsaWVudCBpZiB0aGUgY3VycmVudAogICAg
IC8vIGl0ZW0gc2hvdWxkIHJlbWFpbiBpbiB0aGUgbGlzdC4KLSAgICBhdXRvJiBjdXJyZW50SXRl
bSA9IG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF07CisgICAgYXV0byYgY3VycmVudEl0ZW0gPSBt
X2VudHJpZXNbKm1fY3VycmVudEluZGV4XTsKICAgICBib29sIHNob3VsZEtlZXBDdXJyZW50SXRl
bSA9IHRydWU7CiAgICAgaWYgKGN1cnJlbnRJdGVtLnB0cigpICE9ICZpdGVtKSB7CiAgICAgICAg
IG1fcGFnZS0+cmVjb3JkQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90KCk7Ci0gICAgICAgIHNo
b3VsZEtlZXBDdXJyZW50SXRlbSA9IG1fcGFnZS0+c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2Fy
ZExpc3RJdGVtSW5MaXN0KG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0pOworICAgICAgICBzaG91
bGRLZWVwQ3VycmVudEl0ZW0gPSBtX3BhZ2UtPnNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRM
aXN0SXRlbUluTGlzdChtX2VudHJpZXNbKm1fY3VycmVudEluZGV4XSk7CiAgICAgfQogCiAgICAg
Ly8gSWYgdGhlIGNsaWVudCBzYWlkIHRvIHJlbW92ZSB0aGUgY3VycmVudCBpdGVtLCByZW1vdmUg
aXQgYW5kIHRoZW4gdXBkYXRlIHRoZSB0YXJnZXQgaW5kZXguCiAgICAgVmVjdG9yPFJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0ZW1zOwogICAgIGlmICghc2hvdWxkS2VlcEN1
cnJlbnRJdGVtKSB7CiAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoY3VycmVudEl0ZW0uY29w
eVJlZigpKTsKLSAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgIG1fZW50cmllcy5yZW1vdmUoKm1fY3VycmVudEluZGV4KTsKICAgICAgICAgdGFyZ2V0SW5k
ZXggPSBub3RGb3VuZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJpZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtX2VudHJpZXNbaV0ucHRyKCkgPT0gJml0
ZW0pIHsKQEAgLTIyNiwzMCArMjIyLDMwIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1Rv
SXRlbShXZWJCYWMKIAogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0
OjpjdXJyZW50SXRlbSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8
fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCghbV9jdXJy
ZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlICYmIG1faGFzQ3VycmVudEluZGV4ID8gbV9lbnRyaWVzW21fY3VycmVudElu
ZGV4XS5wdHIoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fcGFnZSAmJiBtX2N1cnJlbnRJbmRl
eCA/IG1fZW50cmllc1sqbV9jdXJyZW50SW5kZXhdLnB0cigpIDogbnVsbHB0cjsKIH0KIAogV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1f
ZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVu
dEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKLSAgICByZXR1cm4gbV9wYWdlICYmIG1faGFz
Q3VycmVudEluZGV4ICYmIG1fY3VycmVudEluZGV4ID8gbV9lbnRyaWVzW21fY3VycmVudEluZGV4
IC0gMV0ucHRyKCkgOiBudWxscHRyOworICAgIHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5k
ZXggJiYgKm1fY3VycmVudEluZGV4ID8gbV9lbnRyaWVzWyptX2N1cnJlbnRJbmRleCAtIDFdLnB0
cigpIDogbnVsbHB0cjsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0Zvcndh
cmRMaXN0Ojpmb3J3YXJkSXRlbSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJ
bmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCgh
bV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAK
LSAgICByZXR1cm4gbV9wYWdlICYmIG1faGFzQ3VycmVudEluZGV4ICYmIG1fZW50cmllcy5zaXpl
KCkgJiYgbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSA/IG1fZW50cmllc1tt
X2N1cnJlbnRJbmRleCArIDFdLnB0cigpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9wYWdlICYm
IG1fY3VycmVudEluZGV4ICYmIG1fZW50cmllcy5zaXplKCkgJiYgKm1fY3VycmVudEluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEgPyBtX2VudHJpZXNbKm1fY3VycmVudEluZGV4ICsgMV0ucHRy
KCkgOiBudWxscHRyOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2Fy
ZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1faGFz
Q3VycmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CisgICAg
QVNTRVJUKCFtX2N1cnJlbnRJbmRleCB8fCAqbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6
ZSgpKTsKIAotICAgIGlmICghbV9oYXNDdXJyZW50SW5kZXggfHwgIW1fcGFnZSkKKyAgICBpZiAo
IW1fY3VycmVudEluZGV4IHx8ICFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8g
YXZvaWQgb3ZlcmZsb3cuCkBAIC0yNTksMjEgKzI1NSwyMSBAQCBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBXZWJCYWNrRm9yd2FyZExpCiAgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudEluZGV4XS5wdHIoKTsKKyAgICByZXR1cm4gbV9lbnRyaWVzW2lu
ZGV4ICsgKm1fY3VycmVudEluZGV4XS5wdHIoKTsKIH0KIAogaW50IFdlYkJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3RDb3VudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRl
eCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCghbV9j
dXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKLSAg
ICByZXR1cm4gbV9wYWdlICYmIG1faGFzQ3VycmVudEluZGV4ID8gbV9jdXJyZW50SW5kZXggOiAw
OworICAgIHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXgg
OiAwOwogfQogCiBpbnQgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoIW1faGFzQ3VycmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKSk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRJbmRleCB8fCAqbV9jdXJy
ZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKIAotICAgIHJldHVybiBtX3BhZ2UgJiYgbV9o
YXNDdXJyZW50SW5kZXggPyBtX2VudHJpZXMuc2l6ZSgpIC0gKG1fY3VycmVudEluZGV4ICsgMSkg
OiAwOworICAgIHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5kZXggPyBtX2VudHJpZXMuc2l6
ZSgpIC0gKCptX2N1cnJlbnRJbmRleCArIDEpIDogMDsKIH0KIAogUmVmPEFQSTo6QXJyYXk+IFdl
YkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3QoKSBjb25zdApAQCAtMjg4LDkgKzI4NCw5IEBAIFJl
ZjxBUEk6OkFycmF5PiBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcncKIAogUmVmPEFQSTo6QXJyYXk+
IFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0FQSUFycmF5V2l0aExpbWl0KHVuc2lnbmVk
IGxpbWl0KSBjb25zdAogewotICAgIEFTU0VSVCghbV9oYXNDdXJyZW50SW5kZXggfHwgbV9jdXJy
ZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEluZGV4
IHx8ICptX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCi0gICAgaWYgKCFtX3Bh
Z2UgfHwgIW1faGFzQ3VycmVudEluZGV4KQorICAgIGlmICghbV9wYWdlIHx8ICFtX2N1cnJlbnRJ
bmRleCkKICAgICAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZSgpOwogCiAgICAgdW5zaWdu
ZWQgYmFja0xpc3RTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhY2tMaXN0Q291bnQoKSk7
CkBAIC0zMTAsOSArMzA2LDkgQEAgUmVmPEFQSTo6QXJyYXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6
YmFjawogCiBSZWY8QVBJOjpBcnJheT4gV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdEFz
QVBJQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwor
ICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKSk7CiAKLSAgICBpZiAoIW1fcGFnZSB8fCAhbV9oYXNDdXJyZW50SW5kZXgpCisgICAg
aWYgKCFtX3BhZ2UgfHwgIW1fY3VycmVudEluZGV4KQogICAgICAgICByZXR1cm4gQVBJOjpBcnJh
eTo6Y3JlYXRlKCk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZvcndhcmRMaXN0Q291bnQoKSksIGxpbWl0KTsKQEAgLTMyMiw5ICszMTgsOSBA
QCBSZWY8QVBJOjpBcnJheT4gV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3CiAgICAgVmVjdG9yPFJl
ZlB0cjxBUEk6Ok9iamVjdD4+IHZlY3RvcjsKICAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzaXplKTsKIAotICAgIHVuc2lnbmVkIGxhc3QgPSBtX2N1cnJlbnRJbmRleCArIHNpemU7
CisgICAgc2l6ZV90IGxhc3QgPSAqbV9jdXJyZW50SW5kZXggKyBzaXplOwogICAgIEFTU0VSVChs
YXN0IDwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9jdXJyZW50
SW5kZXggKyAxOyBpIDw9IGxhc3Q7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gKm1fY3VycmVu
dEluZGV4ICsgMTsgaSA8PSBsYXN0OyArK2kpCiAgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBl
bmQobV9lbnRyaWVzW2ldLnB0cigpKTsKIAogICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKTsKQEAgLTMzMiw3ICszMjgsNyBAQCBSZWY8QVBJOjpBcnJheT4gV2Vi
QmFja0ZvcndhcmRMaXN0Ojpmb3J3CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVB
bGxJdGVtcygpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJ
bmRleCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXggfHwg
Km1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAgICBMT0coQmFja0Zvcndh
cmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3QgJXAgcmVtb3ZlQWxsSXRlbXMg
KGhhcyAlenUgb2YgdGhlbSkiLCB0aGlzLCBtX2VudHJpZXMuc2l6ZSgpKTsKIApAQCAtMzQ0LDEz
ICszNDAsMTMgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKAogICAg
IH0KIAogICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFs
c2U7CisgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wYWdlLT5kaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3QobnVsbHB0ciwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKIH0K
IAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKIHsKLSAgICBBU1NFUlQoIW1faGFz
Q3VycmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CisgICAg
QVNTRVJUKCFtX2N1cnJlbnRJbmRleCB8fCAqbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6
ZSgpKTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3
YXJkTGlzdCAlcCBjbGVhciAoaGFzICV6dSBvZiB0aGVtKSIsIHRoaXMsIG1fZW50cmllcy5zaXpl
KCkpOwogCkBAIC0zNjMsNyArMzU5LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFy
KCkKIAogICAgIGlmICghY3VycmVudEl0ZW0pIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZXZlciBoYXZlIG5vIGN1cnJlbnQgaXRlbSBpZiB3ZSBhbHNvIGhhdmUgbm8gY3VycmVudCBpdGVt
IGluZGV4LgotICAgICAgICBBU1NFUlQoIW1faGFzQ3VycmVudEluZGV4KTsKKyAgICAgICAgQVNT
RVJUKCFtX2N1cnJlbnRJbmRleCk7CiAKICAgICAgICAgLy8gQnV0IGp1c3QgaW4gY2FzZSBpdCBk
b2VzIGhhcHBlbiBpbiBwcmFjdGljZSB3ZSBzaG91bGQgZ2V0IGJhY2sgaW50byBhIGNvbnNpc3Rl
bnQgc3RhdGUgbm93LgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewpAQCAtMzcyLDcgKzM2OCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKLSAgICAgICAgbV9oYXNDdXJy
ZW50SW5kZXggPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURk1v
dmUocmVtb3ZlZEl0ZW1zKSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcgKzM4MSw3IEBA
IHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAKICAgICByZW1vdmVkSXRlbXMucmVz
ZXJ2ZUNhcGFjaXR5KHNpemUgLSAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBpZiAoaSAhPSBtX2N1cnJlbnRJbmRleCAmJiBtX2hhc0N1cnJlbnRJ
bmRleCkKKyAgICAgICAgaWYgKG1fY3VycmVudEluZGV4ICYmIGkgIT0gKm1fY3VycmVudEluZGV4
KQogICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChXVEZNb3ZlKG1fZW50cmllc1tpXSkp
OwogICAgIH0KIApAQCAtMzk1LDE3ICszOTEsMTcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6
OmNsZWFyKCkKICAgICBpZiAoY3VycmVudEl0ZW0pCiAgICAgICAgIG1fZW50cmllcy5hcHBlbmQo
Y3VycmVudEl0ZW0ucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2hhc0N1
cnJlbnRJbmRleCA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9w
dDsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3Zl
KHJlbW92ZWRJdGVtcykpOwogfQogCiBCYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpPiYmIGZpbHRlcikgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1faGFzQ3Vy
cmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CisgICAgQVNT
RVJUKCFtX2N1cnJlbnRJbmRleCB8fCAqbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgp
KTsKIAogICAgIEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0YXRlOwotICAg
IGlmIChtX2hhc0N1cnJlbnRJbmRleCkKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3Vy
cmVudEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CisgICAgaWYgKG1fY3VycmVudEluZGV4KQorICAg
ICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSAqbV9jdXJyZW50SW5kZXg7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBhdXRvJiBlbnRyeSA9IG1fZW50cmllc1tpXTsKQEAgLTQ0MSw4ICs0MzcsNyBAQCB2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0CiAgICAgICAgIGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIGdl
bmVyYXRlT2JqZWN0SWRlbnRpZmllcjxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpJdGVtSWRl
bnRpZmllclR5cGU+KCkgfTsKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSks
IG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9Ci0gICAgbV9oYXNDdXJyZW50SW5kZXggPSAhIWJh
Y2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKLSAgICBtX2N1cnJlbnRJbmRleCA9IGJh
Y2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigwKTsKKyAgICBtX2N1cnJl
bnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA/IHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9y
d2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9t
IHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CkBAIC00
ODIsMTEgKzQ3NywxMSBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6ZGlkUmVtb3ZlSXRlbShX
CiBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcoKQogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiV2ViQmFja0ZvcndhcmRMaXN0ICVwIC0gJXp1IGVudHJpZXMsIGhhcyBjdXJyZW50IGluZGV4
ICVzICglenUpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSwgbV9oYXNDdXJyZW50SW5kZXggPyAi
WUVTIiA6ICJOTyIsIG1faGFzQ3VycmVudEluZGV4ID8gbV9jdXJyZW50SW5kZXggOiAwKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIldlYkJhY2tGb3J3YXJkTGlzdCAlcCAt
ICV6dSBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAlcyAoJXp1KSIsIHRoaXMsIG1fZW50cmll
cy5zaXplKCksIG1fY3VycmVudEluZGV4ID8gIllFUyIgOiAiTk8iLCBtX2N1cnJlbnRJbmRleCA/
ICptX2N1cnJlbnRJbmRleCA6IDApKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9l
bnRyaWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiIpOwotICAg
ICAgICBpZiAobV9oYXNDdXJyZW50SW5kZXggJiYgbV9jdXJyZW50SW5kZXggPT0gaSkKKyAgICAg
ICAgaWYgKG1fY3VycmVudEluZGV4ICYmICptX2N1cnJlbnRJbmRleCA9PSBpKQogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIiAqICIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiIC0gIik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMjM2OTcwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYg
QEAgcHVibGljOgogCiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgZW50cmll
cygpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllczsgfQogCi0gICAgdWludDMyX3QgY3VycmVudElu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SW5kZXg7IH0KICAgICBpbnQgYmFja0xpc3RD
b3VudCgpIGNvbnN0OwogICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CiAKQEAgLTg3
LDExICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBC
YWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yIG1fZW50cmllczsKLSAgICAKLSAgICAvLyBGSVhNRTog
bV9jdXJyZW50SW5kZXggc2hvdWxkIGJlIGEgc3RkOjpvcHRpb25hbDxzaXplX3Q+Ci0gICAgYm9v
bCBtX2hhc0N1cnJlbnRJbmRleDsKLSAgICBzaXplX3QgbV9jdXJyZW50SW5kZXg7Ci0gICAgc2l6
ZV90IG1fY2FwYWNpdHk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudEluZGV4
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="369324"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>