<?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>158246</bug_id>
          
          <creation_ts>2016-05-31 18:43:28 -0700</creation_ts>
          <short_desc>Modernize lambda captures in WorkerThreadableWebSocketChannel</short_desc>
          <delta_ts>2016-05-31 21:48:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198036</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 18:43:28 -0700</bug_when>
    <thetext>Modernize lambda captures in WorkerThreadableWebSocketChannel and drop legacy URLCapture class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198039</commentid>
    <comment_count>1</comment_count>
      <attachid>280202</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 19:18:08 -0700</bug_when>
    <thetext>Created attachment 280202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198040</commentid>
    <comment_count>2</comment_count>
      <attachid>280203</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 19:28:22 -0700</bug_when>
    <thetext>Created attachment 280203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198071</commentid>
    <comment_count>3</comment_count>
      <attachid>280203</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 21:48:06 -0700</bug_when>
    <thetext>Comment on attachment 280203
Patch

Clearing flags on attachment: 280203

Committed r201543: &lt;http://trac.webkit.org/changeset/201543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198072</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 21:48:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280202</attachid>
            <date>2016-05-31 19:18:08 -0700</date>
            <delta_ts>2016-05-31 19:28:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158246-20160531191924.patch</filename>
            <type>text/plain</type>
            <size>23770</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhMmM3MjlkYjQ1NDQ3
YzRlNDEwNTMyM2ZhYTMwNWU4NDIxYmU2YS4uNjkzNzhkYzQ1YmY5MGY4NjgwYTE4NmEwNTYyMTgw
NGZlMTExNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA1LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIGxhbWJkYSBj
YXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kZXJuaXplIGxhbWJkYSBjYXB0
dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBhbmQgZHJvcAorICAgICAg
ICBsZWdhY3kgVVJMQ2FwdHVyZSBhcyBpdCBpcyBubyBsb25nZXIgbmVlZGVkIC8gdXNlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRlQnVm
ZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6
OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnN1c3BlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OnNldE1ldGhvZE5vdENvbXBsZXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0
Rm9yTWV0aG9kQ29tcGxldGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogcGxhdGZv
cm0vVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKworMjAx
Ni0wNS0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIENsZWFu
IHVwIC8gbW9kZXJuaXplIGlPUyB0ZXh0IGF1dG9zaXppbmcgY29kZQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjE3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDIyNTNhOGVkYjYyN2E5OTI5Njk3ZjU2
NWM0ZGQ5YzAzM2M0M2E2NTIuLjMyMTRiZmVmNjkyNzk1NGRlNWU1YWYwMWVmNDkzNTUyNGQ0NWEz
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTc1
LDcgKzE3NSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6
OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFu
bmVsLT5zZW5kKG1lc3NhZ2UpOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFw
cGVyKSwgc2VuZFJlcXVlc3RSZXN1bHRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVz
dFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0xODgsNyArMTg4LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYgYmluYXJ5RGF0YSkKIAogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2Vu
ZChiaW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSk7CiAgICAgUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBl
ciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0
UmVzdWx0XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBX
VEZNb3ZlKHdvcmtlckNsaWVudFdyYXBwZXIpLCBzZW5kUmVxdWVzdFJlc3VsdF0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFNlbmRS
ZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0K
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENo
YW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlcjsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHdvcmtlckNsaWVu
dFdyYXBwZXIpLCBzZW5kUmVxdWVzdFJlc3VsdF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRS
ZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFt
b3VudCgpCiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5idWZm
ZXJlZEFtb3VudCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3
b3JrZXJDbGllbnRXcmFwcGVyKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRC
dWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CkBAIC0y
NjYsMTIgKzI2NiwxMiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1
cmVkU3VicHJvdG9jb2wobV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSk7Ci0g
ICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEV4dGVuc2lvbnMobV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+ZXh0ZW5zaW9ucygpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGNhcHR1cmVkU3VicHJvdG9jb2ws
IGNhcHR1cmVkRXh0ZW5zaW9uc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJwcm90
b2NvbCgpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
ZXh0ZW5zaW9ucygpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUod29ya2VyQ2xpZW50V3Jh
cHBlciksIHN1YnByb3RvY29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lv
bnMgPSBleHRlbnNpb25zLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJv
dG9jb2woY2FwdHVyZWRTdWJwcm90b2NvbC5zdHJpbmcoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVu
dFdyYXBwZXItPnNldEV4dGVuc2lvbnMoY2FwdHVyZWRFeHRlbnNpb25zLnN0cmluZygpKTsKKyAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wpOwor
ICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lvbnMpOwog
ICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDb25uZWN0KCk7CiAgICAgfSwgbV90YXNr
TW9kZSk7CiB9CkBAIC0yODEsMTAgKzI4MSw5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXI7Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2UobWVzc2FnZSk7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3
b3JrZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJlZE1lc3NhZ2VdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRX
cmFwcGVyKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRSZWNlaXZlTWVzc2FnZShjYXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOworICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApAQCAtMjkzLDExICsyOTIsOSBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWlu
dDhfdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93
b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIFZlY3Rvcjx1aW50OF90PiogY2FwdHVyZWREYXRhID0g
bmV3IFZlY3Rvcjx1aW50OF90PihXVEZNb3ZlKGJpbmFyeURhdGEpKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIsIGNhcHR1cmVkRGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtl
ckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHdvcmtlckNsaWVudFdyYXBwZXIpLCBiaW5hcnlEYXRh
ID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVyZWREYXRhKSk7Ci0gICAgICAgIGRlbGV0ZSBjYXB0
dXJlZERhdGE7CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVCaW5hcnlE
YXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0z
MDYsNyArMzAzLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG8KICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtl
ckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUod29ya2VyQ2xpZW50V3JhcHBl
ciksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMzE3LDcgKzMxNCw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVu
dFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1v
dmUod29ya2VyQ2xpZW50V3JhcHBlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTdGFydENsb3NpbmdI
YW5kc2hha2UoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTMyOSwxMSArMzI2LDkgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5zaWdu
ZWQgbG9uZyB1bmhhbmRsZWRCdWYKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0gbnVsbHB0
cjsKIAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZFJlYXNvbihyZWFzb24pOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSgKLSAgICAgICAgW3dvcmtlckNsaWVudFdyYXBw
ZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwg
Y29kZSwgY2FwdHVyZWRSZWFzb25dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3
b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFwcGVyKSwgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFz
b24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENs
b3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwg
Y29kZSwgY2FwdHVyZWRSZWFzb24uc3RyaW5nKCkpOworICAgICAgICAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0K
IApAQCAtMzQyLDcgKzMzNyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVu
dFdyYXBwZXIgPSBXVEZNb3ZlKHdvcmtlckNsaWVudFdyYXBwZXIpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMzcwLDI3
ICszNjUsMjQgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKIAogICAgIFJlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIgPSBwcnBDbGll
bnRXcmFwcGVyOwogCi0gICAgUGVlciogcGVlclB0ciA9IFBlZXI6OmNyZWF0ZShjbGllbnRXcmFw
cGVyLCAqbG9hZGVyUHJveHksICZjb250ZXh0LCB0YXNrTW9kZSk7CisgICAgYXV0byBwZWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLCAqbG9hZGVyUHJveHksICZjb250
ZXh0LCB0YXNrTW9kZSk7CiAgICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHktPnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIsIGxvYWRlclByb3h5
LCBwZWVyUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBb
Y2xpZW50V3JhcHBlciwgbG9hZGVyUHJveHksIHBlZXIgPSBXVEZNb3ZlKHBlZXIpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAg
ICAgIGlmIChjbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkg
ewogICAgICAgICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFy
bGllciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBw
ZWVyLgotICAgICAgICAgICAgICAgIGxvYWRlclByb3h5LT5wb3N0VGFza1RvTG9hZGVyKFtwZWVy
UHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
IGxvYWRlclByb3h5LT5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gV1RGTW92ZShwZWVyKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBwZWVyUHRyOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY2xpZW50V3JhcHBlci0+ZGlkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChwZWVy
UHRyKTsKKyAgICAgICAgICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRDcmVhdGVXZWJTb2NrZXRD
aGFubmVsKHBlZXIucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0sIHRhc2tNb2RlKTsKIAot
ICAgIGlmICghc2VudCkgeworICAgIGlmICghc2VudCkKICAgICAgICAgY2xpZW50V3JhcHBlci0+
Y2xlYXJQZWVyKCk7Ci0gICAgICAgIGRlbGV0ZSBwZWVyUHRyOwotICAgIH0KIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKQEAg
LTM5OSwxMSArMzkxLDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjppbml0aWFsaXplKCkKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKICAgICBS
ZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFdvcmtlckxvYWRlclByb3h5
KiBsb2FkZXJQcm94eSA9ICZtX2xvYWRlclByb3h5OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFRhc2tNb2RlKG1fdGFz
a01vZGUpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbbG9hZGVyUHJveHks
IHdvcmtlckNsaWVudFdyYXBwZXIsIGNhcHR1cmVkVGFza01vZGVdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIG1haW5UaHJlYWRJbml0aWFsaXplKGNvbnRleHQs
IGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJlZFRhc2tNb2RlLnN0cmlu
ZygpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW2xvYWRlclByb3h5ID0g
Jm1fbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIsIHRhc2tNb2RlID0gbV90YXNrTW9k
ZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgbWFpblRocmVhZEluaXRpYWxpemUoY29udGV4dCwgbG9hZGVyUHJveHksIHdvcmtlckNs
aWVudFdyYXBwZXIsIHRhc2tNb2RlKTsKICAgICB9KTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxl
dGlvbigpOwogCkBAIC00MTksMTUgKzQwOSwxMiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cgog
ICAgIGlmICghbV9wZWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBQZWVyKiBwZWVyID0gbV9w
ZWVyOwotICAgIFVSTENhcHR1cmUgY2FwdHVyZWRVUkwodXJsKTsKLSAgICBTdHJpbmdDYXB0dXJl
IGNhcHR1cmVkUHJvdG9jb2wocHJvdG9jb2wpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihbcGVlciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVkUHJvdG9jb2xdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKFtwZWVyID0gbV9wZWVyLCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHByb3RvY29sID0g
cHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7
CiAKLSAgICAgICAgcGVlci0+Y29ubmVjdChjYXB0dXJlZFVSTC51cmwoKSwgY2FwdHVyZWRQcm90
b2NvbC5zdHJpbmcoKSk7CisgICAgICAgIHBlZXItPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CiAg
ICAgfSk7CiB9CiAKQEAgLTQzNywxNCArNDI0LDEyIEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
CiAgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAg
ICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAKLSAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwot
ICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOwotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRNZXNzYWdlXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihbcGVlciA9IG1fcGVlciwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3Vt
ZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+c2VuZChjYXB0
dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOworICAgICAgICBwZWVyLT5zZW5kKG1lc3NhZ2UpOwogICAg
IH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CkBAIC00NjEsMjAg
KzQ0NiwxOCBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICByZXR1cm4gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogCiAgICAgLy8gQXJyYXlCdWZmZXIgaXNu
J3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGll
ZCBpbnRvIFZlY3RvcjxjaGFyPi4KLSAgICBWZWN0b3I8Y2hhcj4qIGRhdGFQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oYnl0ZUxlbmd0aCkucmVsZWFzZSgpOworICAgIFZlY3Rv
cjxjaGFyPiBkYXRhKGJ5dGVMZW5ndGgpOwogICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5ndGgo
KSkKLSAgICAgICAgbWVtY3B5KGRhdGFQdHItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgICAg
ICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRh
LmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRob2ROb3RDb21w
bGV0ZWQoKTsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza1RvTG9hZGVyKFtwZWVyLCBkYXRhUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1f
cGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVl
cik7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gZGF0YShkYXRhUHRy
KTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotICAgICAgICBwZWVyLT5zZW5k
KCphcnJheUJ1ZmZlcik7CisgICAgICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIHBlZXItPnNlbmQoYXJy
YXlCdWZmZXIpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CkBAIC00OTEsMTYgKzQ3NCwxMiBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAg
ICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIHNldE1l
dGhvZE5vdENvbXBsZXRlZCgpOwogCi0gICAgUGVlciogcGVlciA9IG1fcGVlcjsKLSAgICBVUkxD
YXB0dXJlIGNhcHR1cmVkVVJMKGJpbmFyeURhdGEudXJsKCkpOwotICAgIFN0cmluZ0NhcHR1cmUg
Y2FwdHVyZWRUeXBlKGJpbmFyeURhdGEudHlwZSgpKTsKLSAgICBsb25nIGxvbmcgc2l6ZSA9IGJp
bmFyeURhdGEuc2l6ZSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVl
ciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVkVHlwZSwgc2l6ZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIg
PSBtX3BlZXIsIHVybCA9IGJpbmFyeURhdGEudXJsKCkuaXNvbGF0ZWRDb3B5KCksIHR5cGUgPSBi
aW5hcnlEYXRhLnR5cGUoKS5pc29sYXRlZENvcHkoKSwgc2l6ZSA9IGJpbmFyeURhdGEuc2l6ZSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNE
b2N1bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgICAgIHBlZXItPnNlbmQo
QmxvYjo6ZGVzZXJpYWxpemUoY2FwdHVyZWRVUkwudXJsKCksIGNhcHR1cmVkVHlwZS5zdHJpbmco
KSwgc2l6ZSwgeyB9KSk7CisgICAgICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUodXJs
LCB0eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwpAQCAtNTE3LDggKzQ5Niw3IEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAgICAg
ICByZXR1cm4gMDsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKIAotICAgIFBlZXIqIHBl
ZXIgPSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChw
ZWVyKTsKQEAgLTUzOSwxNCArNTE3LDEyIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhCiAgICAg
aWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7
Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFJlYXNvbihyZWFzb24pOwotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY29kZSwgY2FwdHVyZWRSZWFzb25dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+
Y2xvc2UoY29kZSwgY2FwdHVyZWRSZWFzb24uc3RyaW5nKCkpOworICAgICAgICBwZWVyLT5jbG9z
ZShjb2RlLCByZWFzb24pOwogICAgIH0pOwogfQogCkBAIC01NTUsMTQgKzUzMSwxMiBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmZhaWwoY29uc3QgU3Ry
aW5nJiByZWFzb24pCiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBl
ZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFJlYXNvbihyZWFz
b24pOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRS
ZWFzb25dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyLCByZWFzb24gPSByZWFzb24uaXNv
bGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAg
cGVlci0+ZmFpbChjYXB0dXJlZFJlYXNvbi5zdHJpbmcoKSk7CisgICAgICAgIHBlZXItPmZhaWwo
cmVhc29uKTsKICAgICB9KTsKIH0KIApAQCAtNTcwLDggKzU0NCw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgY2xl
YXJDbGllbnRXcmFwcGVyKCk7CiAgICAgaWYgKG1fcGVlcikgewotICAgICAgICBQZWVyKiBwZWVy
ID0gbV9wZWVyOwotICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXJd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAg
ICAgICAgICAgIGRlbGV0ZSBwZWVyOwpAQCAtNTg2LDggKzU1OSw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3VzcGVuZCgpCiAgICAgaWYgKCFtX3Bl
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9
IG1fcGVlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKQEAgLTYwMSw4ICs1NzMs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnJlc3Vt
ZSgpCiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBlZXIqIHBlZXIg
PSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYzRjMDlhZTNl
ZjA0NTk2YzE5ZDYxYmRlMzhmZTAxNTZjZjE3MGEzNy4uY2VjMDgzMjg4NDE4NDk4ZjU3OTUyZDc1
Y2UxYzkzNTY3NjU3MGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTgwLDEwICs4MCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBQZWVyIDogcHVibGljIFdl
YlNvY2tldENoYW5uZWxDbGllbnQgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZWVy
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGVlciogY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUGVlcihjbGllbnRXcmFwcGVyLCBsb2Fk
ZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUpOwotICAgICAgICB9CisgICAgICAgIFBlZXIoUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBXb3JrZXJM
b2FkZXJQcm94eSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlKTsKICAgICAgICAgflBlZXIoKTsKIAogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CkBAIC0xMDcsOCArMTA0LDYgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSBvdmVycmlkZTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFBlZXIoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+LCBXb3JrZXJMb2FkZXJQcm94eSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKTsKLQogICAgICAgICBSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CiAg
ICAgICAgIFdvcmtlckxvYWRlclByb3h5JiBtX2xvYWRlclByb3h5OwogICAgICAgICBSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IG1fbWFpbldlYlNvY2tldENoYW5uZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCmluZGV4IDQyNThhYWRjOGJlODJiM2M3ZjE4MTJmMDg5NGRiMGQ5ZWYzNTZi
ZTUuLmU2ZTJiYTZiZjM3NDFmZmE0NWEwMDFiNzhlMWEzOWJmZjQxZTE3OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5oCkBAIC0zMzAsMjAgKzMzMCw2IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmFibGVVUkxTY2hlbWVDYW5vbmljYWxpemF0aW9uKGJvb2wpOwogI2VuZGlmCiAKLS8v
IExpa2UgU3RyaW5nQ2FwdHVyZSwgYnV0IGZvciBVUkxzLgotY2xhc3MgVVJMQ2FwdHVyZSB7Ci1w
dWJsaWM6Ci0gICAgZXhwbGljaXQgVVJMQ2FwdHVyZShjb25zdCBVUkwmKTsKLSAgICBleHBsaWNp
dCBVUkxDYXB0dXJlKFVSTCYmKTsKLSAgICBVUkxDYXB0dXJlKGNvbnN0IFVSTENhcHR1cmUmKTsK
LSAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwotICAgIFVSTCByZWxlYXNlVVJMKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVVJMQ2FwdHVyZSYpID0gZGVsZXRlOwot
ICAgIFVSTCBtX1VSTDsKLX07Ci0KIC8vIElubGluZXMuCiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC00MzQsMzEgKzQyMCw2IEBAIGlubGlu
ZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi1pbmxpbmUgVVJMQ2FwdHVyZTo6VVJMQ2FwdHVyZShj
b25zdCBVUkwmIHVybCkKLSAgICA6IG1fVVJMKHVybCkKLXsKLX0KLQotaW5saW5lIFVSTENhcHR1
cmU6OlVSTENhcHR1cmUoVVJMJiYgdXJsKQotICAgIDogbV9VUkwodXJsKQotewotfQotCi1pbmxp
bmUgVVJMQ2FwdHVyZTo6VVJMQ2FwdHVyZShjb25zdCBVUkxDYXB0dXJlJiBvdGhlcikKLSAgICA6
IG1fVVJMKG90aGVyLm1fVVJMLmlzb2xhdGVkQ29weSgpKQotewotfQotCi1pbmxpbmUgY29uc3Qg
VVJMJiBVUkxDYXB0dXJlOjp1cmwoKSBjb25zdAotewotICAgIHJldHVybiBtX1VSTDsKLX0KLQot
aW5saW5lIFVSTCBVUkxDYXB0dXJlOjpyZWxlYXNlVVJMKCkKLXsKLSAgICByZXR1cm4gV1RGTW92
ZShtX1VSTCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280203</attachid>
            <date>2016-05-31 19:28:22 -0700</date>
            <delta_ts>2016-05-31 21:48:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158246-20160531192938.patch</filename>
            <type>text/plain</type>
            <size>25882</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhMmM3MjlkYjQ1NDQ3
YzRlNDEwNTMyM2ZhYTMwNWU4NDIxYmU2YS4uNjkzNzhkYzQ1YmY5MGY4NjgwYTE4NmEwNTYyMTgw
NGZlMTExNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA1LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIGxhbWJkYSBj
YXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kZXJuaXplIGxhbWJkYSBjYXB0
dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBhbmQgZHJvcAorICAgICAg
ICBsZWdhY3kgVVJMQ2FwdHVyZSBhcyBpdCBpcyBubyBsb25nZXIgbmVlZGVkIC8gdXNlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRlQnVm
ZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6
OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnN1c3BlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OnNldE1ldGhvZE5vdENvbXBsZXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0
Rm9yTWV0aG9kQ29tcGxldGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogcGxhdGZv
cm0vVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKworMjAx
Ni0wNS0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIENsZWFu
IHVwIC8gbW9kZXJuaXplIGlPUyB0ZXh0IGF1dG9zaXppbmcgY29kZQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjE3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDIyNTNhOGVkYjYyN2E5OTI5Njk3ZjU2
NWM0ZGQ5YzAzM2M0M2E2NTIuLjU0Y2Y1N2RmYjVjMTYzZDhjOTFmNzJhMzNmNDdmZGVlMjhkYTc2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTQz
LDggKzE0Myw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnJlc3Vt
ZSgpCiAgICAgICAgIG1fYnJpZGdlLT5yZXN1bWUoKTsKIH0KIAotV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBs
b2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSkKLSAgICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcihjbGllbnRXcmFwcGVyKQor
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiBjbGllbnRXcmFwcGVyLCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCisgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIo
V1RGTW92ZShjbGllbnRXcmFwcGVyKSkKICAgICAsIG1fbG9hZGVyUHJveHkobG9hZGVyUHJveHkp
CiAgICAgLCBtX21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHRoaXMpKQogICAgICwgbV90YXNrTW9kZSh0YXNr
TW9kZSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWlu
V2ViU29ja2V0Q2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUod29y
a2VyQ2xpZW50V3JhcHBlciksIHNlbmRSZXF1ZXN0UmVzdWx0XSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1
bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMTg4LDcg
KzE4OCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNl
bmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiAKICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSwgMCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOwog
ICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
LCBzZW5kUmVxdWVzdFJlc3VsdF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGll
bnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFwcGVyKSwgc2VuZFJlcXVlc3RSZXN1
bHRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFw
cGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogCiAgICAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEpOwogICAgIFJlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBt
X3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3Vs
dF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92
ZSh3b3JrZXJDbGllbnRXcmFwcGVyKSwgc2VuZFJlcXVlc3RSZXN1bHRdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVz
dFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0y
MTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6YnVmZmVyZWRBbW91bnQoKQogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlcjsKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50ID0gbV9tYWluV2ViU29ja2V0
Q2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1v
dW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBl
ciA9IFdURk1vdmUod29ya2VyQ2xpZW50V3JhcHBlciksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0sIG1fdGFz
a01vZGUpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZFN1YnByb3RvY29sKG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnBy
b3RvY29sKCkpOwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRFeHRlbnNpb25zKG1fbWFpbldl
YlNvY2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJl
ZFN1YnByb3RvY29sLCBjYXB0dXJlZEV4dGVuc2lvbnNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CisgICAgU3RyaW5nIHN1YnByb3RvY29sID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+c3VicHJvdG9jb2woKTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHdv
cmtlckNsaWVudFdyYXBwZXIpLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xhdGVkQ29w
eSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPnNldFN1YnByb3RvY29sKGNhcHR1cmVkU3VicHJvdG9jb2wuc3RyaW5nKCkpOwotICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGNhcHR1cmVkRXh0ZW5zaW9ucy5z
dHJpbmcoKSk7CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1
YnByb3RvY29sKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhl
eHRlbnNpb25zKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ29ubmVjdCgpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjgxLDEwICsyODEsOSBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lcwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNz
YWdlKG1lc3NhZ2UpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRNZXNzYWdlXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUo
d29ya2VyQ2xpZW50V3JhcHBlciksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2Vy
Q2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY2FwdHVyZWRNZXNzYWdlLnN0cmluZygp
KTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2Fn
ZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTI5MywxMSArMjkyLDkgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3QKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBWZWN0b3I8dWludDhfdD4qIGNh
cHR1cmVkRGF0YSA9IG5ldyBWZWN0b3I8dWludDhfdD4oV1RGTW92ZShiaW5hcnlEYXRhKSk7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJlZERhdGFdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFwcGVy
KSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoKmNhcHR1cmVkRGF0YSkpOwotICAgICAg
ICBkZWxldGUgY2FwdHVyZWREYXRhOworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRS
ZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKIH0KIApAQCAtMzA2LDcgKzMwMyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHdvcmtl
ckNsaWVudFdyYXBwZXIpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFVwZGF0
ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAg
LTMxNyw3ICszMTQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdy
YXBwZXIgPSBXVEZNb3ZlKHdvcmtlckNsaWVudFdyYXBwZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CkBAIC0zMjksMTEg
KzMyNiw5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmCiAgICAgbV9tYWluV2ViU29ja2V0Q2hh
bm5lbCA9IG51bGxwdHI7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
OwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRSZWFzb24ocmVhc29uKTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIFt3b3Jr
ZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIGNhcHR1cmVkUmVhc29uXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUod29ya2VyQ2xpZW50V3Jh
cHBlciksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
biwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIGNhcHR1cmVkUmVhc29uLnN0cmluZygpKTsKKyAgICAgICAgICAg
IHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBj
bG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKQEAgLTM0Miw3ICszMzcsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlcjsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW3dvcmtlckNsaWVudFdyYXBwZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFwcGVyKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKQEAgLTM2MywzNCArMzU4LDMxIEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6On5CcmlkZ2UoKQogICAgIGRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXJMb2FkZXJQcm94eSogbG9hZGVy
UHJveHksIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQordm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXJMb2FkZXJQcm94eSogbG9hZGVy
UHJveHksIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+JiYg
cGFzc2VkQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c0RvY3VtZW50KCkpOwogCi0gICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciA9IHBycENsaWVudFdyYXBwZXI7CisgICAgUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciA9
IFdURk1vdmUocGFzc2VkQ2xpZW50V3JhcHBlcik7CiAKLSAgICBQZWVyKiBwZWVyUHRyID0gUGVl
cjo6Y3JlYXRlKGNsaWVudFdyYXBwZXIsICpsb2FkZXJQcm94eSwgJmNvbnRleHQsIHRhc2tNb2Rl
KTsKKyAgICBhdXRvIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIu
Y29weVJlZigpLCAqbG9hZGVyUHJveHksICZjb250ZXh0LCB0YXNrTW9kZSk7CiAgICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAg
ICAgW2NsaWVudFdyYXBwZXIsIGxvYWRlclByb3h5LCBwZWVyUHRyXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBbY2xpZW50V3JhcHBlciwgbG9hZGVyUHJveHks
IHBlZXIgPSBXVEZNb3ZlKHBlZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRXcmFwcGVyLT5mYWls
ZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAgICAgIC8vIElmIEJy
aWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBraWNrIG1haW5U
aHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgotICAgICAgICAgICAgICAgIGxvYWRl
clByb3h5LT5wb3N0VGFza1RvTG9hZGVyKFtwZWVyUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGxvYWRlclByb3h5LT5wb3N0VGFza1RvTG9h
ZGVyKFtwZWVyID0gV1RGTW92ZShwZWVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwZWVyUHRyOwogICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2xpZW50V3JhcHBlci0+
ZGlkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChwZWVyUHRyKTsKKyAgICAgICAgICAgICAgICBjbGll
bnRXcmFwcGVyLT5kaWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKHBlZXIucmVsZWFzZSgpKTsKICAg
ICAgICAgfQogICAgIH0sIHRhc2tNb2RlKTsKIAotICAgIGlmICghc2VudCkgeworICAgIGlmICgh
c2VudCkKICAgICAgICAgY2xpZW50V3JhcHBlci0+Y2xlYXJQZWVyKCk7Ci0gICAgICAgIGRlbGV0
ZSBwZWVyUHRyOwotICAgIH0KIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKQEAgLTM5OSwxMSArMzkxLDkgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKICAgICBz
ZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKICAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSA9ICZtX2xvYWRlclBy
b3h5OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZFRhc2tNb2RlKG1fdGFza01vZGUpOwotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tUb0xvYWRlcihbbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIsIGNhcHR1
cmVkVGFza01vZGVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
IG1haW5UaHJlYWRJbml0aWFsaXplKGNvbnRleHQsIGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRX
cmFwcGVyLCBjYXB0dXJlZFRhc2tNb2RlLnN0cmluZygpKTsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoW2xvYWRlclByb3h5ID0gJm1fbG9hZGVyUHJveHksIHdvcmtlckNsaWVu
dFdyYXBwZXIgPSBXVEZNb3ZlKHdvcmtlckNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSA9IG1fdGFz
a01vZGUuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgbWFpblRocmVhZEluaXRpYWxpemUoY29udGV4dCwgbG9hZGVyUHJv
eHksIFdURk1vdmUod29ya2VyQ2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKICAgICB9KTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogCkBAIC00MTksMTUgKzQwOSwxMiBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cgogICAgIGlmICghbV9wZWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwotICAgIFVSTENhcHR1cmUgY2FwdHVyZWRVUkwodXJs
KTsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkUHJvdG9jb2wocHJvdG9jb2wpOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVk
UHJvdG9jb2xdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyLCB1cmwgPSB1cmwuaXNvbGF0
ZWRDb3B5KCksIHByb3RvY29sID0gcHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwog
ICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+Y29ubmVjdChjYXB0dXJlZFVS
TC51cmwoKSwgY2FwdHVyZWRQcm90b2NvbC5zdHJpbmcoKSk7CisgICAgICAgIHBlZXItPmNvbm5l
Y3QodXJsLCBwcm90b2NvbCk7CiAgICAgfSk7CiB9CiAKQEAgLTQzNywxNCArNDI0LDEyIEBAIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAKLSAgICBQ
ZWVyKiBwZWVyID0gbV9wZWVyOwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1l
c3NhZ2UpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVy
ZWRNZXNzYWdlXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlciwgbWVzc2FnZSA9IG1lc3Nh
Z2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAg
ICAgICAgcGVlci0+c2VuZChjYXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOworICAgICAgICBwZWVy
LT5zZW5kKG1lc3NhZ2UpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CkBAIC00NjEsMjAgKzQ0NiwxOCBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgog
ICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogCiAg
ICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9m
IEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3RvcjxjaGFyPi4KLSAgICBWZWN0b3I8Y2hh
cj4qIGRhdGFQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oYnl0ZUxlbmd0aCku
cmVsZWFzZSgpOworICAgIFZlY3RvcjxjaGFyPiBkYXRhKGJ5dGVMZW5ndGgpOwogICAgIGlmIChi
aW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgbWVtY3B5KGRhdGFQdHItPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQs
IGJ5dGVMZW5ndGgpOworICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsK
ICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyLCBkYXRhUHRyXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbcGVlciA9IG1fcGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkp
OwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxjaGFyPj4gZGF0YShkYXRhUHRyKTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OwotICAgICAgICBwZWVyLT5zZW5kKCphcnJheUJ1ZmZlcik7CisgICAgICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgICAgIHBlZXItPnNlbmQoYXJyYXlCdWZmZXIpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRn
ZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CkBAIC00OTEsMTYgKzQ3NCwxMiBAQCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOgogICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRGYWlsOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogCi0gICAgUGVlciogcGVl
ciA9IG1fcGVlcjsKLSAgICBVUkxDYXB0dXJlIGNhcHR1cmVkVVJMKGJpbmFyeURhdGEudXJsKCkp
OwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRUeXBlKGJpbmFyeURhdGEudHlwZSgpKTsKLSAg
ICBsb25nIGxvbmcgc2l6ZSA9IGJpbmFyeURhdGEuc2l6ZSgpOwotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVkVHlwZSwgc2l6ZV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoW3BlZXIgPSBtX3BlZXIsIHVybCA9IGJpbmFyeURhdGEudXJsKCkuaXNv
bGF0ZWRDb3B5KCksIHR5cGUgPSBiaW5hcnlEYXRhLnR5cGUoKS5pc29sYXRlZENvcHkoKSwgc2l6
ZSA9IGJpbmFyeURhdGEuc2l6ZSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwog
Ci0gICAgICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY2FwdHVyZWRVUkwudXJsKCks
IGNhcHR1cmVkVHlwZS5zdHJpbmcoKSwgc2l6ZSwgeyB9KSk7CisgICAgICAgIHBlZXItPnNlbmQo
QmxvYjo6ZGVzZXJpYWxpemUodXJsLCB0eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAg
IFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwpAQCAtNTE3LDggKzQ5Niw3IEBAIHVu
c2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVm
ZmVyZWRBbW91bnQoKQogICAgICAgICByZXR1cm4gMDsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0
ZWQoKTsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKFtwZWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQo
KSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKQEAgLTUzOSwxNCArNTE3LDEyIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhCiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFJlYXNvbihy
ZWFzb24pOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY29kZSwg
Y2FwdHVyZWRSZWFzb25dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyLCBjb2RlLCByZWFz
b24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVl
cik7CiAKLSAgICAgICAgcGVlci0+Y2xvc2UoY29kZSwgY2FwdHVyZWRSZWFzb24uc3RyaW5nKCkp
OworICAgICAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwogICAgIH0pOwogfQogCkBAIC01
NTUsMTQgKzUzMSwxMiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgaWYgKCFtX3BlZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgU3RyaW5nQ2FwdHVy
ZSBjYXB0dXJlZFJlYXNvbihyZWFzb24pOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihbcGVlciwgY2FwdHVyZWRSZWFzb25dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVy
LCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NF
UlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+ZmFpbChjYXB0dXJlZFJlYXNvbi5zdHJpbmcoKSk7
CisgICAgICAgIHBlZXItPmZhaWwocmVhc29uKTsKICAgICB9KTsKIH0KIApAQCAtNTcwLDggKzU0
NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlz
Y29ubmVjdCgpCiB7CiAgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7CiAgICAgaWYgKG1fcGVlcikg
ewotICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwotICAgICAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoW3BlZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNEb2N1bWVudCgpKTsKICAgICAgICAgICAgIGRlbGV0ZSBwZWVyOwpAQCAtNTg2LDggKzU1
OSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c3Vz
cGVuZCgpCiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBlZXIqIHBl
ZXIgPSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChw
ZWVyKTsKQEAgLTYwMSw4ICs1NzMsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OnJlc3VtZSgpCiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a1RvTG9hZGVyKFtwZWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7
CiAgICAgICAgIEFTU0VSVChwZWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKaW5kZXggYzRjMDlhZTNlZjA0NTk2YzE5ZDYxYmRlMzhmZTAxNTZjZjE3MGEzNy4uYjI5
NmE0ZDZmYWRiODU1MzE1MDdlYzQ0MDQ2NzI2OGI1NWJhYTg3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTgwLDEwICs4MCw3IEBAIHB1YmxpYzoKICAgICBj
bGFzcyBQZWVyIDogcHVibGljIFdlYlNvY2tldENoYW5uZWxDbGllbnQgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQ
cm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUGVl
cihjbGllbnRXcmFwcGVyLCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUpOwotICAgICAg
ICB9CisgICAgICAgIFBlZXIoUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4mJiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7CiAgICAgICAgIH5QZWVyKCk7CiAKICAgICAgICAgdm9p
ZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwpAQCAtMTA3LDgg
KzEwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkg
b3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7Ci0KICAgICAg
ICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyOwogICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSYgbV9sb2FkZXJQcm94
eTsKICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBtX21haW5XZWJT
b2NrZXRDaGFubmVsOwpAQCAtMTUyLDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRp
YyB2b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRn
ZSogdGhpc1B0ciwgUGVlciosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPik7CiAKICAgICAgICAgLy8gRXhlY3V0ZWQgb24gdGhlIG1haW4gdGhyZWFk
IHRvIGNyZWF0ZSBhIFBlZXIgZm9yIHRoaXMgYnJpZGdlLgotICAgICAgICBzdGF0aWMgdm9pZCBt
YWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya2VyTG9hZGVy
UHJveHkqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOworICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya2VyTG9hZGVyUHJveHkq
LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiYmLCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlKTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgd29ya2Vy
IGNvbnRleHQncyB0aHJlYWQuCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5oCmluZGV4IDQyNThhYWRjOGJlODJiM2M3ZjE4MTJmMDg5NGRiMGQ5ZWYz
NTZiZTUuLmU2ZTJiYTZiZjM3NDFmZmE0NWEwMDFiNzhlMWEzOWJmZjQxZTE3OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCkBAIC0zMzAsMjAgKzMzMCw2IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
bmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbmFibGVVUkxTY2hlbWVDYW5vbmljYWxpemF0aW9uKGJvb2wpOwogI2VuZGlmCiAK
LS8vIExpa2UgU3RyaW5nQ2FwdHVyZSwgYnV0IGZvciBVUkxzLgotY2xhc3MgVVJMQ2FwdHVyZSB7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgVVJMQ2FwdHVyZShjb25zdCBVUkwmKTsKLSAgICBleHBs
aWNpdCBVUkxDYXB0dXJlKFVSTCYmKTsKLSAgICBVUkxDYXB0dXJlKGNvbnN0IFVSTENhcHR1cmUm
KTsKLSAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwotICAgIFVSTCByZWxlYXNlVVJMKCk7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVVJMQ2FwdHVyZSYpID0gZGVsZXRl
OwotICAgIFVSTCBtX1VSTDsKLX07Ci0KIC8vIElubGluZXMuCiAKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC00MzQsMzEgKzQyMCw2IEBAIGlu
bGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi1pbmxpbmUgVVJMQ2FwdHVyZTo6VVJMQ2FwdHVy
ZShjb25zdCBVUkwmIHVybCkKLSAgICA6IG1fVVJMKHVybCkKLXsKLX0KLQotaW5saW5lIFVSTENh
cHR1cmU6OlVSTENhcHR1cmUoVVJMJiYgdXJsKQotICAgIDogbV9VUkwodXJsKQotewotfQotCi1p
bmxpbmUgVVJMQ2FwdHVyZTo6VVJMQ2FwdHVyZShjb25zdCBVUkxDYXB0dXJlJiBvdGhlcikKLSAg
ICA6IG1fVVJMKG90aGVyLm1fVVJMLmlzb2xhdGVkQ29weSgpKQotewotfQotCi1pbmxpbmUgY29u
c3QgVVJMJiBVUkxDYXB0dXJlOjp1cmwoKSBjb25zdAotewotICAgIHJldHVybiBtX1VSTDsKLX0K
LQotaW5saW5lIFVSTCBVUkxDYXB0dXJlOjpyZWxlYXNlVVJMKCkKLXsKLSAgICByZXR1cm4gV1RG
TW92ZShtX1VSTCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdU
RiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>