<?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>122178</bug_id>
          
          <creation_ts>2013-10-01 14:16:25 -0700</creation_ts>
          <short_desc>Variable event stream (for DFG OSR exit) should be explicit about where on the stack a SetLocal put a value</short_desc>
          <delta_ts>2013-10-01 16:29:21 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122024</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>935194</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 14:16:25 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935196</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 14:16:37 -0700</bug_when>
    <thetext>*** Bug 108019 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935197</commentid>
    <comment_count>2</comment_count>
      <attachid>213119</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 14:21:09 -0700</bug_when>
    <thetext>Created attachment 213119
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935206</commentid>
    <comment_count>3</comment_count>
      <attachid>213121</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 14:35:56 -0700</bug_when>
    <thetext>Created attachment 213121
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935213</commentid>
    <comment_count>4</comment_count>
      <attachid>213121</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-01 14:55:35 -0700</bug_when>
    <thetext>Comment on attachment 213121
the patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGVariableEvent.h:234
&gt; +        return static_cast&lt;VirtualRegister&gt;(m_representation.virtualReg);

You can just use constructor syntax here: VirtualRegister(m_representation.virtualReg).

&gt; Source/JavaScriptCore/dfg/DFGVariableEvent.h:240
&gt; +        return static_cast&lt;VirtualRegister&gt;(m_representation.virtualReg);

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGVariableEvent.h:246
&gt; +        return static_cast&lt;VirtualRegister&gt;(m_which.virtualReg);

You can just use constructor syntax here: VirtualRegister(m_which.virtualReg).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935224</commentid>
    <comment_count>5</comment_count>
      <attachid>213121</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-01 15:17:15 -0700</bug_when>
    <thetext>Comment on attachment 213121
the patch

Attachment 213121 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2902186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935252</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 16:00:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 213121 [details])
&gt; Attachment 213121 [details] did not pass efl-wk2-ews (efl-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/2902186

Looks like an ICE.  Not my problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935262</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-01 16:29:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/156747</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213119</attachid>
            <date>2013-10-01 14:21:09 -0700</date>
            <delta_ts>2013-10-01 14:35:56 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25732</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCShyZXZpc2lv
biAxNTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oVmlydHVhbFJl
Z2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSkgPCBudW1iZXJPZkxvY2FscygpOwogICAgIH0KKyAg
ICBib29sIGhhc09wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBoYXNPcGVyYW5kKHJlZy5vZmZzZXQoKSk7CisgICAgfQogICAgIAogICAgIHZv
aWQgc2V0T3BlcmFuZChpbnQgb3BlcmFuZCwgY29uc3QgVCYgdmFsdWUpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTU2
NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIK
ICNpbmNsdWRlICJERkdVc2VLaW5kLmgiCisjaW5jbHVkZSAiRGF0YUZvcm1hdC5oIgogI2luY2x1
ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKQEAgLTg4
LDYgKzg5LDI4IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAg
ICByZXR1cm4gVW50eXBlZFVzZTsKIH0KIAoraW5saW5lIERhdGFGb3JtYXQgZGF0YUZvcm1hdEZv
cihGbHVzaEZvcm1hdCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNl
IERlYWRGbHVzaDoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXREZWFkOworICAgIGNhc2UgRmx1
c2hlZEpTVmFsdWU6CisgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SlM7CisgICAgY2FzZSBGbHVz
aGVkRG91YmxlOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1hdERvdWJsZTsKKyAgICBjYXNlIEZs
dXNoZWRJbnQzMjoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRJbnQzMjsKKyAgICBjYXNlIEZs
dXNoZWRJbnQ1MjoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRJbnQ1MjsKKyAgICBjYXNlIEZs
dXNoZWRDZWxsOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1hdENlbGw7CisgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRCb29sZWFuOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBEYXRhRm9ybWF0RGVh
ZDsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCShyZXZpc2lvbiAx
NTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkSUQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsMjAgKzY2LDIxIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBvdGhlckludmFs
aWRJRCgpOyB9CiAgICAgCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBNaW5pZmllZE5vZGU7
Ci0gICAgZnJpZW5kIGNsYXNzIFZhbHVlU291cmNlOwotICAgIAotICAgIHN0YXRpYyB1aW50cHRy
X3QgaW52YWxpZElEKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oLTEpKTsgfQotICAgIHN0YXRpYyB1aW50cHRyX3Qgb3RoZXJJbnZhbGlkSUQo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHN0YXRpY19jYXN0PGludHB0cl90Pigt
MikpOyB9Ci0gICAgCiAgICAgc3RhdGljIE1pbmlmaWVkSUQgZnJvbUJpdHModWludHB0cl90IHZh
bHVlKQogICAgIHsKICAgICAgICAgTWluaWZpZWRJRCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5t
X2lkID0gdmFsdWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAgIHVp
bnRwdHJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBNaW5pZmllZE5vZGU7CisgICAgCisgICAgc3RhdGljIHVpbnRwdHJfdCBpbnZh
bGlkSUQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHN0YXRpY19jYXN0PGludHB0
cl90PigtMSkpOyB9CisgICAgc3RhdGljIHVpbnRwdHJfdCBvdGhlckludmFsaWRJRCgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSk7IH0K
KyAgICAKICAgICB1aW50cHRyX3QgbV9pZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU2NzIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMzMyw3ICsyMzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdzIG5v
IGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mCiAgICAgICAgICAgICAv
LyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9u
cyBpbiB0aGUgc3RhY2ssCiAgICAgICAgICAgICAvLyBidXQgdGhhdCBpdCBpcyBzdG9yZWQgYXMg
YSBkb3VibGUuCi0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1
ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERh
dGFGb3JtYXREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMjM0MSw3ICsyMzQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCks
IEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpKTsKICAgICAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwg
VmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2Fs
KERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZS5ncHIo
KSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAg
bm9SZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgp
LCBWYWx1ZVNvdXJjZShJbnQ1MkluSlNTdGFjaykpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9j
YWwoRGF0YUZvcm1hdEludDUyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIzNTgsNyArMjM1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsK
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7Ci0gICAgICAg
ICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0
YWNrKSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0Q2VsbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMzY2LDcgKzIzNjYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBib29sZWFuKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYm9vbGVhbi5ncHIoKSwgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7Ci0g
ICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShCb29s
ZWFuSW5KU1N0YWNrKSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0Qm9v
bGVhbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0y
Mzc1LDcgKzIzNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFs
dWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERh
dGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHN0b3Jp
bmcgYW4gYXJndW1lbnRzIG9iamVjdCB0aGF0IGhhcyBiZWVuIG9wdGltaXplZCBhd2F5LAogICAg
ICAgICAgICAgLy8gb3VyIHZhcmlhYmxlIGV2ZW50IHN0cmVhbSBmb3IgT1NSIGV4aXQgbm93IHJl
ZmxlY3RzIHRoZSBvcHRpbWl6ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTY3MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUyMCw3ICsxNTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1vdkhpbnQoTm9k
ZQogICAgIGlmIChjaGlsZC0+b3AoKSA9PSBVSW50MzJUb051bWJlcikKICAgICAgICAgbm90aWNl
T1NSQmlydGgoY2hpbGQtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgCi0gICAgbV9zdHJlYW0tPmFw
cGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojptb3ZIaW50KE1pbmlmaWVkSUQoY2hpbGQpLCBub2Rl
LT5sb2NhbCgpLm9mZnNldCgpKSk7CisgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJs
ZUV2ZW50Ojptb3ZIaW50KE1pbmlmaWVkSUQoY2hpbGQpLCBub2RlLT5sb2NhbCgpKSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50QW5kQ2hlY2soTm9kZSogbm9kZSkK
QEAgLTE1MzcsOSArMTUzNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmxpbmVT
dGFydCgKICAgICB1bnNpZ25lZCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBub2RlLT5hcmd1bWVu
dFBvc2l0aW9uU3RhcnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgVmFsdWVTb3VyY2Ugc291cmNlID0gVmFsdWVT
b3VyY2U6OmZvckZsdXNoRm9ybWF0KAorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSksCiAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRQb3NpdGlvbnNb
YXJndW1lbnRQb3NpdGlvblN0YXJ0ICsgaV0uZmx1c2hGb3JtYXQoKSk7Ci0gICAgICAgIGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzW2ldID0gc291cmNlLnZhbHVlUmVjb3ZlcnkoCi0gICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSkub2Zmc2V0KCkpOworICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tp
XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CiAgICAgfQogfQogCkBAIC0xNTgxLDggKzE1ODEs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgbV9qaXQu
aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewot
ICAgICAgICBWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0
YWNrKTsKLSAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRM
b2NhbCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgdmFsdWVTb3VyY2UuZGF0YUZvcm1h
dCgpKSk7CisgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICBWYXJp
YWJsZUV2ZW50OjpzZXRMb2NhbCgKKyAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUykp
OwogICAgIH0KICAgICAKICAgICBtX3N0YXRlLnJlc2V0KCk7CkBAIC0xNTkwLDE3ICsxNTkxLDE5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpOyArK2kpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5sb2NhbChpKTsKLSAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CiAgICAgICAg
IGlmICghbm9kZSkKLSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoU291cmNl
SXNEZWFkKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlz
QXJndW1lbnRzQWxpYXMoKSkKLSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2Uo
QXJndW1lbnRzU291cmNlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJl
Y29yZCBkZWFkIFNldExvY2FsJ3MuCisgICAgICAgIAorICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIERhdGFG
b3JtYXQgZm9ybWF0OworICAgICAgICBpZiAodmFyaWFibGUtPmlzQXJndW1lbnRzQWxpYXMoKSkK
KyAgICAgICAgICAgIGZvcm1hdCA9IERhdGFGb3JtYXRBcmd1bWVudHM7CiAgICAgICAgIGVsc2Ug
aWYgKCFub2RlLT5yZWZDb3VudCgpKQotICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNv
dXJjZShTb3VyY2VJc0RlYWQpOworICAgICAgICAgICAgY29udGludWU7IC8vIE5vIG5lZWQgdG8g
cmVjb3JkIGRlYWQgU2V0TG9jYWwncy4KICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWVT
b3VyY2UgPSBWYWx1ZVNvdXJjZTo6Zm9yRmx1c2hGb3JtYXQobm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCkpOwotICAgICAgICAvLyBGSVhNRTogRG9uJ3QgZW1pdCBTZXRM
b2NhbChEZWFkKS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODAx
OQotICAgICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2Fs
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCB2YWx1ZVNvdXJjZS5kYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgICAgIGZvcm1hdCA9IGRhdGFGb3JtYXRGb3IodmFyaWFibGUtPmZsdXNoRm9ybWF0
KCkpOworICAgICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKAorICAgICAgICAgICAgVmFyaWFi
bGVFdmVudDo6c2V0TG9jYWwodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIHZhcmlhYmxlLT5s
b2NhbCgpLCBmb3JtYXQpKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IFZp
cnR1YWxSZWdpc3RlcigpOwpAQCAtMTY1MCw3ICsxNjUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2Fz
ZSBab21iaWVIaW50OiB7CiAgICAgICAgICAgICAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IG1fY3Vy
cmVudE5vZGUtPmxvY2FsKCk7Ci0gICAgICAgICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExv
ZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChtX2N1cnJlbnROb2RlLT5sb2NhbCgpLCBEYXRhRm9y
bWF0RGVhZCkpOworICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERhdGFGb3JtYXREZWFk
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU2
NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTg1LDkgKzIxODUsMTYgQEAgcHVibGljOgogICAgIC8vIGZsYWcg
aXMgY2xlYXJlZCwgaW5kaWNhdGluZyBubyBmdXJ0aGVyIGNvZGUgZ2VuZXJhdGlvbiBzaG91bGQg
dGFrZSBwbGFjZS4KICAgICBib29sIG1fY29tcGlsZU9rYXk7CiAgICAgCi0gICAgdm9pZCByZWNv
cmRTZXRMb2NhbChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgVmFsdWVTb3VyY2UgdmFsdWVTb3Vy
Y2UpCisgICAgdm9pZCByZWNvcmRTZXRMb2NhbCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGJ5
dGVjb2RlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgbWFjaGluZVJlZywgRGF0YUZvcm1hdCBmb3JtYXQp
CiAgICAgewotICAgICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNl
dExvY2FsKG9wZXJhbmQsIHZhbHVlU291cmNlLmRhdGFGb3JtYXQoKSkpOworICAgICAgICBtX3N0
cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKGJ5dGVjb2RlUmVnLCBt
YWNoaW5lUmVnLCBmb3JtYXQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCByZWNvcmRTZXRMb2Nh
bChEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBtX2N1cnJlbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAg
cmVjb3JkU2V0TG9jYWwodmFyaWFibGUtPmxvY2FsKCksIHZhcmlhYmxlLT5sb2NhbCgpLCBmb3Jt
YXQpOwogICAgIH0KIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTY3
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMjIgKzQwLDIyIEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkKICAgICAgICAgb3V0LnByaW50KCJJc0RlYWQiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBWYWx1ZUluSlNTdGFjazoKLSAgICAgICAgb3V0LnByaW50KCJJblN0YWNr
Iik7CisgICAgICAgIG91dC5wcmludCgiSlM6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKLSAgICAgICAgb3V0LnByaW50KCJJ
bnQzMiIpOworICAgICAgICBvdXQucHJpbnQoIkludDMyOnIiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50NTJJbkpTU3RhY2s6Ci0gICAgICAgIG91dC5w
cmludCgiSW50NTIiKTsKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1MjpyIiwgdmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENlbGxJbkpTU3RhY2s6Ci0gICAgICAg
IG91dC5wcmludCgiQ2VsbCIpOworICAgICAgICBvdXQucHJpbnQoIkNlbGw6ciIsIHZpcnR1YWxS
ZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgot
ICAgICAgICBvdXQucHJpbnQoIkJvb2wiKTsKKyAgICAgICAgb3V0LnByaW50KCJCb29sOnIiLCB2
aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG91YmxlSW5KU1N0
YWNrOgotICAgICAgICBvdXQucHJpbnQoIkRvdWJsZSIpOworICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZTpyIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFy
Z3VtZW50c1NvdXJjZToKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudHMiKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1Njcy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDU5ICsxMTUsNjcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVHJpdmlh
bGx5UmVjb3ZlcmFibAogY2xhc3MgVmFsdWVTb3VyY2UgewogcHVibGljOgogICAgIFZhbHVlU291
cmNlKCkKLSAgICAgICAgOiBtX3ZhbHVlKGlkRnJvbUtpbmQoU291cmNlTm90U2V0KSkKKyAgICAg
ICAgOiBtX2tpbmQoU291cmNlTm90U2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgZXhwbGlj
aXQgVmFsdWVTb3VyY2UoVmFsdWVTb3VyY2VLaW5kIHZhbHVlU291cmNlS2luZCkKLSAgICAgICAg
OiBtX3ZhbHVlKGlkRnJvbUtpbmQodmFsdWVTb3VyY2VLaW5kKSkKKyAgICAgICAgOiBtX2tpbmQo
dmFsdWVTb3VyY2VLaW5kKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGtpbmQoKSAhPSBTb3VyY2VO
b3RTZXQpOwotICAgICAgICBBU1NFUlQoa2luZCgpICE9IEhhdmVOb2RlKTsKKyAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBBcmd1bWVudHNTb3VyY2UgfHwga2luZCgpID09IFNvdXJjZUlzRGVhZCk7
CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IFZhbHVlU291cmNlKE1pbmlmaWVkSUQgaWQpCi0g
ICAgICAgIDogbV92YWx1ZShpZCkKKyAgICAgICAgOiBtX2tpbmQoSGF2ZU5vZGUpCisgICAgICAg
ICwgbV92YWx1ZShpZC5iaXRzKCkpCiAgICAgewogICAgICAgICBBU1NFUlQoISFpZCk7CiAgICAg
ICAgIEFTU0VSVChraW5kKCkgPT0gSGF2ZU5vZGUpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMg
VmFsdWVTb3VyY2UgZm9yRmx1c2hGb3JtYXQoRmx1c2hGb3JtYXQgZm9ybWF0KQorICAgIFZhbHVl
U291cmNlKFZhbHVlU291cmNlS2luZCB2YWx1ZVNvdXJjZUtpbmQsIFZpcnR1YWxSZWdpc3RlciB3
aGVyZSkKKyAgICAgICAgOiBtX2tpbmQodmFsdWVTb3VyY2VLaW5kKQorICAgICAgICAsIG1fdmFs
dWUoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHdoZXJlLm9mZnNldCgpKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChraW5kKCkgIT0gU291cmNlTm90U2V0KTsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSAh
PSBIYXZlTm9kZSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBWYWx1ZVNvdXJjZSBmb3JGbHVz
aEZvcm1hdChWaXJ0dWFsUmVnaXN0ZXIgd2hlcmUsIEZsdXNoRm9ybWF0IGZvcm1hdCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgICAgIGNhc2UgRGVhZEZsdXNoOgogICAg
ICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKFNvdXJjZUlzRGVhZCk7CiAgICAgICAgIGNhc2Ug
Rmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoVmFsdWVJbkpT
U3RhY2spOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrLCB3
aGVyZSk7CiAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgIHJldHVybiBW
YWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291
cmNlKERvdWJsZUluSlNTdGFjaywgd2hlcmUpOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoK
LSAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAg
ICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2ssIHdoZXJlKTsKICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50NTJJ
bkpTU3RhY2spOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDUySW5KU1N0YWNr
LCB3aGVyZSk7CiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByZXR1cm4g
VmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3Vy
Y2UoQ2VsbEluSlNTdGFjaywgd2hlcmUpOwogICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgot
ICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEJvb2xlYW5JbkpTU3RhY2spOworICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEJvb2xlYW5JbkpTU3RhY2ssIHdoZXJlKTsKICAgICAg
ICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gVmFsdWVTb3VyY2UoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlU291cmNlIGZv
ckRhdGFGb3JtYXQoRGF0YUZvcm1hdCBkYXRhRm9ybWF0KQorICAgIHN0YXRpYyBWYWx1ZVNvdXJj
ZSBmb3JEYXRhRm9ybWF0KFZpcnR1YWxSZWdpc3RlciB3aGVyZSwgRGF0YUZvcm1hdCBkYXRhRm9y
bWF0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKGRhdGFGb3JtYXRUb1ZhbHVl
U291cmNlS2luZChkYXRhRm9ybWF0KSk7CisgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShkYXRh
Rm9ybWF0VG9WYWx1ZVNvdXJjZUtpbmQoZGF0YUZvcm1hdCksIHdoZXJlKTsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBpc1NldCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4ga2luZEZyb21J
RChtX3ZhbHVlKSAhPSBTb3VyY2VOb3RTZXQ7CisgICAgICAgIHJldHVybiBraW5kKCkgIT0gU291
cmNlTm90U2V0OwogICAgIH0KICAgICAKICAgICBWYWx1ZVNvdXJjZUtpbmQga2luZCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4ga2luZEZyb21JRChtX3ZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIG1fa2luZDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0luSlNTdGFjaygpIGNvbnN0IHsg
cmV0dXJuIEpTQzo6REZHOjppc0luSlNTdGFjayhraW5kKCkpOyB9CkBAIC0xNzgsNyArMTg2LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWVTb3VyY2VLaW5kVG9EYXRhRm9ybWF0KGtp
bmQoKSk7CiAgICAgfQogICAgIAotICAgIFZhbHVlUmVjb3ZlcnkgdmFsdWVSZWNvdmVyeShpbnQg
b3BlcmFuZCkgY29uc3QKKyAgICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVjb3ZlcnkoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzVHJpdmlhbGx5UmVjb3ZlcmFibGUoKSk7CiAgICAgICAg
IHN3aXRjaCAoa2luZCgpKSB7CkBAIC0xODksMzQgKzE5NywyNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBWYWx1
ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLCBk
YXRhRm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNl
ZEluSlNTdGFjayh2aXJ0dWFsUmVnaXN0ZXIoKSwgZGF0YUZvcm1hdCgpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKICAgICBNaW5pZmllZElEIGlkKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChraW5kKCkgPT0gSGF2ZU5vZGUpOwotICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIE1pbmlmaWVkSUQ6OmZyb21CaXRzKG1fdmFsdWUpOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgc3Rh
dGljIE1pbmlmaWVkSUQgaWRGcm9tS2luZChWYWx1ZVNvdXJjZUtpbmQga2luZCkKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VChraW5kID49IFNvdXJjZU5vdFNldCAmJiBraW5kIDwgSGF2ZU5vZGUpOwotICAgICAgICByZXR1
cm4gTWluaWZpZWRJRDo6ZnJvbUJpdHMoTWluaWZpZWRJRDo6aW52YWxpZElEKCkgLSBraW5kKTsK
KyAgICAgICAgQVNTRVJUKGlzSW5KU1N0YWNrKCkpOworICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKG1fdmFsdWUpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgVmFsdWVTb3VyY2VLaW5k
IGtpbmRGcm9tSUQoTWluaWZpZWRJRCBpZCkKLSAgICB7Ci0gICAgICAgIHVpbnRwdHJfdCBraW5k
ID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihNaW5pZmllZElEOjppbnZhbGlkSUQoKSAtIGlkLm1f
aWQpOwotICAgICAgICBpZiAoa2luZCA+PSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KEhhdmVOb2Rl
KSkKLSAgICAgICAgICAgIHJldHVybiBIYXZlTm9kZTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFZhbHVlU291cmNlS2luZD4oa2luZCk7Ci0gICAgfQorICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIAotICAgIE1pbmlmaWVkSUQgbV92YWx1ZTsKK3ByaXZhdGU6Cisg
ICAgVmFsdWVTb3VyY2VLaW5kIG1fa2luZDsKKyAgICB1aW50cHRyX3QgbV92YWx1ZTsKIH07CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyaWFibGVFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAkocmV2aXNpb24gMTU2NzIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMTAgKzU1LDEyIEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChQcmludFN0cmVhbSYg
b3UKICAgICAgICAgb3V0LnByaW50KCJEZWF0aCgiLCBpZCgpLCAiKSIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1vdkhpbnRFdmVudDoKLSAgICAgICAgb3V0LnByaW50KCJNb3ZIaW50KCIs
IGlkKCksICIsIHIiLCBvcGVyYW5kKCksICIpIik7CisgICAgICAgIG91dC5wcmludCgiTW92SGlu
dCgiLCBpZCgpLCAiLCByIiwgYnl0ZWNvZGVSZWdpc3RlcigpLCAiKSIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIG91dC5wcmludGYoIlNldExvY2Fs
KHIlZCwgJXMpIiwgb3BlcmFuZCgpLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7
CisgICAgICAgIG91dC5wcmludCgKKyAgICAgICAgICAgICJTZXRMb2NhbChtYWNoaW5lOnIiLCBt
YWNoaW5lUmVnaXN0ZXIoKSwgIiAtPiBieXRlY29kZTpyIiwgYnl0ZWNvZGVSZWdpc3RlcigpLAor
ICAgICAgICAgICAgIiwgIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSksICIpIik7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC04Miw3ICs4NCw3IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcEZp
bGxJbmZvKGNvbnN0IGMKIAogdm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wU3BpbGxJbmZvKGNvbnN0
IGNoYXIqIG5hbWUsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG5h
bWUsICIoIiwgaWQoKSwgIiwgciIsIHZpcnR1YWxSZWdpc3RlcigpLCAiLCAiLCBkYXRhRm9ybWF0
VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSwgIikiKTsKKyAgICBvdXQucHJpbnQobmFtZSwgIigiLCBp
ZCgpLCAiLCByIiwgc3BpbGxSZWdpc3RlcigpLCAiLCAiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0
YUZvcm1hdCgpKSwgIikiKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmgJKHJldmlzaW9u
IDE1NjcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw4ICs2MSw3IEBAIGVudW0gVmFyaWFibGVFdmVudEtpbmQg
ewogICAgIC8vIGJ1dCB0aGF0IGl0IGhhcyBub3QgYmVlbiBzdG9yZWQgaW50byB0aGF0IG9wZXJh
bmQuCiAgICAgTW92SGludEV2ZW50LAogICAgIAotICAgIC8vIEEgU2V0TG9jYWxFdmVudCBtZWFu
cyB0aGF0IGEgbm9kZSdzIHZhbHVlIGhhcyBhY3R1YWxseSBiZWVuIHN0b3JlZCBpbnRvIHRoZQot
ICAgIC8vIGJ5dGVjb2RlIG9wZXJhbmQgdGhhdCBpdCdzIGFzc29jaWF0ZWQgd2l0aC4KKyAgICAv
LyBBIFNldExvY2FsRXZlbnQgbWVhbnMgdGhhdCBhIG5vZGUncyB2YWx1ZSBoYXMgYmVlbiBzdG9y
ZWQgaW50byB0aGUgc3RhY2suCiAgICAgU2V0TG9jYWxFdmVudCwKICAgICAKICAgICAvLyBVc2Vk
IHRvIGluZGljYXRlIGFuIHVuaW5pdGlhbGl6ZWQgVmFyaWFibGVFdmVudC4gRG9uJ3QgdXNlIGZv
ciBvdGhlcgpAQCAtMTA0LDggKzEwMyw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCEoZGF0
YUZvcm1hdCAmIERhdGFGb3JtYXRKUykpOwogI2VuZGlmCiAgICAgICAgIFZhcmlhYmxlRXZlbnQg
ZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1faWQgPSBpZDsKLSAgICAgICAgZXZlbnQudS5ncHIgPSBn
cHI7CisgICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5iaXRzKCk7CisgICAgICAgIGV2ZW50
Lm1fcmVwcmVzZW50YXRpb24uZ3ByID0gZ3ByOwogICAgICAgICBldmVudC5tX2tpbmQgPSBraW5k
OwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQgPSBkYXRhRm9ybWF0OwogICAgICAgICByZXR1
cm4gZXZlbnQ7CkBAIC0xMTYsOSArMTE1LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQgPT0gQmlydGhUb0ZpbGwgfHwga2luZCA9PSBGaWxsKTsKICAgICAgICAgVmFyaWFi
bGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQubV9pZCA9IGlkOwotICAgICAgICBldmVudC51
LnBhaXIudGFnR1BSID0gdGFnR1BSOwotICAgICAgICBldmVudC51LnBhaXIucGF5bG9hZEdQUiA9
IHBheWxvYWRHUFI7CisgICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5iaXRzKCk7CisgICAg
ICAgIGV2ZW50Lm1fcmVwcmVzZW50YXRpb24ucGFpci50YWdHUFIgPSB0YWdHUFI7CisgICAgICAg
IGV2ZW50Lm1fcmVwcmVzZW50YXRpb24ucGFpci5wYXlsb2FkR1BSID0gcGF5bG9hZEdQUjsKICAg
ICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKICAgICAgICAgZXZlbnQubV9kYXRhRm9ybWF0ID0g
RGF0YUZvcm1hdEpTOwogICAgICAgICByZXR1cm4gZXZlbnQ7CkBAIC0xMjksOCArMTI4LDggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQmlydGhUb0ZpbGwgfHwga2lu
ZCA9PSBGaWxsKTsKICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQu
bV9pZCA9IGlkOwotICAgICAgICBldmVudC51LmZwciA9IGZwcjsKKyAgICAgICAgZXZlbnQubV93
aGljaC5pZCA9IGlkLmJpdHMoKTsKKyAgICAgICAgZXZlbnQubV9yZXByZXNlbnRhdGlvbi5mcHIg
PSBmcHI7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IGtpbmQ7CiAgICAgICAgIGV2ZW50Lm1fZGF0
YUZvcm1hdCA9IERhdGFGb3JtYXREb3VibGU7CiAgICAgICAgIHJldHVybiBldmVudDsKQEAgLTE0
MCw4ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCA9PSBCaXJ0
aFRvU3BpbGwgfHwga2luZCA9PSBTcGlsbCk7CiAgICAgICAgIFZhcmlhYmxlRXZlbnQgZXZlbnQ7
Ci0gICAgICAgIGV2ZW50Lm1faWQgPSBpZDsKLSAgICAgICAgZXZlbnQudS52aXJ0dWFsUmVnID0g
dmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpOworICAgICAgICBldmVudC5tX3doaWNoLmlkID0gaWQu
Yml0cygpOworICAgICAgICBldmVudC5tX3JlcHJlc2VudGF0aW9uLnZpcnR1YWxSZWcgPSB2aXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0KCk7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IGtpbmQ7CiAgICAg
ICAgIGV2ZW50Lm1fZGF0YUZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwpA
QCAtMTUwLDI1ICsxNDksMjcgQEAgcHVibGljOgogICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IGRl
YXRoKE1pbmlmaWVkSUQgaWQpCiAgICAgewogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50Owot
ICAgICAgICBldmVudC5tX2lkID0gaWQ7CisgICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5i
aXRzKCk7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IERlYXRoOwogICAgICAgICByZXR1cm4gZXZl
bnQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IHNldExvY2FsKFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIERhdGFGb3JtYXQgZm9ybWF0KQorICAgIHN0YXRp
YyBWYXJpYWJsZUV2ZW50IHNldExvY2FsKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnl0ZWNv
ZGVSZWcsIFZpcnR1YWxSZWdpc3RlciBtYWNoaW5lUmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkKICAg
ICB7CiAgICAgICAgIFZhcmlhYmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50LnUudmlydHVh
bFJlZyA9IHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKTsKKyAgICAgICAgZXZlbnQubV93aGljaC52
aXJ0dWFsUmVnID0gbWFjaGluZVJlZy5vZmZzZXQoKTsKKyAgICAgICAgZXZlbnQubV9yZXByZXNl
bnRhdGlvbi52aXJ0dWFsUmVnID0gYnl0ZWNvZGVSZWcub2Zmc2V0KCk7CiAgICAgICAgIGV2ZW50
Lm1fa2luZCA9IFNldExvY2FsRXZlbnQ7CiAgICAgICAgIGV2ZW50Lm1fZGF0YUZvcm1hdCA9IGZv
cm1hdDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgVmFy
aWFibGVFdmVudCBtb3ZIaW50KE1pbmlmaWVkSUQgaWQsIGludCBvcGVyYW5kKQorICAgIHN0YXRp
YyBWYXJpYWJsZUV2ZW50IG1vdkhpbnQoTWluaWZpZWRJRCBpZCwgVmlydHVhbFJlZ2lzdGVyIGJ5
dGVjb2RlUmVnKQogICAgIHsKICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAg
ZXZlbnQubV9pZCA9IGlkOwotICAgICAgICBldmVudC51LnZpcnR1YWxSZWcgPSBvcGVyYW5kOwor
ICAgICAgICBldmVudC5tX3doaWNoLmlkID0gaWQuYml0cygpOworICAgICAgICBldmVudC5tX3Jl
cHJlc2VudGF0aW9uLnZpcnR1YWxSZWcgPSBieXRlY29kZVJlZy5vZmZzZXQoKTsKICAgICAgICAg
ZXZlbnQubV9raW5kID0gTW92SGludEV2ZW50OwogICAgICAgICByZXR1cm4gZXZlbnQ7CiAgICAg
fQpAQCAtMTgzLDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBC
aXJ0aFRvRmlsbCB8fCBtX2tpbmQgPT0gRmlsbAogICAgICAgICAgICAgICAgfHwgbV9raW5kID09
IEJpcnRoVG9TcGlsbCB8fCBtX2tpbmQgPT0gU3BpbGwKICAgICAgICAgICAgICAgIHx8IG1fa2lu
ZCA9PSBEZWF0aCB8fCBtX2tpbmQgPT0gTW92SGludEV2ZW50KTsKLSAgICAgICAgcmV0dXJuIG1f
aWQ7CisgICAgICAgIHJldHVybiBNaW5pZmllZElEOjpmcm9tQml0cyhtX3doaWNoLmlkKTsKICAg
ICB9CiAgICAgCiAgICAgRGF0YUZvcm1hdCBkYXRhRm9ybWF0KCkgY29uc3QKQEAgLTIwMiw3ICsy
MDMsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgQVNTRVJUKCEo
bV9kYXRhRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIHUu
Z3ByOworICAgICAgICByZXR1cm4gbV9yZXByZXNlbnRhdGlvbi5ncHI7CiAgICAgfQogICAgIAog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0yMTAsMTMgKzIxMSwxMyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9GaWxsIHx8IG1fa2luZCA9PSBGaWxs
KTsKICAgICAgICAgQVNTRVJUKG1fZGF0YUZvcm1hdCAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAg
IHJldHVybiB1LnBhaXIudGFnR1BSOworICAgICAgICByZXR1cm4gbV9yZXByZXNlbnRhdGlvbi5w
YWlyLnRhZ0dQUjsKICAgICB9CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcGF5bG9h
ZEdQUigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9GaWxs
IHx8IG1fa2luZCA9PSBGaWxsKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YUZvcm1hdCAmIERhdGFG
b3JtYXRKUyk7Ci0gICAgICAgIHJldHVybiB1LnBhaXIucGF5bG9hZEdQUjsKKyAgICAgICAgcmV0
dXJuIG1fcmVwcmVzZW50YXRpb24ucGFpci5wYXlsb2FkR1BSOwogICAgIH0KICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTMyXzY0KQogICAgIApAQCAtMjI0LDIyICsyMjUsMjggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBtX2tpbmQgPT0gRmls
bCk7CiAgICAgICAgIEFTU0VSVChtX2RhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7Ci0g
ICAgICAgIHJldHVybiB1LmZwcjsKKyAgICAgICAgcmV0dXJuIG1fcmVwcmVzZW50YXRpb24uZnBy
OwogICAgIH0KICAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkgY29u
c3QKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxSZWdpc3RlcigpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9TcGlsbCB8fCBtX2tpbmQgPT0gU3BpbGwpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPih1LnZpcnR1YWxSZWcp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihtX3JlcHJlc2Vu
dGF0aW9uLnZpcnR1YWxSZWcpOwogICAgIH0KICAgICAKLSAgICBpbnQgb3BlcmFuZCgpIGNvbnN0
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJ5dGVjb2RlUmVnaXN0ZXIoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fa2luZCA9PSBTZXRMb2NhbEV2ZW50IHx8IG1fa2luZCA9PSBNb3ZIaW50
RXZlbnQpOwotICAgICAgICByZXR1cm4gdS52aXJ0dWFsUmVnOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihtX3JlcHJlc2VudGF0aW9uLnZpcnR1YWxSZWcpOwog
ICAgIH0KICAgICAKLSAgICBjb25zdCBWYXJpYWJsZVJlcHJlc2VudGF0aW9uJiB2YXJpYWJsZVJl
cHJlc2VudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gdTsgfQorICAgIFZpcnR1YWxSZWdpc3RlciBt
YWNoaW5lUmVnaXN0ZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBT
ZXRMb2NhbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4obV93aGljaC52aXJ0dWFsUmVnKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgVmFyaWFibGVS
ZXByZXNlbnRhdGlvbiYgdmFyaWFibGVSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVwcmVzZW50YXRpb247IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICAKQEAgLTI0Nyw3ICsyNTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBGaWxs
SW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAot
ICAgIE1pbmlmaWVkSUQgbV9pZDsKKyAgICB1bmlvbiB7CisgICAgICAgIGludCB2aXJ0dWFsUmVn
OworICAgICAgICB1aW50cHRyX3QgaWQ7CisgICAgfSBtX3doaWNoOwogICAgIAogICAgIC8vIEZv
ciBCaXJ0aFRvRmlsbCwgRmlsbDoKICAgICAvLyAgIC0gVGhlIEdQUiBvciBGUFIsIG9yIGEgR1BS
IHBhaXIuCkBAIC0yNTcsNyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICAvLyAgIC0gVGhlIGJ5dGVj
b2RlIG9wZXJhbmQuCiAgICAgLy8gRm9yIERlYXRoOgogICAgIC8vICAgLSBVbnVzZWQuCi0gICAg
VmFyaWFibGVSZXByZXNlbnRhdGlvbiB1OworICAgIFZhcmlhYmxlUmVwcmVzZW50YXRpb24gbV9y
ZXByZXNlbnRhdGlvbjsKICAgICAKICAgICBpbnQ4X3QgbV9raW5kOwogICAgIGludDhfdCBtX2Rh
dGFGb3JtYXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHJldmlzaW9uIDE1NjcyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Miw2ICsxNDIsOCBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0
KAogCiAgICAgLy8gU3RlcCAyOiBDcmVhdGUgYSBtb2NrLXVwIG9mIHRoZSBERkcncyBzdGF0ZSBh
bmQgZXhlY3V0ZSB0aGUgZXZlbnRzLgogICAgIE9wZXJhbmRzPFZhbHVlU291cmNlPiBvcGVyYW5k
U291cmNlcyhjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBvcGVyYW5kU291cmNlcy5zaXplKCk7IGktLTspCisgICAgICAgIG9w
ZXJhbmRTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoU291cmNlSXNEZWFkKTsKICAgICBIYXNoTWFw
PE1pbmlmaWVkSUQsIE1pbmlmaWVkR2VuZXJhdGlvbkluZm8+IGdlbmVyYXRpb25JbmZvczsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydEluZGV4OyBpIDwgaW5kZXg7ICsraSkgewogICAgICAg
ICBjb25zdCBWYXJpYWJsZUV2ZW50JiBldmVudCA9IGF0KGkpOwpAQCAtMTY1LDEyICsxNjcsMTIg
QEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTW92SGludEV2ZW50OgotICAgICAgICAgICAg
aWYgKG9wZXJhbmRTb3VyY2VzLmhhc09wZXJhbmQoZXZlbnQub3BlcmFuZCgpKSkKLSAgICAgICAg
ICAgICAgICBvcGVyYW5kU291cmNlcy5zZXRPcGVyYW5kKGV2ZW50Lm9wZXJhbmQoKSwgVmFsdWVT
b3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAgICAgICAgaWYgKG9wZXJhbmRTb3VyY2VzLmhhc09w
ZXJhbmQoZXZlbnQuYnl0ZWNvZGVSZWdpc3RlcigpKSkKKyAgICAgICAgICAgICAgICBvcGVyYW5k
U291cmNlcy5zZXRPcGVyYW5kKGV2ZW50LmJ5dGVjb2RlUmVnaXN0ZXIoKSwgVmFsdWVTb3VyY2Uo
ZXZlbnQuaWQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU2V0TG9jYWxF
dmVudDoKLSAgICAgICAgICAgIGlmIChvcGVyYW5kU291cmNlcy5oYXNPcGVyYW5kKGV2ZW50Lm9w
ZXJhbmQoKSkpCi0gICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChldmVu
dC5vcGVyYW5kKCksIFZhbHVlU291cmNlOjpmb3JEYXRhRm9ybWF0KGV2ZW50LmRhdGFGb3JtYXQo
KSkpOworICAgICAgICAgICAgaWYgKG9wZXJhbmRTb3VyY2VzLmhhc09wZXJhbmQoZXZlbnQuYnl0
ZWNvZGVSZWdpc3RlcigpKSkKKyAgICAgICAgICAgICAgICBvcGVyYW5kU291cmNlcy5zZXRPcGVy
YW5kKGV2ZW50LmJ5dGVjb2RlUmVnaXN0ZXIoKSwgVmFsdWVTb3VyY2U6OmZvckRhdGFGb3JtYXQo
ZXZlbnQubWFjaGluZVJlZ2lzdGVyKCksIGV2ZW50LmRhdGFGb3JtYXQoKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMTgzLDcgKzE4NSw3IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVh
bTo6cmVjb25zdHJ1Y3QoCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9wZXJhbmRTb3Vy
Y2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlU291cmNlJiBzb3VyY2UgPSBvcGVyYW5k
U291cmNlc1tpXTsKICAgICAgICAgaWYgKHNvdXJjZS5pc1RyaXZpYWxseVJlY292ZXJhYmxlKCkp
IHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5
KG9wZXJhbmRTb3VyY2VzLm9wZXJhbmRGb3JJbmRleChpKSk7CisgICAgICAgICAgICB2YWx1ZVJl
Y292ZXJpZXNbaV0gPSBzb3VyY2UudmFsdWVSZWNvdmVyeSgpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213121</attachid>
            <date>2013-10-01 14:35:56 -0700</date>
            <delta_ts>2013-10-01 15:17:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32378</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEzLTEwLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyaWFibGUgZXZlbnQgc3RyZWFtIChmb3IgREZHIE9TUiBleGl0KSBzaG91bGQgYmUgZXhwbGlj
aXQgYWJvdXQgd2hlcmUgb24gdGhlIHN0YWNrIGEgU2V0TG9jYWwgcHV0IGEgdmFsdWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE3OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTm93IGlm
IHRoZSBERkcgc3RvcmVzIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlIGludG8gdGhlIHN0YWNrIGV4
cGxpY2l0bHkgdmlhIGEgU2V0TG9jYWwsCisgICAgICAgIGl0IHdpbGwgcmVjb3JkIHdoZXJlIG9u
IHRoZSBzdGFjayBpdCBzdG9yZWQgdGhlIHZhbHVlIGluIGFkZGl0aW9uIHRvIHJlY29yZGluZyB3
aGVyZSBvbgorICAgICAgICB0aGUgc3RhY2sgdGhlIGJ5dGVjb2RlIHdvdWxkIGhhdmUgZG9uZSB0
aGUgU2V0TG9jYWwuIFByZXZpb3VzbHkgaXQganVzdCByZWNvcmRlZCB0aGUKKyAgICAgICAgZm9y
bWF0IGFuZCB0aGUgYnl0ZWNvZGUgdmFyaWFibGUuIFJlY29yZGluZyBqdXN0IHRoZSBieXRlY29k
ZSB2YXJpYWJsZSBpcyBjdXJyZW50bHkgZmluZQorICAgICAgICBzaW5jZSB0aGUgREZHIGFsd2F5
cyBleGVjdXRlcyBTZXRMb2NhbCdzIHRvIHRoZSBzYW1lIHN0YWNrIGxvY2F0aW9uIHRoYXQgdGhl
IGJ5dGVjb2RlCisgICAgICAgIHdvdWxkIGhhdmUgdXNlZC4gQnV0IHRoYXQgcHJldmVudHMgc3Rh
Y2sgY29tcHJlc3Npb24gKHdlYmtpdC5vcmcvYi8xMjIwMjQpIHNvIHRoaXMgcGF0Y2gKKyAgICAg
ICAgYWxsb3dzIHRoZSBTZXRMb2NhbCB0byBzYXkgYm90aCB0aGUgYnl0ZWNvZGUgdmFyaWFibGUg
dGhhdCB3ZSdyZSBzcGVha2luZyBvZiBhbmQgdGhlCisgICAgICAgIGFjdHVhbCBzdGFjayBsb2Nh
dGlvbiB0byB3aGljaCB0aGUgU2V0TG9jYWwgc3RvcmVkIHRoZSB2YWx1ZS4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgaGFkIHRvIHRvdWNoIGEgbG90IG9mIGNvZGUsIHNvIEkgdG9vayB0aGUgb3Bw
b3J0dW5pdHkgdG8gYWxzbyByZXNvbHZlCisgICAgICAgIHdlYmtpdC5vcmcvYi8xMDgwMTkuCisK
KyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kcy5oOgorICAgICAgICAoSlNDOjpPcGVyYW5kczo6
aGFzT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgIChK
U0M6OkRGRzo6ZGF0YUZvcm1hdEZvcik6CisgICAgICAgICogZGZnL0RGR01pbmlmaWVkSUQuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZElEOjpiaXRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpNaW5pZmllZElEOjppbnZhbGlkSUQpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkSUQ6
Om90aGVySW52YWxpZElEKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTW92SGludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmxpbmVTdGFydCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpyZWNvcmRTZXRMb2NhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNv
dXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXApOgorICAgICAg
ICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNl
OjpWYWx1ZVNvdXJjZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmZvckZsdXNo
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9yRGF0YUZvcm1hdCk6
CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpWYWx1ZVNvdXJjZTo6a2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6
OnZhbHVlUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjppZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OnZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAg
ICogZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxl
RXZlbnQ6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGls
bEluZm8pOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChKU0M6
OkRGRzo6VmFyaWFibGVFdmVudDo6ZmlsbEdQUik6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFi
bGVFdmVudDo6ZmlsbFBhaXIpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZp
bGxGUFIpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OnNwaWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkZWF0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
VmFyaWFibGVFdmVudDo6c2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZl
bnQ6Om1vdkhpbnQpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpncHIpOgorICAgICAgICAoSlNDOjpERkc6
OlZhcmlhYmxlRXZlbnQ6OnRhZ0dQUik6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVu
dDo6cGF5bG9hZEdQUik6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudDo6ZnByKToK
KyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpzcGlsbFJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpieXRlY29kZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjptYWNoaW5lUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpERkc6OlZhcmlhYmxlRXZlbnQ6OnZhcmlhYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJp
YWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisKIDIwMTMtMTAtMDEgIE5hZGF2IFJvdGVt
ICA8bnJvdGVtQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBtdWx0aXBsZSBPU1JF
eGl0IGNhbGxzIGludG8gb25lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzLmgJKHJldmlzaW9uIDE1NjcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGVyYW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKSA8IG51bWJlck9m
TG9jYWxzKCk7CiAgICAgfQorICAgIGJvb2wgaGFzT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIgcmVn
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc09wZXJhbmQocmVnLm9mZnNldCgpKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVyYW5kLCBjb25zdCBUJiB2
YWx1ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCShyZXZpc2lvbiAxNTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKKyNpbmNsdWRlICJE
YXRhRm9ybWF0LmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIApAQCAtODgsNiArODksMjggQEAgaW5saW5lIFVzZUtpbmQgdXNlS2luZEZv
cihGbHVzaEZvcm1hdCBmbwogICAgIHJldHVybiBVbnR5cGVkVXNlOwogfQogCitpbmxpbmUgRGF0
YUZvcm1hdCBkYXRhRm9ybWF0Rm9yKEZsdXNoRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBzd2l0Y2gg
KGZvcm1hdCkgeworICAgIGNhc2UgRGVhZEZsdXNoOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1h
dERlYWQ7CisgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgcmV0dXJuIERhdGFGb3Jt
YXRKUzsKKyAgICBjYXNlIEZsdXNoZWREb3VibGU6CisgICAgICAgIHJldHVybiBEYXRhRm9ybWF0
RG91YmxlOworICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1h
dEludDMyOworICAgIGNhc2UgRmx1c2hlZEludDUyOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1h
dEludDUyOworICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgIHJldHVybiBEYXRhRm9ybWF0
Q2VsbDsKKyAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1h
dEJvb2xlYW47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIERhdGFGb3JtYXREZWFkOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
IG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZElELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZElELmgJKHJldmlzaW9uIDE1NjcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWluaWZpZWRJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyMCArNjYsMjEgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVySW52YWxpZElEKCk7IH0KICAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIE1pbmlmaWVkTm9kZTsKLSAgICBmcmllbmQgY2xhc3MgVmFsdWVTb3VyY2U7Ci0gICAg
Ci0gICAgc3RhdGljIHVpbnRwdHJfdCBpbnZhbGlkSUQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpOyB9Ci0gICAgc3RhdGljIHVpbnRw
dHJfdCBvdGhlckludmFsaWRJRCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSk7IH0KLSAgICAKICAgICBzdGF0aWMgTWluaWZpZWRJRCBm
cm9tQml0cyh1aW50cHRyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBNaW5pZmllZElEIHJlc3Vs
dDsKICAgICAgICAgcmVzdWx0Lm1faWQgPSB2YWx1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CisgICAgCisgICAgdWludHB0cl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CiAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1pbmlmaWVkTm9kZTsKKyAgICAKKyAgICBz
dGF0aWMgdWludHB0cl90IGludmFsaWRJRCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSk7IH0KKyAgICBzdGF0aWMgdWludHB0cl90IG90
aGVySW52YWxpZElEKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oLTIpKTsgfQorICAgIAogICAgIHVpbnRwdHJfdCBtX2lkOwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxNTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI2LDcgKzIw
MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAvLyBJbmRpY2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byByZXRyaWV2
ZSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIC8vIHRoaXMgYnl0ZWNvZGUgdmFyaWFibGUgZnJv
bSByZWdpc3RlcnMgb3Igb3RoZXIgbG9jYXRpb25zIGluIHRoZSBzdGFjaywKICAgICAgICAgICAg
IC8vIGJ1dCB0aGF0IGl0IGlzIHN0b3JlZCBhcyBhIGRvdWJsZS4KLSAgICAgICAgICAgIHJlY29y
ZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOwor
ICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9k
ZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICBy
ZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjaykp
OworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIwNDMsNyArMjA0Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQ
UlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNl
bGxHUFIsIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpKTsKICAgICAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9j
YWwoKSwgVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjaykpOworICAgICAgICAgICAgcmVjb3JkU2V0
TG9jYWwoRGF0YUZvcm1hdENlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMjA1MSw3ICsyMDUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1
ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAg
ICAgICAgbm9SZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5s
b2NhbCgpLCBWYWx1ZVNvdXJjZShCb29sZWFuSW5KU1N0YWNrKSk7CisgICAgICAgICAgICByZWNv
cmRTZXRMb2NhbChEYXRhRm9ybWF0Qm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAgICAgCkBAIC0yMDYwLDcgKzIwNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2YWx1ZS5mcHIoKSwgSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2Fs
KCksIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOworICAgICAgICAgICAgICAgIHJlY29y
ZFNldExvY2FsKERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMDY4LDcgKzIwNjgsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KHZhbHVlLnBheWxvYWRHUFIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bG9jYWwo
KSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGls
ZXI6OnRhZ0Zvcihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsK
LSAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKFZh
bHVlSW5KU1N0YWNrKSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0SlMp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBzdG9yaW5nIGFuIGFyZ3Vt
ZW50cyBvYmplY3QgdGhhdCBoYXMgYmVlbiBvcHRpbWl6ZWQgYXdheSwKICAgICAgICAgICAgIC8v
IG91ciB2YXJpYWJsZSBldmVudCBzdHJlYW0gZm9yIE9TUiBleGl0IG5vdyByZWZsZWN0cyB0aGUg
b3B0aW1pemVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NjcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzMs
NyArMjMzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIC8vIEluZGljYXRlIHRoYXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIHJl
dHJpZXZlIHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgLy8gdGhpcyBieXRlY29kZSB2YXJpYWJs
ZSBmcm9tIHJlZ2lzdGVycyBvciBvdGhlciBsb2NhdGlvbnMgaW4gdGhlIHN0YWNrLAogICAgICAg
ICAgICAgLy8gYnV0IHRoYXQgaXQgaXMgc3RvcmVkIGFzIGEgZG91YmxlLgotICAgICAgICAgICAg
cmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNr
KSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIzNDEsNyArMjM0MSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IFNwZWN1bGF0ZUludDMyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAg
ICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKEludDMySW5KU1N0
YWNrKSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0SW50MzIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjM0OSw3ICsyMzQ5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIG1faml0LnN0b3JlNjQodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpKTsKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAg
ICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NTJJbkpT
U3RhY2spKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERhdGFGb3JtYXRJbnQ1Mik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMzU4LDcgKzIz
NTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTY0KGNlbGxHUFIsIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKICAg
ICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9k
ZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjaykpOworICAgICAgICAgICAgcmVj
b3JkU2V0TG9jYWwoRGF0YUZvcm1hdENlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJh
bmQgYm9vbGVhbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTY0KGJvb2xlYW4uZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkp
KTsKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgcmVjb3JkU2V0TG9j
YWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjaykpOworICAgICAg
ICAgICAgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdEJvb2xlYW4pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjM3NSw3ICsyMzc1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuc3Rv
cmU2NCh2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkp
OwogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNr
KSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0SlMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBzdG9yaW5nIGFuIGFyZ3VtZW50cyBvYmplY3Qg
dGhhdCBoYXMgYmVlbiBvcHRpbWl6ZWQgYXdheSwKICAgICAgICAgICAgIC8vIG91ciB2YXJpYWJs
ZSBldmVudCBzdHJlYW0gZm9yIE9TUiBleGl0IG5vdyByZWZsZWN0cyB0aGUgb3B0aW1pemVkCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTU2NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjAsNyArMTUyMCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUKICAgICBpZiAoY2hpbGQtPm9wKCkg
PT0gVUludDMyVG9OdW1iZXIpCiAgICAgICAgIG5vdGljZU9TUkJpcnRoKGNoaWxkLT5jaGlsZDEo
KS5ub2RlKCkpOwogICAgIAotICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVu
dDo6bW92SGludChNaW5pZmllZElEKGNoaWxkKSwgbm9kZS0+bG9jYWwoKS5vZmZzZXQoKSkpOwor
ICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6bW92SGludChNaW5pZmll
ZElEKGNoaWxkKSwgbm9kZS0+bG9jYWwoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTW92SGludEFuZENoZWNrKE5vZGUqIG5vZGUpCkBAIC0xNTM3LDkgKzE1MzcsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoCiAgICAgdW5zaWduZWQgYXJn
dW1lbnRQb3NpdGlvblN0YXJ0ID0gbm9kZS0+YXJndW1lbnRQb3NpdGlvblN0YXJ0KCk7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CiAg
ICAgICAgIFZhbHVlU291cmNlIHNvdXJjZSA9IFZhbHVlU291cmNlOjpmb3JGbHVzaEZvcm1hdCgK
KyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpLAogICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRpb25TdGFydCAr
IGldLmZsdXNoRm9ybWF0KCkpOwotICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tp
XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KAotICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKTsKKyAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbaV0gPSBzb3VyY2UudmFsdWVSZWNvdmVy
eSgpOwogICAgIH0KIH0KIApAQCAtMTU4MSw4ICsxNTgxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZy
YW1lKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVTb3VyY2UgdmFs
dWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjayk7Ci0gICAgICAgIG1fc3RyZWFt
LT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6c2V0TG9jYWwodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSksIHZhbHVlU291cmNlLmRhdGFGb3JtYXQoKSkpOworICAgICAgICBtX3N0cmVh
bS0+YXBwZW5kQW5kTG9nKAorICAgICAgICAgICAgVmFyaWFibGVFdmVudDo6c2V0TG9jYWwoCisg
ICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpLCBEYXRhRm9ybWF0SlMpKTsKICAgICB9CiAgICAgCiAgICAgbV9z
dGF0ZS5yZXNldCgpOwpAQCAtMTU5MCwxNyArMTU5MSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSk7Ci0gICAgICAg
IFZhbHVlU291cmNlIHZhbHVlU291cmNlOwogICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAg
ICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFNvdXJjZUlzRGVhZCk7Ci0gICAgICAgIGVsc2Ug
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0FyZ3VtZW50c0FsaWFzKCkpCi0gICAg
ICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEFyZ3VtZW50c1NvdXJjZSk7CisgICAg
ICAgICAgICBjb250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBTZXRMb2NhbCdzLgor
ICAgICAgICAKKyAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKKyAgICAgICAg
aWYgKHZhcmlhYmxlLT5pc0FyZ3VtZW50c0FsaWFzKCkpCisgICAgICAgICAgICBmb3JtYXQgPSBE
YXRhRm9ybWF0QXJndW1lbnRzOwogICAgICAgICBlbHNlIGlmICghbm9kZS0+cmVmQ291bnQoKSkK
LSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoU291cmNlSXNEZWFkKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3Mu
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2U6OmZv
ckZsdXNoRm9ybWF0KG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpKTsK
LSAgICAgICAgLy8gRklYTUU6IERvbid0IGVtaXQgU2V0TG9jYWwoRGVhZCkuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwMTkKLSAgICAgICAgbV9zdHJlYW0tPmFw
cGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpKSwgdmFsdWVTb3VyY2UuZGF0YUZvcm1hdCgpKSk7CisgICAgICAgICAgICBmb3JtYXQgPSBk
YXRhRm9ybWF0Rm9yKHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKTsKKyAgICAgICAgbV9zdHJlYW0t
PmFwcGVuZEFuZExvZygKKyAgICAgICAgICAgIFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGkpLCB2YXJpYWJsZS0+bG9jYWwoKSwgZm9ybWF0KSk7CiAgICAg
fQogICAgIAogICAgIG1fbGFzdFNldE9wZXJhbmQgPSBWaXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTE2
NTAsNyArMTY1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDogewogICAgICAg
ICAgICAgICAgIG1fbGFzdFNldE9wZXJhbmQgPSBtX2N1cnJlbnROb2RlLT5sb2NhbCgpOwotICAg
ICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6c2V0TG9j
YWwobV9jdXJyZW50Tm9kZS0+bG9jYWwoKSwgRGF0YUZvcm1hdERlYWQpKTsKKyAgICAgICAgICAg
ICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RGVhZCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NjcyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4NSw5
ICsyMTg1LDE2IEBAIHB1YmxpYzoKICAgICAvLyBmbGFnIGlzIGNsZWFyZWQsIGluZGljYXRpbmcg
bm8gZnVydGhlciBjb2RlIGdlbmVyYXRpb24gc2hvdWxkIHRha2UgcGxhY2UuCiAgICAgYm9vbCBt
X2NvbXBpbGVPa2F5OwogICAgIAotICAgIHZvaWQgcmVjb3JkU2V0TG9jYWwoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQsIFZhbHVlU291cmNlIHZhbHVlU291cmNlKQorICAgIHZvaWQgcmVjb3JkU2V0
TG9jYWwoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBieXRlY29kZVJlZywgVmlydHVhbFJlZ2lz
dGVyIG1hY2hpbmVSZWcsIERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKLSAgICAgICAgbV9zdHJl
YW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChvcGVyYW5kLCB2YWx1ZVNv
dXJjZS5kYXRhRm9ybWF0KCkpKTsKKyAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJp
YWJsZUV2ZW50OjpzZXRMb2NhbChieXRlY29kZVJlZywgbWFjaGluZVJlZywgZm9ybWF0KSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdCBmb3JtYXQpCisg
ICAgeworICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV9jdXJyZW50Tm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIHJlY29yZFNldExvY2FsKHZhcmlhYmxl
LT5sb2NhbCgpLCB2YXJpYWJsZS0+bG9jYWwoKSwgZm9ybWF0KTsKICAgICB9CiAKICAgICBHZW5l
cmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU2NzIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIyICs0
MCwyMiBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
IG91dC5wcmludCgiSXNEZWFkIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmFsdWVJbkpT
U3RhY2s6Ci0gICAgICAgIG91dC5wcmludCgiSW5TdGFjayIpOworICAgICAgICBvdXQucHJpbnQo
IkpTOnIiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50
MzJJbkpTU3RhY2s6Ci0gICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKKyAgICAgICAgb3V0LnBy
aW50KCJJbnQzMjpyIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEludDUySW5KU1N0YWNrOgotICAgICAgICBvdXQucHJpbnQoIkludDUyIik7CisgICAgICAg
IG91dC5wcmludCgiSW50NTI6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgotICAgICAgICBvdXQucHJpbnQoIkNlbGwiKTsKKyAg
ICAgICAgb3V0LnByaW50KCJDZWxsOnIiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKLSAgICAgICAgb3V0LnByaW50KCJCb29s
Iik7CisgICAgICAgIG91dC5wcmludCgiQm9vbDpyIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKLSAgICAgICAgb3V0LnByaW50
KCJEb3VibGUiKTsKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGU6ciIsIHZpcnR1YWxSZWdpc3Rl
cigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcmd1bWVudHNTb3VyY2U6CiAgICAgICAg
IG91dC5wcmludCgiQXJndW1lbnRzIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw1OSArMTE1
LDY3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RyaXZpYWxseVJlY292ZXJhYmwKIGNsYXNzIFZh
bHVlU291cmNlIHsKIHB1YmxpYzoKICAgICBWYWx1ZVNvdXJjZSgpCi0gICAgICAgIDogbV92YWx1
ZShpZEZyb21LaW5kKFNvdXJjZU5vdFNldCkpCisgICAgICAgIDogbV9raW5kKFNvdXJjZU5vdFNl
dCkKICAgICB7CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IFZhbHVlU291cmNlKFZhbHVlU291
cmNlS2luZCB2YWx1ZVNvdXJjZUtpbmQpCi0gICAgICAgIDogbV92YWx1ZShpZEZyb21LaW5kKHZh
bHVlU291cmNlS2luZCkpCisgICAgICAgIDogbV9raW5kKHZhbHVlU291cmNlS2luZCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChraW5kKCkgIT0gU291cmNlTm90U2V0KTsKLSAgICAgICAgQVNTRVJU
KGtpbmQoKSAhPSBIYXZlTm9kZSk7CisgICAgICAgIEFTU0VSVChraW5kKCkgPT0gQXJndW1lbnRz
U291cmNlIHx8IGtpbmQoKSA9PSBTb3VyY2VJc0RlYWQpOwogICAgIH0KICAgICAKICAgICBleHBs
aWNpdCBWYWx1ZVNvdXJjZShNaW5pZmllZElEIGlkKQotICAgICAgICA6IG1fdmFsdWUoaWQpCisg
ICAgICAgIDogbV9raW5kKEhhdmVOb2RlKQorICAgICAgICAsIG1fdmFsdWUoaWQuYml0cygpKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKCEhaWQpOwogICAgICAgICBBU1NFUlQoa2luZCgpID09IEhh
dmVOb2RlKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlU291cmNlIGZvckZsdXNoRm9y
bWF0KEZsdXNoRm9ybWF0IGZvcm1hdCkKKyAgICBWYWx1ZVNvdXJjZShWYWx1ZVNvdXJjZUtpbmQg
dmFsdWVTb3VyY2VLaW5kLCBWaXJ0dWFsUmVnaXN0ZXIgd2hlcmUpCisgICAgICAgIDogbV9raW5k
KHZhbHVlU291cmNlS2luZCkKKyAgICAgICAgLCBtX3ZhbHVlKHN0YXRpY19jYXN0PGludHB0cl90
Pih3aGVyZS5vZmZzZXQoKSkpCisgICAgeworICAgICAgICBBU1NFUlQoa2luZCgpICE9IFNvdXJj
ZU5vdFNldCk7CisgICAgICAgIEFTU0VSVChraW5kKCkgIT0gSGF2ZU5vZGUpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgVmFsdWVTb3VyY2UgZm9yRmx1c2hGb3JtYXQoVmlydHVhbFJlZ2lzdGVy
IHdoZXJlLCBGbHVzaEZvcm1hdCBmb3JtYXQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgICAgICBjYXNlIERlYWRGbHVzaDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNv
dXJjZShTb3VyY2VJc0RlYWQpOwogICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsKKyAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjaywgd2hlcmUpOwogICAgICAgICBjYXNlIEZs
dXNoZWREb3VibGU6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0
YWNrKTsKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2ssIHdo
ZXJlKTsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByZXR1cm4gVmFs
dWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNl
KEludDMySW5KU1N0YWNrLCB3aGVyZSk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAg
ICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDUySW5KU1N0YWNrKTsKKyAgICAgICAgICAg
IHJldHVybiBWYWx1ZVNvdXJjZShJbnQ1MkluSlNTdGFjaywgd2hlcmUpOwogICAgICAgICBjYXNl
IEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJbkpTU3Rh
Y2spOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2ssIHdoZXJl
KTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJldHVybiBWYWx1
ZVNvdXJjZShCb29sZWFuSW5KU1N0YWNrKTsKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJj
ZShCb29sZWFuSW5KU1N0YWNrLCB3aGVyZSk7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKCk7CiAgICAg
fQogICAgIAotICAgIHN0YXRpYyBWYWx1ZVNvdXJjZSBmb3JEYXRhRm9ybWF0KERhdGFGb3JtYXQg
ZGF0YUZvcm1hdCkKKyAgICBzdGF0aWMgVmFsdWVTb3VyY2UgZm9yRGF0YUZvcm1hdChWaXJ0dWFs
UmVnaXN0ZXIgd2hlcmUsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBWYWx1ZVNvdXJjZShkYXRhRm9ybWF0VG9WYWx1ZVNvdXJjZUtpbmQoZGF0YUZvcm1hdCkp
OworICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoZGF0YUZvcm1hdFRvVmFsdWVTb3VyY2VLaW5k
KGRhdGFGb3JtYXQpLCB3aGVyZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIGtpbmRGcm9tSUQobV92YWx1ZSkgIT0gU291cmNlTm90
U2V0OworICAgICAgICByZXR1cm4ga2luZCgpICE9IFNvdXJjZU5vdFNldDsKICAgICB9CiAgICAg
CiAgICAgVmFsdWVTb3VyY2VLaW5kIGtpbmQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGtpbmRGcm9tSUQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX2tpbmQ7CiAgICAgfQogICAg
IAogICAgIGJvb2wgaXNJbkpTU3RhY2soKSBjb25zdCB7IHJldHVybiBKU0M6OkRGRzo6aXNJbkpT
U3RhY2soa2luZCgpKTsgfQpAQCAtMTc4LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHZhbHVlU291cmNlS2luZFRvRGF0YUZvcm1hdChraW5kKCkpOwogICAgIH0KICAgICAKLSAg
ICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVjb3ZlcnkoaW50IG9wZXJhbmQpIGNvbnN0CisgICAgVmFs
dWVSZWNvdmVyeSB2YWx1ZVJlY292ZXJ5KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c1RyaXZpYWxseVJlY292ZXJhYmxlKCkpOwogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewpAQCAt
MTg5LDM0ICsxOTcsMjcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zl
cnk6OmFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAgCiAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5K
U1N0YWNrKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKSwgZGF0YUZvcm1hdCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2sodmlydHVhbFJlZ2lz
dGVyKCksIGRhdGFGb3JtYXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgTWluaWZp
ZWRJRCBpZCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IEhhdmVOb2Rl
KTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgICAgIHJldHVybiBNaW5pZmllZElEOjpm
cm9tQml0cyhtX3ZhbHVlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIHN0YXRpYyBNaW5pZmllZElEIGlkRnJvbUtp
bmQoVmFsdWVTb3VyY2VLaW5kIGtpbmQpCisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoa2luZCA+PSBTb3VyY2VOb3RTZXQg
JiYga2luZCA8IEhhdmVOb2RlKTsKLSAgICAgICAgcmV0dXJuIE1pbmlmaWVkSUQ6OmZyb21CaXRz
KE1pbmlmaWVkSUQ6OmludmFsaWRJRCgpIC0ga2luZCk7CisgICAgICAgIEFTU0VSVChpc0luSlNT
dGFjaygpKTsKKyAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihtX3ZhbHVlKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIFZhbHVlU291cmNlS2luZCBraW5kRnJvbUlEKE1pbmlmaWVkSUQg
aWQpCi0gICAgewotICAgICAgICB1aW50cHRyX3Qga2luZCA9IHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oTWluaWZpZWRJRDo6aW52YWxpZElEKCkgLSBpZC5tX2lkKTsKLSAgICAgICAgaWYgKGtpbmQg
Pj0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihIYXZlTm9kZSkpCi0gICAgICAgICAgICByZXR1cm4g
SGF2ZU5vZGU7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZVNvdXJjZUtpbmQ+KGtp
bmQpOwotICAgIH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKLSAg
ICBNaW5pZmllZElEIG1fdmFsdWU7Citwcml2YXRlOgorICAgIFZhbHVlU291cmNlS2luZCBtX2tp
bmQ7CisgICAgdWludHB0cl90IG1fdmFsdWU7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVu
dC5jcHAJKHJldmlzaW9uIDE1NjcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSwxMiBAQCB2b2lk
IFZhcmlhYmxlRXZlbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91CiAgICAgICAgIG91dC5wcmludCgi
RGVhdGgoIiwgaWQoKSwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb3ZIaW50RXZl
bnQ6Ci0gICAgICAgIG91dC5wcmludCgiTW92SGludCgiLCBpZCgpLCAiLCByIiwgb3BlcmFuZCgp
LCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIk1vdkhpbnQoIiwgaWQoKSwgIiwgciIsIGJ5dGVj
b2RlUmVnaXN0ZXIoKSwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRMb2NhbEV2
ZW50OgotICAgICAgICBvdXQucHJpbnRmKCJTZXRMb2NhbChyJWQsICVzKSIsIG9wZXJhbmQoKSwg
ZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSkpOworICAgICAgICBvdXQucHJpbnQoCisg
ICAgICAgICAgICAiU2V0TG9jYWwobWFjaGluZTpyIiwgbWFjaGluZVJlZ2lzdGVyKCksICIgLT4g
Ynl0ZWNvZGU6ciIsIGJ5dGVjb2RlUmVnaXN0ZXIoKSwKKyAgICAgICAgICAgICIsICIsIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODIsNyAr
ODQsNyBAQCB2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBGaWxsSW5mbyhjb25zdCBjCiAKIHZvaWQg
VmFyaWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChuYW1lLCAiKCIsIGlkKCksICIsIHIiLCB2
aXJ0dWFsUmVnaXN0ZXIoKSwgIiwgIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSks
ICIpIik7CisgICAgb3V0LnByaW50KG5hbWUsICIoIiwgaWQoKSwgIiwgciIsIHNwaWxsUmVnaXN0
ZXIoKSwgIiwgIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSksICIpIik7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lvbiAxNTY3MjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEs
OCArNjEsNyBAQCBlbnVtIFZhcmlhYmxlRXZlbnRLaW5kIHsKICAgICAvLyBidXQgdGhhdCBpdCBo
YXMgbm90IGJlZW4gc3RvcmVkIGludG8gdGhhdCBvcGVyYW5kLgogICAgIE1vdkhpbnRFdmVudCwK
ICAgICAKLSAgICAvLyBBIFNldExvY2FsRXZlbnQgbWVhbnMgdGhhdCBhIG5vZGUncyB2YWx1ZSBo
YXMgYWN0dWFsbHkgYmVlbiBzdG9yZWQgaW50byB0aGUKLSAgICAvLyBieXRlY29kZSBvcGVyYW5k
IHRoYXQgaXQncyBhc3NvY2lhdGVkIHdpdGguCisgICAgLy8gQSBTZXRMb2NhbEV2ZW50IG1lYW5z
IHRoYXQgYSBub2RlJ3MgdmFsdWUgaGFzIGJlZW4gc3RvcmVkIGludG8gdGhlIHN0YWNrLgogICAg
IFNldExvY2FsRXZlbnQsCiAgICAgCiAgICAgLy8gVXNlZCB0byBpbmRpY2F0ZSBhbiB1bmluaXRp
YWxpemVkIFZhcmlhYmxlRXZlbnQuIERvbid0IHVzZSBmb3Igb3RoZXIKQEAgLTEwNCw4ICsxMDMs
OCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghKGRhdGFGb3JtYXQgJiBEYXRhRm9ybWF0SlMp
KTsKICNlbmRpZgogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50OwotICAgICAgICBldmVudC5t
X2lkID0gaWQ7Ci0gICAgICAgIGV2ZW50LnUuZ3ByID0gZ3ByOworICAgICAgICBldmVudC5tX3do
aWNoLmlkID0gaWQuYml0cygpOworICAgICAgICBldmVudC5tX3JlcHJlc2VudGF0aW9uLmdwciA9
IGdwcjsKICAgICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKICAgICAgICAgZXZlbnQubV9kYXRh
Rm9ybWF0ID0gZGF0YUZvcm1hdDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwpAQCAtMTE2LDkgKzEx
NSw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kID09IEJpcnRoVG9GaWxs
IHx8IGtpbmQgPT0gRmlsbCk7CiAgICAgICAgIFZhcmlhYmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAg
IGV2ZW50Lm1faWQgPSBpZDsKLSAgICAgICAgZXZlbnQudS5wYWlyLnRhZ0dQUiA9IHRhZ0dQUjsK
LSAgICAgICAgZXZlbnQudS5wYWlyLnBheWxvYWRHUFIgPSBwYXlsb2FkR1BSOworICAgICAgICBl
dmVudC5tX3doaWNoLmlkID0gaWQuYml0cygpOworICAgICAgICBldmVudC5tX3JlcHJlc2VudGF0
aW9uLnBhaXIudGFnR1BSID0gdGFnR1BSOworICAgICAgICBldmVudC5tX3JlcHJlc2VudGF0aW9u
LnBhaXIucGF5bG9hZEdQUiA9IHBheWxvYWRHUFI7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IGtp
bmQ7CiAgICAgICAgIGV2ZW50Lm1fZGF0YUZvcm1hdCA9IERhdGFGb3JtYXRKUzsKICAgICAgICAg
cmV0dXJuIGV2ZW50OwpAQCAtMTI5LDggKzEyOCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEFTU0VSVChraW5kID09IEJpcnRoVG9GaWxsIHx8IGtpbmQgPT0gRmlsbCk7CiAgICAgICAgIFZh
cmlhYmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1faWQgPSBpZDsKLSAgICAgICAgZXZl
bnQudS5mcHIgPSBmcHI7CisgICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5iaXRzKCk7Cisg
ICAgICAgIGV2ZW50Lm1fcmVwcmVzZW50YXRpb24uZnByID0gZnByOwogICAgICAgICBldmVudC5t
X2tpbmQgPSBraW5kOwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQgPSBEYXRhRm9ybWF0RG91
YmxlOwogICAgICAgICByZXR1cm4gZXZlbnQ7CkBAIC0xNDAsOCArMTM5LDggQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQmlydGhUb1NwaWxsIHx8IGtpbmQgPT0gU3Bp
bGwpOwogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50OwotICAgICAgICBldmVudC5tX2lkID0g
aWQ7Ci0gICAgICAgIGV2ZW50LnUudmlydHVhbFJlZyA9IHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQo
KTsKKyAgICAgICAgZXZlbnQubV93aGljaC5pZCA9IGlkLmJpdHMoKTsKKyAgICAgICAgZXZlbnQu
bV9yZXByZXNlbnRhdGlvbi52aXJ0dWFsUmVnID0gdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpOwog
ICAgICAgICBldmVudC5tX2tpbmQgPSBraW5kOwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQg
PSBmb3JtYXQ7CiAgICAgICAgIHJldHVybiBldmVudDsKQEAgLTE1MCwyNSArMTQ5LDI3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBkZWF0aChNaW5pZmllZElEIGlkKQogICAg
IHsKICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQubV9pZCA9IGlk
OworICAgICAgICBldmVudC5tX3doaWNoLmlkID0gaWQuYml0cygpOwogICAgICAgICBldmVudC5t
X2tpbmQgPSBEZWF0aDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgIH0KICAgICAKLSAgICBz
dGF0aWMgVmFyaWFibGVFdmVudCBzZXRMb2NhbChWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBzZXRMb2Nh
bCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGJ5dGVjb2RlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIg
bWFjaGluZVJlZywgRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewogICAgICAgICBWYXJpYWJsZUV2
ZW50IGV2ZW50OwotICAgICAgICBldmVudC51LnZpcnR1YWxSZWcgPSB2aXJ0dWFsUmVnaXN0ZXIu
b2Zmc2V0KCk7CisgICAgICAgIGV2ZW50Lm1fd2hpY2gudmlydHVhbFJlZyA9IG1hY2hpbmVSZWcu
b2Zmc2V0KCk7CisgICAgICAgIGV2ZW50Lm1fcmVwcmVzZW50YXRpb24udmlydHVhbFJlZyA9IGJ5
dGVjb2RlUmVnLm9mZnNldCgpOwogICAgICAgICBldmVudC5tX2tpbmQgPSBTZXRMb2NhbEV2ZW50
OwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIHJldHVybiBl
dmVudDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhcmlhYmxlRXZlbnQgbW92SGludChNaW5p
ZmllZElEIGlkLCBpbnQgb3BlcmFuZCkKKyAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBtb3ZIaW50
KE1pbmlmaWVkSUQgaWQsIFZpcnR1YWxSZWdpc3RlciBieXRlY29kZVJlZykKICAgICB7CiAgICAg
ICAgIFZhcmlhYmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1faWQgPSBpZDsKLSAgICAg
ICAgZXZlbnQudS52aXJ0dWFsUmVnID0gb3BlcmFuZDsKKyAgICAgICAgZXZlbnQubV93aGljaC5p
ZCA9IGlkLmJpdHMoKTsKKyAgICAgICAgZXZlbnQubV9yZXByZXNlbnRhdGlvbi52aXJ0dWFsUmVn
ID0gYnl0ZWNvZGVSZWcub2Zmc2V0KCk7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IE1vdkhpbnRF
dmVudDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgIH0KQEAgLTE4Myw3ICsxODQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2tpbmQgPT0gQmlydGhUb0ZpbGwgfHwgbV9raW5kID09
IEZpbGwKICAgICAgICAgICAgICAgIHx8IG1fa2luZCA9PSBCaXJ0aFRvU3BpbGwgfHwgbV9raW5k
ID09IFNwaWxsCiAgICAgICAgICAgICAgICB8fCBtX2tpbmQgPT0gRGVhdGggfHwgbV9raW5kID09
IE1vdkhpbnRFdmVudCk7Ci0gICAgICAgIHJldHVybiBtX2lkOworICAgICAgICByZXR1cm4gTWlu
aWZpZWRJRDo6ZnJvbUJpdHMobV93aGljaC5pZCk7CiAgICAgfQogICAgIAogICAgIERhdGFGb3Jt
YXQgZGF0YUZvcm1hdCgpIGNvbnN0CkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEFTU0VSVCghKG1fZGF0YUZvcm1hdCAmIERhdGFGb3Jt
YXRKUykpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiB1LmdwcjsKKyAgICAgICAgcmV0dXJuIG1f
cmVwcmVzZW50YXRpb24uZ3ByOwogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpA
QCAtMjEwLDEzICsyMTEsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fa2lu
ZCA9PSBCaXJ0aFRvRmlsbCB8fCBtX2tpbmQgPT0gRmlsbCk7CiAgICAgICAgIEFTU0VSVChtX2Rh
dGFGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwotICAgICAgICByZXR1cm4gdS5wYWlyLnRhZ0dQUjsK
KyAgICAgICAgcmV0dXJuIG1fcmVwcmVzZW50YXRpb24ucGFpci50YWdHUFI7CiAgICAgfQogICAg
IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHBheWxvYWRHUFIoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBtX2tpbmQgPT0gRmlsbCk7CiAg
ICAgICAgIEFTU0VSVChtX2RhdGFGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwotICAgICAgICByZXR1
cm4gdS5wYWlyLnBheWxvYWRHUFI7CisgICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLnBh
aXIucGF5bG9hZEdQUjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKICAgICAK
QEAgLTIyNCwyMiArMjI1LDI4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2tp
bmQgPT0gQmlydGhUb0ZpbGwgfHwgbV9raW5kID09IEZpbGwpOwogICAgICAgICBBU1NFUlQobV9k
YXRhRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpOwotICAgICAgICByZXR1cm4gdS5mcHI7Cisg
ICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLmZwcjsKICAgICB9CiAgICAgCi0gICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CisgICAgVmlydHVhbFJlZ2lzdGVy
IHNwaWxsUmVnaXN0ZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBC
aXJ0aFRvU3BpbGwgfHwgbV9raW5kID09IFNwaWxsKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4odS52aXJ0dWFsUmVnKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obV9yZXByZXNlbnRhdGlvbi52aXJ0dWFsUmVnKTsKICAg
ICB9CiAgICAgCi0gICAgaW50IG9wZXJhbmQoKSBjb25zdAorICAgIFZpcnR1YWxSZWdpc3RlciBi
eXRlY29kZVJlZ2lzdGVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2tpbmQgPT0g
U2V0TG9jYWxFdmVudCB8fCBtX2tpbmQgPT0gTW92SGludEV2ZW50KTsKLSAgICAgICAgcmV0dXJu
IHUudmlydHVhbFJlZzsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4obV9yZXByZXNlbnRhdGlvbi52aXJ0dWFsUmVnKTsKICAgICB9CiAgICAgCi0gICAgY29uc3Qg
VmFyaWFibGVSZXByZXNlbnRhdGlvbiYgdmFyaWFibGVSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHU7IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbWFjaGluZVJlZ2lzdGVyKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2tpbmQgPT0gU2V0TG9jYWxFdmVudCk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG1fd2hpY2gudmlydHVhbFJlZyk7
CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxl
UmVwcmVzZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlcHJlc2VudGF0aW9uOyB9CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCkBAIC0yNDcsNyArMjU0
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciog
bmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKLSAgICBNaW5pZmllZElEIG1faWQ7Cisg
ICAgdW5pb24geworICAgICAgICBpbnQgdmlydHVhbFJlZzsKKyAgICAgICAgdWludHB0cl90IGlk
OworICAgIH0gbV93aGljaDsKICAgICAKICAgICAvLyBGb3IgQmlydGhUb0ZpbGwsIEZpbGw6CiAg
ICAgLy8gICAtIFRoZSBHUFIgb3IgRlBSLCBvciBhIEdQUiBwYWlyLgpAQCAtMjU3LDcgKzI2Nyw3
IEBAIHByaXZhdGU6CiAgICAgLy8gICAtIFRoZSBieXRlY29kZSBvcGVyYW5kLgogICAgIC8vIEZv
ciBEZWF0aDoKICAgICAvLyAgIC0gVW51c2VkLgotICAgIFZhcmlhYmxlUmVwcmVzZW50YXRpb24g
dTsKKyAgICBWYXJpYWJsZVJlcHJlc2VudGF0aW9uIG1fcmVwcmVzZW50YXRpb247CiAgICAgCiAg
ICAgaW50OF90IG1fa2luZDsKICAgICBpbnQ4X3QgbV9kYXRhRm9ybWF0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3Bw
CShyZXZpc2lvbiAxNTY3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKIAogICAgIC8vIFN0ZXAgMjogQ3Jl
YXRlIGEgbW9jay11cCBvZiB0aGUgREZHJ3Mgc3RhdGUgYW5kIGV4ZWN1dGUgdGhlIGV2ZW50cy4K
ICAgICBPcGVyYW5kczxWYWx1ZVNvdXJjZT4gb3BlcmFuZFNvdXJjZXMoY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gb3BlcmFu
ZFNvdXJjZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBvcGVyYW5kU291cmNlc1tpXSA9IFZhbHVl
U291cmNlKFNvdXJjZUlzRGVhZCk7CiAgICAgSGFzaE1hcDxNaW5pZmllZElELCBNaW5pZmllZEdl
bmVyYXRpb25JbmZvPiBnZW5lcmF0aW9uSW5mb3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Rh
cnRJbmRleDsgaSA8IGluZGV4OyArK2kpIHsKICAgICAgICAgY29uc3QgVmFyaWFibGVFdmVudCYg
ZXZlbnQgPSBhdChpKTsKQEAgLTE2NSwxMiArMTY3LDEyIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0
cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIE1vdkhpbnRFdmVudDoKLSAgICAgICAgICAgIGlmIChvcGVyYW5kU291cmNlcy5oYXNP
cGVyYW5kKGV2ZW50Lm9wZXJhbmQoKSkpCi0gICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMu
c2V0T3BlcmFuZChldmVudC5vcGVyYW5kKCksIFZhbHVlU291cmNlKGV2ZW50LmlkKCkpKTsKKyAg
ICAgICAgICAgIGlmIChvcGVyYW5kU291cmNlcy5oYXNPcGVyYW5kKGV2ZW50LmJ5dGVjb2RlUmVn
aXN0ZXIoKSkpCisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChldmVu
dC5ieXRlY29kZVJlZ2lzdGVyKCksIFZhbHVlU291cmNlKGV2ZW50LmlkKCkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgICAgICBpZiAo
b3BlcmFuZFNvdXJjZXMuaGFzT3BlcmFuZChldmVudC5vcGVyYW5kKCkpKQotICAgICAgICAgICAg
ICAgIG9wZXJhbmRTb3VyY2VzLnNldE9wZXJhbmQoZXZlbnQub3BlcmFuZCgpLCBWYWx1ZVNvdXJj
ZTo6Zm9yRGF0YUZvcm1hdChldmVudC5kYXRhRm9ybWF0KCkpKTsKKyAgICAgICAgICAgIGlmIChv
cGVyYW5kU291cmNlcy5oYXNPcGVyYW5kKGV2ZW50LmJ5dGVjb2RlUmVnaXN0ZXIoKSkpCisgICAg
ICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChldmVudC5ieXRlY29kZVJlZ2lz
dGVyKCksIFZhbHVlU291cmNlOjpmb3JEYXRhRm9ybWF0KGV2ZW50Lm1hY2hpbmVSZWdpc3Rlcigp
LCBldmVudC5kYXRhRm9ybWF0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE4Myw3
ICsxODUsNyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcGVyYW5kU291cmNlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBWYWx1ZVNvdXJjZSYgc291cmNlID0gb3BlcmFuZFNvdXJjZXNbaV07CiAgICAgICAgIGlm
IChzb3VyY2UuaXNUcml2aWFsbHlSZWNvdmVyYWJsZSgpKSB7Ci0gICAgICAgICAgICB2YWx1ZVJl
Y292ZXJpZXNbaV0gPSBzb3VyY2UudmFsdWVSZWNvdmVyeShvcGVyYW5kU291cmNlcy5vcGVyYW5k
Rm9ySW5kZXgoaSkpOworICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gc291cmNlLnZh
bHVlUmVjb3ZlcnkoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IAo=
</data>
<flag name="review"
          id="235432"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="235439"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>