<?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>121868</bug_id>
          
          <creation_ts>2013-09-24 14:19:16 -0700</creation_ts>
          <short_desc>Use std::unique_ptr for decoders as well</short_desc>
          <delta_ts>2013-09-24 15:18:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932715</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-24 14:19:16 -0700</bug_when>
    <thetext>Use std::unique_ptr for decoders as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932717</commentid>
    <comment_count>1</comment_count>
      <attachid>212501</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-24 14:20:43 -0700</bug_when>
    <thetext>Created attachment 212501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932721</commentid>
    <comment_count>2</comment_count>
      <attachid>212501</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-24 14:25:15 -0700</bug_when>
    <thetext>Comment on attachment 212501
Patch

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

&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:417
&gt; -        HashMap&lt;std::pair&lt;std::pair&lt;StringReference, StringReference&gt;, uint64_t&gt;, OwnPtr&lt;MessageDecoder&gt;&gt;::iterator it = m_waitForMessageMap.find(messageAndDestination);
&gt; -        if (it-&gt;value) {
&gt; -            OwnPtr&lt;MessageDecoder&gt; decoder = it-&gt;value.release();
&gt; -            m_waitForMessageMap.remove(it);
&gt; -
&gt; -            return decoder.release();
&gt; -        }
&gt; +        if (std::unique_ptr&lt;MessageDecoder&gt; decoder = m_waitForMessageMap.take(messageAndDestination))
&gt; +            return decoder;

This is wrong, you are now always taking the decoder out of the map!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932722</commentid>
    <comment_count>3</comment_count>
      <attachid>212503</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-24 14:27:53 -0700</bug_when>
    <thetext>Created attachment 212503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932723</commentid>
    <comment_count>4</comment_count>
      <attachid>212503</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-24 14:31:52 -0700</bug_when>
    <thetext>Comment on attachment 212503
Patch

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

&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:425
&gt; -        HashMap&lt;std::pair&lt;std::pair&lt;StringReference, StringReference&gt;, uint64_t&gt;, OwnPtr&lt;MessageDecoder&gt;&gt;::iterator it = m_waitForMessageMap.find(messageAndDestination);
&gt; +        auto it = m_waitForMessageMap.find(messageAndDestination);
&gt;          if (it-&gt;value) {
&gt; -            OwnPtr&lt;MessageDecoder&gt; decoder = it-&gt;value.release();
&gt; +            std::unique_ptr&lt;MessageDecoder&gt; decoder = std::move(it-&gt;value);
&gt;              m_waitForMessageMap.remove(it);
&gt;  
&gt; -            return decoder.release();
&gt; +            return decoder;
&gt;          }
&gt; +
&gt; +        if (std::unique_ptr&lt;MessageDecoder&gt; decoder = m_waitForMessageMap.take(messageAndDestination))
&gt; +            return decoder;

Still has the bug. :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932724</commentid>
    <comment_count>5</comment_count>
      <attachid>212504</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-24 14:32:39 -0700</bug_when>
    <thetext>Created attachment 212504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932730</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-24 14:47:41 -0700</bug_when>
    <thetext>Committed r156360: &lt;http://trac.webkit.org/changeset/156360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932745</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-24 15:18:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Committed r156360: &lt;http://trac.webkit.org/changeset/156360&gt;

Unix buildfix landed in http://trac.webkit.org/changeset/156363</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212501</attachid>
            <date>2013-09-24 14:20:43 -0700</date>
            <delta_ts>2013-09-24 14:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121868-20130924142043.patch</filename>
            <type>text/plain</type>
            <size>22746</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODQwNjEzODY3ODk3MDFl
YTI2YjUwOTNhZGE5NzViMGExODJhZGFkZS4uMjgyNWY2N2RmZDNiNmYwNGZiN2MwNjY1ZmExYjgz
MTc2NTE4ZWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEzLTA5LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIHN0ZDo6dW5p
cXVlX3B0ciBmb3IgZGVjb2RlcnMgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0lu
Y29taW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
TWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29t
aW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmNyZWF0ZU1lc3Nh
Z2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cG9zdFN5bmNo
cm9ub3VzTWVzc2FnZSk6CisKKzIwMTMtMDktMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIE1lc3NhZ2VFbmNvZGVyIGFuZCBBcmd1bWVudEVu
Y29kZXIgdG8gc3RkOjp1bmlxdWVfcHRyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE4NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMDA3MTcwYTE2ZTA0Njg5YzVkY2I4YTQxZDdiMTNh
MzRjNWFmYzhhYi4uZDI5ZDgzYzFlMTQ3ZTIyNzhmZmVlYzM5ODg2YTM5MWNiOTRhYWJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG1lc3Nh
Z2Ugd2lsbCBiZSBoYW5kbGVkIG9uIGEgY2xpZW50IHRocmVhZCB0aGF0IGlzIGN1cnJlbnRseQog
ICAgIC8vIHdhaXRpbmcgZm9yIGEgcmVwbHkgdG8gYSBzeW5jaHJvbm91cyBtZXNzYWdlLgotICAg
IGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwgT3duUHRyPE1lc3NhZ2VE
ZWNvZGVyPiYpOworICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiYpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVu
ZGluZyBzeW5jIG1lc3NhZ2VzLiBpZiBhbGxvd2VkQ29ubmVjdGlvbiBpcyBub3QgbnVsbCwgd2ls
bCBvbmx5IGRpc3BhdGNoIG1lc3NhZ2VzCiAgICAgLy8gZnJvbSB0aGF0IGNvbm5lY3Rpb24gYW5k
IHB1dCB0aGUgb3RoZXIgbWVzc2FnZXMgYmFjayBpbiB0aGUgcXVldWUuCkBAIC04OCwxMCArODgs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2Ug
ewogICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKLQotICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTk0Ci0gICAg
ICAgIC8vIFRoaXMgc2hvdWxkIHJlYWxseSBhbiBiZSBPd25QdHIsIGJ1dCB3ZSBuZWVkIFZlY3Rv
ciB0byB3b3JrIHdpdGggbW92ZSBvbmx5IG9iamVjdHMgZmlyc3QuCi0gICAgICAgIE1lc3NhZ2VE
ZWNvZGVyKiBtZXNzYWdlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IG1lc3NhZ2U7CiAgICAgfTsKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2Fn
ZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHk7CiB9OwpAQCAt
OTksNyArOTYsNyBAQCBwcml2YXRlOgogY2xhc3MgQ29ubmVjdGlvbjo6U2Vjb25kYXJ5VGhyZWFk
UGVuZGluZ1N5bmNSZXBseSB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIHJlcGx5IGRlY29kZXIsIHdp
bGwgYmUgbnVsbCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgc3luYyBtZXNz
YWdlIG9uIHRoZSBvdGhlciBzaWRlLgotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVy
OwogCiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKIH07CkBAIC0xMzYsMTQgKzEzMywx
NCBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjp+U3luY01lc3NhZ2VTdGF0ZSgpCiAg
ICAgQVNTRVJUKG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5Lmlz
RW1wdHkoKSk7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBPd25QdHI8TWVzc2FnZURl
Y29kZXI+JiBtZXNzYWdlKQorYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtZXNzYWdlLT5zaG91bGRE
aXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlIGNvbm5lY3Rpb25BbmRJ
bmNvbWluZ01lc3NhZ2U7CiAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uID0gY29ubmVjdGlvbjsKLSAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLm1lc3Nh
Z2UgPSBtZXNzYWdlLmxlYWtQdHIoKTsKKyAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UgPSBzdGQ6Om1vdmUobWVzc2FnZSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKQEAgLTE1MSw3ICsxNDgsNyBAQCBib29sIENvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiogY29u
bmVjdGlvbgogICAgICAgICBpZiAobV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0
LmFkZChjb25uZWN0aW9uKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgbV9ydW5Mb29wLT5kaXNw
YXRjaChiaW5kKCZTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNj
aGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24sIHRoaXMsIFJlZlB0cjxDb25uZWN0
aW9uPihjb25uZWN0aW9uKSkpOwogCi0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKTsK
KyAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBw
ZW5kKHN0ZDo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKSk7CiAgICAgfQogCiAg
ICAgd2FrZVVwQ2xpZW50UnVuTG9vcCgpOwpAQCAtMTc4LDE2ICsxNzUsMTggQEAgdm9pZCBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFs
bG93ZWRDb25uZWN0aW8KICAgICAgICAgaWYgKGFsbG93ZWRDb25uZWN0aW9uICYmIGFsbG93ZWRD
b25uZWN0aW9uICE9IGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UuY29ubmVjdGlvbikgewog
ICAgICAgICAgICAgLy8gVGhpcyBpbmNvbWluZyBtZXNzYWdlIGJlbG9uZ3MgdG8gYW5vdGhlciBj
b25uZWN0aW9uIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRpc3BhdGNoIGl0IG5vdwogICAgICAgICAg
ICAgLy8gc28gbWFyayBpdCB0byBiZSBwdXQgYmFjayBpbiB0aGUgbWVzc2FnZSBxdWV1ZS4KLSAg
ICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlKTsKKyAgICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChzdGQ6Om1vdmUo
Y29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLmNvbm5lY3Rp
b24tPmRpc3BhdGNoTWVzc2FnZShhZG9wdFB0cihjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UpKTsKKyAgICAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uLT5kaXNwYXRjaE1lc3NhZ2Uoc3RkOjptb3ZlKGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3Nh
Z2UubWVzc2FnZSkpOwogICAgIH0KIAogICAgIGlmICghbWVzc2FnZXNUb1B1dEJhY2suaXNFbXB0
eSgpKSB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9t
ZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kVmVjdG9yKG1l
c3NhZ2VzVG9QdXRCYWNrKTsKKworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdl
c1RvUHV0QmFjaykKKyAgICAgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5n
Rm9yU3luY1JlcGx5LmFwcGVuZChzdGQ6Om1vdmUobWVzc2FnZSkpOwogICAgIH0KIH0KIApAQCAt
Mzc4LDE3ICszNzcsMTcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICByZXR1cm4gc2VuZE1lc3NhZ2Uo
c3RkOjptb3ZlKGVuY29kZXIpKTsKIH0KIAotT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3Vi
bGUgdGltZW91dCkKK3N0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRp
bWVvdXQpCiB7CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5
IGluIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKIAogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVj
b2Rlcj4mIG1lc3NhZ2UgPSAqaXQ7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYgbWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0g
ZGVzdGluYXRpb25JRCkgewotICAgICAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3Zl
KG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShp
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmVkTWVzc2FnZTsKQEAgLTQxNCwxMyAr
NDEzLDggQEAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2Fn
ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmUKICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAg
ICBIYXNoTWFwPHN0ZDo6cGFpcjxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCBTdHJpbmdSZWZl
cmVuY2U+LCB1aW50NjRfdD4sIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4+OjppdGVyYXRvciBpdCA9
IG1fd2FpdEZvck1lc3NhZ2VNYXAuZmluZChtZXNzYWdlQW5kRGVzdGluYXRpb24pOwotICAgICAg
ICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRl
Y29kZXIgPSBpdC0+dmFsdWUucmVsZWFzZSgpOwotICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2Fn
ZU1hcC5yZW1vdmUoaXQpOwotCi0gICAgICAgICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
ZGVjb2RlciA9IG1fd2FpdEZvck1lc3NhZ2VNYXAudGFrZShtZXNzYWdlQW5kRGVzdGluYXRpb24p
KQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZXI7CiAgICAgICAgIAogICAgICAgICAvLyBOb3cg
d2Ugd2FpdC4KICAgICAgICAgaWYgKCFtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLnRpbWVkV2Fp
dChtX3dhaXRGb3JNZXNzYWdlTXV0ZXgsIGFic29sdXRlVGltZSkpIHsKQEAgLTQzNCw3ICs0Mjgs
NyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1P
d25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBkb3Vi
bGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICBpZiAoUnVuTG9vcDo6
Y3VycmVudCgpICE9IG1fY2xpZW50UnVuTG9vcCkgewogICAgICAgICAvLyBObyBmbGFncyBhcmUg
c3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcyBzZW50IGZyb20gc2Vjb25kYXJ5IHRo
cmVhZHMuCkBAIC00NjYsNyArNDYwLDcgQEAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjoKICAgICAv
LyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2
ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4g
ZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFs
aWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKLSAgICBPd25QdHI8
TWVzc2FnZURlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0
aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5j
U2VuZEZsYWdzKTsKIAogICAgIC0tbV9pblNlbmRTeW5jQ291bnQ7CiAKQEAgLTQ4MCwxMCArNDc0
LDEwIEBAIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdl
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6CiAgICAgaWYgKCFyZXBseSkKICAgICAgICAg
ZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKLSAgICByZXR1cm4gcmVwbHkucmVsZWFzZSgp
OworICAgIHJldHVybiByZXBseTsKIH0KIAotT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjpzZW5kU3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgZG91YmxlIHRp
bWVvdXQpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRT
eW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBkb3VibGUgdGltZW91dCkKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpICE9IG1fY2xpZW50UnVuTG9vcCk7CiAKQEAg
LTUyMCw3ICs1MTQsNyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRT
eW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3QgcwogICAgIHJldHVybiBzdGQ6
Om1vdmUocGVuZGluZ1JlcGx5LnJlcGx5RGVjb2Rlcik7CiB9CiAKLU93blB0cjxNZXNzYWdlRGVj
b2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElE
LCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKK3N0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBz
eW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsK
ICAgICAvLyBVc2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5v
VGltZW91dCkKQEAgLTU3Miw3ICs1NjYsNyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgZG91YgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5
bmNSZXBseShPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIpCit2b2lkIENvbm5lY3Rpb246
OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IGRlY29kZXIpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRl
eCk7CiAKQEAgLTYwOSwxMyArNjAzLDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29t
aW5nU3luY1JlcGx5KE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcikKICAgICAvLyBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8gaWdub3Jl
LgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1l
c3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQordm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKIHsKICAgICBB
U1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5pc0VtcHR5KCkpOwogICAgIEFT
U0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0VtcHR5KCkpOwogCiAgICAgaWYgKG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgewotICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkobWVzc2FnZS5yZWxlYXNlKCkpOworICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVw
bHkoc3RkOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjM2
LDcgKzYzMCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShPd25Q
dHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiAKICAgICBhdXRvIGl0ID0gbV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzLmZpbmQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKICAg
ICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7Ci0gICAgICAg
IGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlLCB0aGlzLCBpdC0+dmFsdWUuc2Vjb25kLCBtZXNz
YWdlLnJlbGVhc2UoKS5sZWFrUHRyKCkpKTsKKyAgICAgICAgaXQtPnZhbHVlLmZpcnN0LT5kaXNw
YXRjaChiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1l
c3NhZ2UsIHRoaXMsIGl0LT52YWx1ZS5zZWNvbmQsIG1lc3NhZ2UucmVsZWFzZSgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY1Miw3ICs2NDYsNyBAQCB2b2lkIENvbm5lY3Rpb246
OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQog
CiAgICAgICAgIGF1dG8gaXQgPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQoc3RkOjptYWtlX3Bh
aXIoc3RkOjptYWtlX3BhaXIobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpKSwgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlm
IChpdCAhPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBpdC0+dmFs
dWUgPSBtZXNzYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bW92
ZShtZXNzYWdlKTsKICAgICAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24uc2lnbmFsKCk7CkBAIC02NjAsNyAr
NjU0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE93blB0cjxN
ZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGVucXVldWVJ
bmNvbWluZ01lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCkpOworICAgIGVucXVldWVJbmNvbWluZ01l
c3NhZ2Uoc3RkOjptb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29u
bmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTc3NCw3ICs3NjgsNyBA
QCB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiAgICAgZXhpdCgw
KTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKE93blB0cjxN
ZXNzYWdlRGVjb2Rlcj4gaW5jb21pbmdNZXNzYWdlKQordm9pZCBDb25uZWN0aW9uOjplbnF1ZXVl
SW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gaW5jb21pbmdN
ZXNzYWdlKQogewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5jb21pbmdN
ZXNzYWdlc0xvY2spOwpAQCAtNzg5LDcgKzc4Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlTWVzc2FnZSh0aGlzLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQordm9pZCBDb25uZWN0aW9u
OjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdl
KQogewogICAgIC8vIElmIHRoZXJlJ3Mgbm8gY2xpZW50LCByZXR1cm4uIFdlIGRvIHRoaXMgYWZ0
ZXIgY2FsbGluZyByZWxlYXNlQXJndW1lbnRzIHNvIHRoYXQKICAgICAvLyB0aGUgQXJndW1lbnRE
ZWNvZGVyIG1lc3NhZ2Ugd2lsbCBiZSBmcmVlZC4KQEAgLTgyMyw3ICs4MTcsNyBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2Up
CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKCkKIHsKLSAgICBPd25QdHI8
TWVzc2FnZURlY29kZXI+IG1lc3NhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNv
ZGVyPiBtZXNzYWdlOwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9pbmNv
bWluZ01lc3NhZ2VzTG9jayk7CkBAIC04MzMsNyArODI3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE9uZU1lc3NhZ2UoKQogICAgICAgICBtZXNzYWdlID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LnRha2VGaXJzdCgpOwogICAgIH0KIAotICAgIGRpc3BhdGNoTWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSk7CisgICAgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6bW92ZShtZXNzYWdlKSk7CiB9CiAKIHZv
aWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDE1Mzg2ZjRhNGE0MmJiZDhlMWE3YzFjNTJlYTMz
OWQ4OWIwZmY0YTEuLmNhNTg3MmIwZjhhYmQ0ODAxMDRkNzkxZTkxZDYzZGMxMjk2ZjEyMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC0xNzUs
OCArMTc1LDggQEAgcHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVy
PiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDAp
OwotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7Ci0gICAgT3duUHRyPE1lc3NhZ2VEZWNv
ZGVyPiBzZW5kU3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0KTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+LCBkb3Vi
bGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IDApOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlRnJvbVNlY29uZGFyeVRocmVhZCh1
aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+LCBk
b3VibGUgdGltZW91dCk7CiAgICAgYm9vbCBzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CkBAIC0xOTMsMTMg
KzE5MywxMyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9CiAgICAgCi0gICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9y
TWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAgCi0gICAg
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUuCi0gICAgdm9pZCBwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOwotICAgIHZvaWQgcHJv
Y2Vzc0luY29taW5nU3luY1JlcGx5KE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAgIHZvaWQg
cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+KTsK
KyAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyT25Db25u
ZWN0aW9uV29ya1F1ZXVlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3Jr
UXVldWUqLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKICAgICB2b2lkIHJlbW92ZVdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlck9uQ29ubmVjdGlvbldvcmtRdWV1ZShTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSk7CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBwcml2YXRlOgogICAg
IC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgogICAgIHZvaWQgZGlzcGF0Y2hDb25u
ZWN0aW9uRGlkQ2xvc2UoKTsKICAgICB2b2lkIGRpc3BhdGNoT25lTWVzc2FnZSgpOwotICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4pOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNN
ZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLCBjb25z
dCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CiAgICAgdm9pZCBkaWRGYWlsVG9TZW5kU3lu
Y01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KLSAgICB2
b2lkIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPik7CisgICAg
dm9pZCBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rl
cj4pOwogCiAgICAgQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1faXNTZXJ2ZXI7CkBAIC0y
NDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEluY29taW5nIG1lc3NhZ2VzLgogICAg
IE11dGV4IG1faW5jb21pbmdNZXNzYWdlc0xvY2s7Ci0gICAgRGVxdWU8T3duUHRyPE1lc3NhZ2VE
ZWNvZGVyPj4gbV9pbmNvbWluZ01lc3NhZ2VzOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4+IG1faW5jb21pbmdNZXNzYWdlczsKIAogICAgIC8vIE91dGdvaW5nIG1l
c3NhZ2VzLgogICAgIE11dGV4IG1fb3V0Z29pbmdNZXNzYWdlc0xvY2s7CkBAIC0yNTIsNyArMjUy
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBUaHJlYWRDb25kaXRpb24gbV93YWl0Rm9yTWVzc2Fn
ZUNvbmRpdGlvbjsKICAgICBNdXRleCBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7Ci0gICAgSGFzaE1h
cDxzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJlbmNlPiwg
dWludDY0X3Q+LCBPd25QdHI8TWVzc2FnZURlY29kZXI+PiBtX3dhaXRGb3JNZXNzYWdlTWFwOwor
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIFN0cmluZ1Jl
ZmVyZW5jZT4sIHVpbnQ2NF90Piwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPj4gbV93
YWl0Rm9yTWVzc2FnZU1hcDsKIAogICAgIC8vIFJlcHJlc2VudHMgYSBzeW5jIHJlcXVlc3QgZm9y
IHdoaWNoIHdlJ3JlIHdhaXRpbmcgb24gYSByZXBseS4KICAgICBzdHJ1Y3QgUGVuZGluZ1N5bmNS
ZXBseSB7CkBAIC0yNjEsNyArMjYxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBUaGUgcmVw
bHkgZGVjb2Rlciwgd2lsbCBiZSBudWxsIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBwcm9jZXNzaW5n
IHRoZSBzeW5jCiAgICAgICAgIC8vIG1lc3NhZ2Ugb24gdGhlIG90aGVyIHNpZGUuCi0gICAgICAg
IE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5RGVjb2RlcjsKIAogICAgICAgICAvLyBXaWxsIGJl
IHNldCB0byB0cnVlIG9uY2UgYSByZXBseSBoYXMgYmVlbiByZWNlaXZlZC4KICAgICAgICAgYm9v
bCBkaWRSZWNlaXZlUmVwbHk7CkBAIC0zNjYsNyArMzY2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBl
bmFtZQogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKIAogICAgIC8vIE5vdyBzZW5kIHRo
ZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIHN0ZDo6bW92
ZShlbmNvZGVyKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVl
c3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsKICAgICBp
ZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzYsNyArMzc2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhjb25z
dCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQogewotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4g
ZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQsIHRpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rl
cj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
bWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDljZGM4OGUwZjZmOWRmOTAwM2ZhYTk5MmY5Mzdl
MmEyZjBjNzM5MjAuLjk0OGM0ZWI3ZGMxYjJlZWYxYzFmMmZhYTdiN2Q5ZWJiOTUyN2JhZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25N
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rp
b25NYWMuY3BwCkBAIC0yOTksMTQgKzI5OSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxp
emVEZWFkTmFtZVNvdXJjZSgpCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBPd25QdHI8TWVzc2FnZURl
Y29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCitz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2Rl
cihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogewogICAgIGlmICghKGhlYWRlci0+bXNnaF9i
aXRzICYgTUFDSF9NU0dIX0JJVFNfQ09NUExFWCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHNp
bXBsZSBtZXNzYWdlLgogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+
bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4g
Y3JlYXRlT3duZWQ8TWVzc2FnZURlY29kZXI+KERhdGFSZWZlcmVuY2UoYm9keSwgYm9keVNpemUp
LCBWZWN0b3I8QXR0YWNobWVudD4oKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKGJvZHksIGJvZHlTaXplKSwgVmVjdG9yPEF0
dGFjaG1lbnQ+KCkpOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2FnZUJvZHlJc09PTCA9IGhlYWRl
ci0+bXNnaF9pZCAmIE1lc3NhZ2VCb2R5SXNPdXRPZkxpbmU7CkBAIC0zNTEsNyArMzUxLDcgQEAg
c3RhdGljIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9t
c2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJvZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7CiAgICAg
ICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgp
OwogCi0gICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0ZU93bmVk
PE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNp
emUpLCBzdGQ6Om1vdmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgYXV0byBkZWNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxNZXNzYWdlRGVjb2Rlcj4oRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplKSwgc3RkOjptb3ZlKGF0dGFjaG1lbnRzKSk7CiAKICAgICAgICAgdm1f
ZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3Nf
dD4obWVzc2FnZUJvZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0YWNobWVu
dC5zaXplKCkpOwogCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIE93blB0cjxNZXNzYWdlRGVj
b2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAg
ICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNz
YWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIGNyZWF0ZU93bmVk
PE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNp
emUpLCBhdHRhY2htZW50cyk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZURl
Y29kZXI+KERhdGFSZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSksIGF0dGFj
aG1lbnRzKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBp
bmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgIGlmICghaGVhZGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIg
PSBjcmVhdGVNZXNzYWdlRGVjb2RlcihoZWFkZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKGhlYWRlcik7CiAgICAg
QVNTRVJUKGRlY29kZXIpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNl
RXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UoZGVjb2Rlci5yZWxlYXNlKCkpOworICAgIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2Uoc3RkOjptb3ZlKGRlY29kZXIpKTsKIH0gICAgCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZXhjZXB0
aW9uU291cmNlRXZlbnRIYW5kbGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzRmYTM2
NTA4YTZmNGIzNjQyNmJmMzAwZTQwOTIzMmRlMTQyY2FiOC4uZDI5ZDMyZWYxMDU4ODFhNjNmOWI0
NjZjNzljMTQ3ZjIzY2EyYzgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdAogICAgIGVuY29kZXItPmVuY29kZShtZXNz
YWdlTmFtZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKLSAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZURlY29k
ZXI+IHJlcGx5RGVjb2RlciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBzdGQ6Om1vdmUoZW5jb2Rl
ciksIENvcmVJUEM6OkNvbm5lY3Rpb246Ok5vVGltZW91dCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVl
c3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVvdXQp
OwogICAgIGlmICghcmVwbHlEZWNvZGVyIHx8ICFyZXBseURlY29kZXItPmRlY29kZShtZXNzYWdl
RGVjb2RlcikpIHsKICAgICAgICAgcmV0dXJuRGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
bjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212503</attachid>
            <date>2013-09-24 14:27:53 -0700</date>
            <delta_ts>2013-09-24 14:32:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121868-20130924142752.patch</filename>
            <type>text/plain</type>
            <size>22923</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODQwNjEzODY3ODk3MDFl
YTI2YjUwOTNhZGE5NzViMGExODJhZGFkZS4uMjgyNWY2N2RmZDNiNmYwNGZiN2MwNjY1ZmExYjgz
MTc2NTE4ZWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEzLTA5LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIHN0ZDo6dW5p
cXVlX3B0ciBmb3IgZGVjb2RlcnMgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0lu
Y29taW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
TWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29t
aW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmNyZWF0ZU1lc3Nh
Z2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cG9zdFN5bmNo
cm9ub3VzTWVzc2FnZSk6CisKKzIwMTMtMDktMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIE1lc3NhZ2VFbmNvZGVyIGFuZCBBcmd1bWVudEVu
Y29kZXIgdG8gc3RkOjp1bmlxdWVfcHRyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE4NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMDA3MTcwYTE2ZTA0Njg5YzVkY2I4YTQxZDdiMTNh
MzRjNWFmYzhhYi4uZWI0YjllZTlmMTkzOTEzMDY5MjAyZDgyMDYxZTM5OTZlODExMWY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG1lc3Nh
Z2Ugd2lsbCBiZSBoYW5kbGVkIG9uIGEgY2xpZW50IHRocmVhZCB0aGF0IGlzIGN1cnJlbnRseQog
ICAgIC8vIHdhaXRpbmcgZm9yIGEgcmVwbHkgdG8gYSBzeW5jaHJvbm91cyBtZXNzYWdlLgotICAg
IGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwgT3duUHRyPE1lc3NhZ2VE
ZWNvZGVyPiYpOworICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiYpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVu
ZGluZyBzeW5jIG1lc3NhZ2VzLiBpZiBhbGxvd2VkQ29ubmVjdGlvbiBpcyBub3QgbnVsbCwgd2ls
bCBvbmx5IGRpc3BhdGNoIG1lc3NhZ2VzCiAgICAgLy8gZnJvbSB0aGF0IGNvbm5lY3Rpb24gYW5k
IHB1dCB0aGUgb3RoZXIgbWVzc2FnZXMgYmFjayBpbiB0aGUgcXVldWUuCkBAIC04OCwxMCArODgs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2Ug
ewogICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKLQotICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTk0Ci0gICAg
ICAgIC8vIFRoaXMgc2hvdWxkIHJlYWxseSBhbiBiZSBPd25QdHIsIGJ1dCB3ZSBuZWVkIFZlY3Rv
ciB0byB3b3JrIHdpdGggbW92ZSBvbmx5IG9iamVjdHMgZmlyc3QuCi0gICAgICAgIE1lc3NhZ2VE
ZWNvZGVyKiBtZXNzYWdlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IG1lc3NhZ2U7CiAgICAgfTsKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2Fn
ZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHk7CiB9OwpAQCAt
OTksNyArOTYsNyBAQCBwcml2YXRlOgogY2xhc3MgQ29ubmVjdGlvbjo6U2Vjb25kYXJ5VGhyZWFk
UGVuZGluZ1N5bmNSZXBseSB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIHJlcGx5IGRlY29kZXIsIHdp
bGwgYmUgbnVsbCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgc3luYyBtZXNz
YWdlIG9uIHRoZSBvdGhlciBzaWRlLgotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVy
OwogCiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKIH07CkBAIC0xMzYsMTQgKzEzMywx
NCBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjp+U3luY01lc3NhZ2VTdGF0ZSgpCiAg
ICAgQVNTRVJUKG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5Lmlz
RW1wdHkoKSk7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBPd25QdHI8TWVzc2FnZURl
Y29kZXI+JiBtZXNzYWdlKQorYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtZXNzYWdlLT5zaG91bGRE
aXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlIGNvbm5lY3Rpb25BbmRJ
bmNvbWluZ01lc3NhZ2U7CiAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uID0gY29ubmVjdGlvbjsKLSAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLm1lc3Nh
Z2UgPSBtZXNzYWdlLmxlYWtQdHIoKTsKKyAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UgPSBzdGQ6Om1vdmUobWVzc2FnZSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKQEAgLTE1MSw3ICsxNDgsNyBAQCBib29sIENvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiogY29u
bmVjdGlvbgogICAgICAgICBpZiAobV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0
LmFkZChjb25uZWN0aW9uKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgbV9ydW5Mb29wLT5kaXNw
YXRjaChiaW5kKCZTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNj
aGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24sIHRoaXMsIFJlZlB0cjxDb25uZWN0
aW9uPihjb25uZWN0aW9uKSkpOwogCi0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKTsK
KyAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBw
ZW5kKHN0ZDo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKSk7CiAgICAgfQogCiAg
ICAgd2FrZVVwQ2xpZW50UnVuTG9vcCgpOwpAQCAtMTc4LDE2ICsxNzUsMTggQEAgdm9pZCBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFs
bG93ZWRDb25uZWN0aW8KICAgICAgICAgaWYgKGFsbG93ZWRDb25uZWN0aW9uICYmIGFsbG93ZWRD
b25uZWN0aW9uICE9IGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UuY29ubmVjdGlvbikgewog
ICAgICAgICAgICAgLy8gVGhpcyBpbmNvbWluZyBtZXNzYWdlIGJlbG9uZ3MgdG8gYW5vdGhlciBj
b25uZWN0aW9uIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRpc3BhdGNoIGl0IG5vdwogICAgICAgICAg
ICAgLy8gc28gbWFyayBpdCB0byBiZSBwdXQgYmFjayBpbiB0aGUgbWVzc2FnZSBxdWV1ZS4KLSAg
ICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlKTsKKyAgICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChzdGQ6Om1vdmUo
Y29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLmNvbm5lY3Rp
b24tPmRpc3BhdGNoTWVzc2FnZShhZG9wdFB0cihjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UpKTsKKyAgICAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uLT5kaXNwYXRjaE1lc3NhZ2Uoc3RkOjptb3ZlKGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3Nh
Z2UubWVzc2FnZSkpOwogICAgIH0KIAogICAgIGlmICghbWVzc2FnZXNUb1B1dEJhY2suaXNFbXB0
eSgpKSB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9t
ZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kVmVjdG9yKG1l
c3NhZ2VzVG9QdXRCYWNrKTsKKworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdl
c1RvUHV0QmFjaykKKyAgICAgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5n
Rm9yU3luY1JlcGx5LmFwcGVuZChzdGQ6Om1vdmUobWVzc2FnZSkpOwogICAgIH0KIH0KIApAQCAt
Mzc4LDE3ICszNzcsMTcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICByZXR1cm4gc2VuZE1lc3NhZ2Uo
c3RkOjptb3ZlKGVuY29kZXIpKTsKIH0KIAotT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3Vi
bGUgdGltZW91dCkKK3N0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRp
bWVvdXQpCiB7CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5
IGluIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKIAogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVj
b2Rlcj4mIG1lc3NhZ2UgPSAqaXQ7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYgbWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0g
ZGVzdGluYXRpb25JRCkgewotICAgICAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3Zl
KG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShp
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmVkTWVzc2FnZTsKQEAgLTQxNCwxMyAr
NDEzLDE2IEBAIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3Nh
Z2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAKLSAgICAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVm
ZXJlbmNlPiwgdWludDY0X3Q+LCBPd25QdHI8TWVzc2FnZURlY29kZXI+Pjo6aXRlcmF0b3IgaXQg
PSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKKyAgICAg
ICAgYXV0byBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZmluZChtZXNzYWdlQW5kRGVzdGluYXRp
b24pOwogICAgICAgICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICBPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IGRlY29kZXIgPSBpdC0+dmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gc3RkOjptb3ZlKGl0LT52YWx1
ZSk7CiAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlTWFwLnJlbW92ZShpdCk7CiAKLSAgICAg
ICAgICAgIHJldHVybiBkZWNvZGVyLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVyOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gZGVjb2RlciA9IG1fd2FpdEZvck1lc3NhZ2VNYXAudGFrZShtZXNzYWdlQW5kRGVzdGlu
YXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZXI7CiAgICAgICAgIAogICAgICAgICAv
LyBOb3cgd2Ugd2FpdC4KICAgICAgICAgaWYgKCFtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLnRp
bWVkV2FpdChtX3dhaXRGb3JNZXNzYWdlTXV0ZXgsIGFic29sdXRlVGltZSkpIHsKQEAgLTQzNCw3
ICs0MzYsNyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNz
YWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1Pd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1
aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0
X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
LCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICBpZiAoUnVu
TG9vcDo6Y3VycmVudCgpICE9IG1fY2xpZW50UnVuTG9vcCkgewogICAgICAgICAvLyBObyBmbGFn
cyBhcmUgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcyBzZW50IGZyb20gc2Vjb25k
YXJ5IHRocmVhZHMuCkBAIC00NjYsNyArNDY4LDcgQEAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBD
b25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjoK
ICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQg
aW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtl
ZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdz
IGludmFsaWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKLSAgICBP
d25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVz
dElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0
LCBzeW5jU2VuZEZsYWdzKTsKIAogICAgIC0tbV9pblNlbmRTeW5jQ291bnQ7CiAKQEAgLTQ4MCwx
MCArNDgyLDEwIEBAIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNN
ZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6CiAgICAgaWYgKCFyZXBseSkKICAg
ICAgICAgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKLSAgICByZXR1cm4gcmVwbHkucmVs
ZWFzZSgpOworICAgIHJldHVybiByZXBseTsKIH0KIAotT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBD
b25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgZG91
YmxlIHRpbWVvdXQpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBkb3VibGUgdGltZW91
dCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpICE9IG1fY2xpZW50UnVuTG9vcCk7
CiAKQEAgLTUyMCw3ICs1MjIsNyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3QgcwogICAgIHJldHVy
biBzdGQ6Om1vdmUocGVuZGluZ1JlcGx5LnJlcGx5RGVjb2Rlcik7CiB9CiAKLU93blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVx
dWVzdElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKK3N0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFn
cykKIHsKICAgICAvLyBVc2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0
ID09IE5vVGltZW91dCkKQEAgLTU3Miw3ICs1NzQsNyBAQCBPd25QdHI8TWVzc2FnZURlY29kZXI+
IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgZG91
YgogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ1N5bmNSZXBseShPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIpCit2b2lkIENvbm5l
Y3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURl
Y29kZXI+IGRlY29kZXIpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3Rh
dGVNdXRleCk7CiAKQEAgLTYwOSwxMyArNjExLDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vz
c0luY29taW5nU3luY1JlcGx5KE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcikKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoT3du
UHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQordm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKIHsK
ICAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5pc0VtcHR5KCkpOwog
ICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0VtcHR5KCkpOwogCiAgICAgaWYg
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNz
YWdlTmFtZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgewotICAgICAgICBwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkobWVzc2FnZS5yZWxlYXNlKCkpOworICAgICAgICBwcm9jZXNzSW5jb21pbmdT
eW5jUmVwbHkoc3RkOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjM2LDcgKzYzOCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2Fn
ZShPd25QdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiAKICAgICBhdXRvIGl0ID0gbV93b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJzLmZpbmQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKICAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7Ci0g
ICAgICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlLCB0aGlzLCBpdC0+dmFsdWUuc2Vjb25k
LCBtZXNzYWdlLnJlbGVhc2UoKS5sZWFrUHRyKCkpKTsKKyAgICAgICAgaXQtPnZhbHVlLmZpcnN0
LT5kaXNwYXRjaChiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2UsIHRoaXMsIGl0LT52YWx1ZS5zZWNvbmQsIG1lc3NhZ2UucmVsZWFzZSgpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY1Miw3ICs2NTQsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNz
YWdlKQogCiAgICAgICAgIGF1dG8gaXQgPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQoc3RkOjpt
YWtlX3BhaXIoc3RkOjptYWtlX3BhaXIobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
ZXNzYWdlLT5tZXNzYWdlTmFtZSgpKSwgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSk7CiAgICAg
ICAgIGlmIChpdCAhPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBp
dC0+dmFsdWUgPSBtZXNzYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0
ZDo6bW92ZShtZXNzYWdlKTsKICAgICAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUpOwogICAgICAg
ICAKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24uc2lnbmFsKCk7CkBAIC02
NjAsNyArNjYyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGVu
cXVldWVJbmNvbWluZ01lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCkpOworICAgIGVucXVldWVJbmNv
bWluZ01lc3NhZ2Uoc3RkOjptb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTc3NCw3ICs3
NzYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiAgICAg
ZXhpdCgwKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gaW5jb21pbmdNZXNzYWdlKQordm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gaW5j
b21pbmdNZXNzYWdlKQogewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5j
b21pbmdNZXNzYWdlc0xvY2spOwpAQCAtNzg5LDcgKzc5MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQordm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBt
ZXNzYWdlKQogewogICAgIC8vIElmIHRoZXJlJ3Mgbm8gY2xpZW50LCByZXR1cm4uIFdlIGRvIHRo
aXMgYWZ0ZXIgY2FsbGluZyByZWxlYXNlQXJndW1lbnRzIHNvIHRoYXQKICAgICAvLyB0aGUgQXJn
dW1lbnREZWNvZGVyIG1lc3NhZ2Ugd2lsbCBiZSBmcmVlZC4KQEAgLTgyMyw3ICs4MjUsNyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29kZXI+IG1l
c3NhZ2UpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKCkKIHsKLSAgICBP
d25QdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VEZWNvZGVyPiBtZXNzYWdlOwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9pbmNvbWluZ01lc3NhZ2VzTG9jayk7CkBAIC04MzMsNyArODM1LDcgQEAgdm9pZCBDb25uZWN0
aW9uOjpkaXNwYXRjaE9uZU1lc3NhZ2UoKQogICAgICAgICBtZXNzYWdlID0gbV9pbmNvbWluZ01l
c3NhZ2VzLnRha2VGaXJzdCgpOwogICAgIH0KIAotICAgIGRpc3BhdGNoTWVzc2FnZShtZXNzYWdl
LnJlbGVhc2UoKSk7CisgICAgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6bW92ZShtZXNzYWdlKSk7CiB9
CiAKIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDE1Mzg2ZjRhNGE0MmJiZDhlMWE3YzFj
NTJlYTMzOWQ4OWIwZmY0YTEuLmNhNTg3MmIwZjhhYmQ0ODAxMDRkNzkxZTkxZDYzZGMxMjk2ZjEy
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0xNzUsOCArMTc1LDggQEAgcHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VF
bmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwogICAgIGJvb2wgc2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cyA9IDApOwotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJs
ZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7Ci0gICAgT3duUHRyPE1lc3Nh
Z2VEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1l
b3V0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHNlbmRTeW5jTWVzc2Fn
ZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+
LCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IDApOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlRnJvbVNlY29uZGFyeVRo
cmVhZCh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29k
ZXI+LCBkb3VibGUgdGltZW91dCk7CiAgICAgYm9vbCBzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CkBAIC0x
OTMsMTMgKzE5MywxMyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgCi0gICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiB3
YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGlt
ZW91dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9yTWVzc2Fn
ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAg
Ci0gICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0
X3Qgc3luY1JlcXVlc3RJRCwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3Mp
OwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUuCi0gICAgdm9p
ZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOwotICAgIHZv
aWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAg
IHZvaWQgcHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+KTsKKyAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
T25Db25uZWN0aW9uV29ya1F1ZXVlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBXb3JrUXVldWUqLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKICAgICB2b2lkIHJlbW92
ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck9uQ29ubmVjdGlvbldvcmtRdWV1ZShTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBwcml2YXRl
OgogICAgIC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgogICAgIHZvaWQgZGlzcGF0
Y2hDb25uZWN0aW9uRGlkQ2xvc2UoKTsKICAgICB2b2lkIGRpc3BhdGNoT25lTWVzc2FnZSgpOwot
ICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4pOwogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5n
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CiAgICAgdm9pZCBkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4K
LSAgICB2b2lkIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPik7
CisgICAgdm9pZCBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
RGVjb2Rlcj4pOwogCiAgICAgQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1faXNTZXJ2ZXI7
CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEluY29taW5nIG1lc3NhZ2Vz
LgogICAgIE11dGV4IG1faW5jb21pbmdNZXNzYWdlc0xvY2s7Ci0gICAgRGVxdWU8T3duUHRyPE1l
c3NhZ2VEZWNvZGVyPj4gbV9pbmNvbWluZ01lc3NhZ2VzOworICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlRGVjb2Rlcj4+IG1faW5jb21pbmdNZXNzYWdlczsKIAogICAgIC8vIE91dGdv
aW5nIG1lc3NhZ2VzLgogICAgIE11dGV4IG1fb3V0Z29pbmdNZXNzYWdlc0xvY2s7CkBAIC0yNTIs
NyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBUaHJlYWRDb25kaXRpb24gbV93YWl0Rm9y
TWVzc2FnZUNvbmRpdGlvbjsKICAgICBNdXRleCBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7Ci0gICAg
SGFzaE1hcDxzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJl
bmNlPiwgdWludDY0X3Q+LCBPd25QdHI8TWVzc2FnZURlY29kZXI+PiBtX3dhaXRGb3JNZXNzYWdl
TWFwOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIFN0
cmluZ1JlZmVyZW5jZT4sIHVpbnQ2NF90Piwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVy
Pj4gbV93YWl0Rm9yTWVzc2FnZU1hcDsKIAogICAgIC8vIFJlcHJlc2VudHMgYSBzeW5jIHJlcXVl
c3QgZm9yIHdoaWNoIHdlJ3JlIHdhaXRpbmcgb24gYSByZXBseS4KICAgICBzdHJ1Y3QgUGVuZGlu
Z1N5bmNSZXBseSB7CkBAIC0yNjEsNyArMjYxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBU
aGUgcmVwbHkgZGVjb2Rlciwgd2lsbCBiZSBudWxsIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBwcm9j
ZXNzaW5nIHRoZSBzeW5jCiAgICAgICAgIC8vIG1lc3NhZ2Ugb24gdGhlIG90aGVyIHNpZGUuCi0g
ICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5RGVjb2RlcjsKIAogICAgICAgICAvLyBX
aWxsIGJlIHNldCB0byB0cnVlIG9uY2UgYSByZXBseSBoYXMgYmVlbiByZWNlaXZlZC4KICAgICAg
ICAgYm9vbCBkaWRSZWNlaXZlUmVwbHk7CkBAIC0zNjYsNyArMzY2LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25z
dCB0eXBlbmFtZQogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKIAogICAgIC8vIE5vdyBz
ZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxNZXNzYWdl
RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIHN0
ZDo6bW92ZShlbmNvZGVyKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3lu
Y1JlcXVlc3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
ICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzYs
NyArMzc2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3lu
Yyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQogewotICAgIE93blB0cjxNZXNzYWdlRGVj
b2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
RGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOwogICAgIGlmICghZGVjb2RlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDljZGM4OGUwZjZmOWRmOTAwM2ZhYTk5
MmY5MzdlMmEyZjBjNzM5MjAuLjk0OGM0ZWI3ZGMxYjJlZWYxYzFmMmZhYTdiN2Q5ZWJiOTUyN2Jh
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5l
Y3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nv
bm5lY3Rpb25NYWMuY3BwCkBAIC0yOTksMTQgKzI5OSwxNCBAQCB2b2lkIENvbm5lY3Rpb246Omlu
aXRpYWxpemVEZWFkTmFtZVNvdXJjZSgpCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFk
ZXIpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGVNZXNzYWdl
RGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogewogICAgIGlmICghKGhlYWRlci0+
bXNnaF9iaXRzICYgTUFDSF9NU0dIX0JJVFNfQ09NUExFWCkpIHsKICAgICAgICAgLy8gV2UgaGF2
ZSBhIHNpbXBsZSBtZXNzYWdlLgogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhl
YWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICBy
ZXR1cm4gY3JlYXRlT3duZWQ8TWVzc2FnZURlY29kZXI+KERhdGFSZWZlcmVuY2UoYm9keSwgYm9k
eVNpemUpLCBWZWN0b3I8QXR0YWNobWVudD4oKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKGJvZHksIGJvZHlTaXplKSwgVmVj
dG9yPEF0dGFjaG1lbnQ+KCkpOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2FnZUJvZHlJc09PTCA9
IGhlYWRlci0+bXNnaF9pZCAmIE1lc3NhZ2VCb2R5SXNPdXRPZkxpbmU7CkBAIC0zNTEsNyArMzUx
LDcgQEAgc3RhdGljIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIo
bWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJvZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7
CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBtZXNzYWdlQm9keUF0dGFjaG1lbnQu
c2l6ZSgpOwogCi0gICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0
ZU93bmVkPE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdl
Qm9keVNpemUpLCBzdGQ6Om1vdmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgYXV0byBkZWNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlRGVjb2Rlcj4oRGF0YVJlZmVyZW5jZShtZXNzYWdl
Qm9keSwgbWVzc2FnZUJvZHlTaXplKSwgc3RkOjptb3ZlKGF0dGFjaG1lbnRzKSk7CiAKICAgICAg
ICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2Fk
ZHJlc3NfdD4obWVzc2FnZUJvZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0
YWNobWVudC5zaXplKCkpOwogCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIE93blB0cjxNZXNz
YWdlRGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRl
cikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVf
dCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAt
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIGNyZWF0
ZU93bmVkPE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdl
Qm9keVNpemUpLCBhdHRhY2htZW50cyk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVz
c2FnZURlY29kZXI+KERhdGFSZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSks
IGF0dGFjaG1lbnRzKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFs
d2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTQwMiw3ICs0MDIsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgIGlmICgh
aGVhZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRl
Y29kZXIgPSBjcmVhdGVNZXNzYWdlRGVjb2RlcihoZWFkZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKGhlYWRlcik7
CiAgICAgQVNTRVJUKGRlY29kZXIpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZl
U291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nl
c3NJbmNvbWluZ01lc3NhZ2UoZGVjb2Rlci5yZWxlYXNlKCkpOworICAgIHByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2Uoc3RkOjptb3ZlKGRlY29kZXIpKTsKIH0gICAgCiAKIHZvaWQgQ29ubmVjdGlvbjo6
ZXhjZXB0aW9uU291cmNlRXZlbnRIYW5kbGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
NzRmYTM2NTA4YTZmNGIzNjQyNmJmMzAwZTQwOTIzMmRlMTQyY2FiOC4uZDI5ZDMyZWYxMDU4ODFh
NjNmOWI0NjZjNzljMTQ3ZjIzY2EyYzgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdAogICAgIGVuY29kZXItPmVuY29k
ZShtZXNzYWdlTmFtZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKLSAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2Fn
ZURlY29kZXI+IHJlcGx5RGVjb2RlciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBzdGQ6Om1vdmUo
ZW5jb2RlciksIENvcmVJUEM6OkNvbm5lY3Rpb246Ok5vVGltZW91dCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luY01lc3NhZ2Uoc3lu
Y1JlcXVlc3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1Rp
bWVvdXQpOwogICAgIGlmICghcmVwbHlEZWNvZGVyIHx8ICFyZXBseURlY29kZXItPmRlY29kZSht
ZXNzYWdlRGVjb2RlcikpIHsKICAgICAgICAgcmV0dXJuRGF0YSA9IG51bGxwdHI7CiAgICAgICAg
IHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212504</attachid>
            <date>2013-09-24 14:32:39 -0700</date>
            <delta_ts>2013-09-24 14:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121868-20130924143238.patch</filename>
            <type>text/plain</type>
            <size>22849</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODQwNjEzODY3ODk3MDFl
YTI2YjUwOTNhZGE5NzViMGExODJhZGFkZS4uMjgyNWY2N2RmZDNiNmYwNGZiN2MwNjY1ZmExYjgz
MTc2NTE4ZWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEzLTA5LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIHN0ZDo6dW5p
cXVlX3B0ciBmb3IgZGVjb2RlcnMgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0lu
Y29taW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
TWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29t
aW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmNyZWF0ZU1lc3Nh
Z2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cG9zdFN5bmNo
cm9ub3VzTWVzc2FnZSk6CisKKzIwMTMtMDktMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIE1lc3NhZ2VFbmNvZGVyIGFuZCBBcmd1bWVudEVu
Y29kZXIgdG8gc3RkOjp1bmlxdWVfcHRyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE4NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMDA3MTcwYTE2ZTA0Njg5YzVkY2I4YTQxZDdiMTNh
MzRjNWFmYzhhYi4uZTI5MTQxMGI1MGRlMmEwNGZmYjI1MDk4NjRiMGViMTU2YmFmNDZhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG1lc3Nh
Z2Ugd2lsbCBiZSBoYW5kbGVkIG9uIGEgY2xpZW50IHRocmVhZCB0aGF0IGlzIGN1cnJlbnRseQog
ICAgIC8vIHdhaXRpbmcgZm9yIGEgcmVwbHkgdG8gYSBzeW5jaHJvbm91cyBtZXNzYWdlLgotICAg
IGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwgT3duUHRyPE1lc3NhZ2VE
ZWNvZGVyPiYpOworICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiwg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiYpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVu
ZGluZyBzeW5jIG1lc3NhZ2VzLiBpZiBhbGxvd2VkQ29ubmVjdGlvbiBpcyBub3QgbnVsbCwgd2ls
bCBvbmx5IGRpc3BhdGNoIG1lc3NhZ2VzCiAgICAgLy8gZnJvbSB0aGF0IGNvbm5lY3Rpb24gYW5k
IHB1dCB0aGUgb3RoZXIgbWVzc2FnZXMgYmFjayBpbiB0aGUgcXVldWUuCkBAIC04OCwxMCArODgs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2Ug
ewogICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKLQotICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTk0Ci0gICAg
ICAgIC8vIFRoaXMgc2hvdWxkIHJlYWxseSBhbiBiZSBPd25QdHIsIGJ1dCB3ZSBuZWVkIFZlY3Rv
ciB0byB3b3JrIHdpdGggbW92ZSBvbmx5IG9iamVjdHMgZmlyc3QuCi0gICAgICAgIE1lc3NhZ2VE
ZWNvZGVyKiBtZXNzYWdlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IG1lc3NhZ2U7CiAgICAgfTsKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2Fn
ZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHk7CiB9OwpAQCAt
OTksNyArOTYsNyBAQCBwcml2YXRlOgogY2xhc3MgQ29ubmVjdGlvbjo6U2Vjb25kYXJ5VGhyZWFk
UGVuZGluZ1N5bmNSZXBseSB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIHJlcGx5IGRlY29kZXIsIHdp
bGwgYmUgbnVsbCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgc3luYyBtZXNz
YWdlIG9uIHRoZSBvdGhlciBzaWRlLgotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVy
OwogCiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKIH07CkBAIC0xMzYsMTQgKzEzMywx
NCBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjp+U3luY01lc3NhZ2VTdGF0ZSgpCiAg
ICAgQVNTRVJUKG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5Lmlz
RW1wdHkoKSk7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBPd25QdHI8TWVzc2FnZURl
Y29kZXI+JiBtZXNzYWdlKQorYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtZXNzYWdlLT5zaG91bGRE
aXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlIGNvbm5lY3Rpb25BbmRJ
bmNvbWluZ01lc3NhZ2U7CiAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uID0gY29ubmVjdGlvbjsKLSAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLm1lc3Nh
Z2UgPSBtZXNzYWdlLmxlYWtQdHIoKTsKKyAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UgPSBzdGQ6Om1vdmUobWVzc2FnZSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKQEAgLTE1MSw3ICsxNDgsNyBAQCBib29sIENvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiogY29u
bmVjdGlvbgogICAgICAgICBpZiAobV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0
LmFkZChjb25uZWN0aW9uKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgbV9ydW5Mb29wLT5kaXNw
YXRjaChiaW5kKCZTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNj
aGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24sIHRoaXMsIFJlZlB0cjxDb25uZWN0
aW9uPihjb25uZWN0aW9uKSkpOwogCi0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKTsK
KyAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBw
ZW5kKHN0ZDo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKSk7CiAgICAgfQogCiAg
ICAgd2FrZVVwQ2xpZW50UnVuTG9vcCgpOwpAQCAtMTc4LDE2ICsxNzUsMTggQEAgdm9pZCBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFs
bG93ZWRDb25uZWN0aW8KICAgICAgICAgaWYgKGFsbG93ZWRDb25uZWN0aW9uICYmIGFsbG93ZWRD
b25uZWN0aW9uICE9IGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UuY29ubmVjdGlvbikgewog
ICAgICAgICAgICAgLy8gVGhpcyBpbmNvbWluZyBtZXNzYWdlIGJlbG9uZ3MgdG8gYW5vdGhlciBj
b25uZWN0aW9uIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRpc3BhdGNoIGl0IG5vdwogICAgICAgICAg
ICAgLy8gc28gbWFyayBpdCB0byBiZSBwdXQgYmFjayBpbiB0aGUgbWVzc2FnZSBxdWV1ZS4KLSAg
ICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlKTsKKyAgICAgICAgICAgIG1lc3NhZ2VzVG9QdXRCYWNrLmFwcGVuZChzdGQ6Om1vdmUo
Y29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlLmNvbm5lY3Rp
b24tPmRpc3BhdGNoTWVzc2FnZShhZG9wdFB0cihjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdl
Lm1lc3NhZ2UpKTsKKyAgICAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0
aW9uLT5kaXNwYXRjaE1lc3NhZ2Uoc3RkOjptb3ZlKGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3Nh
Z2UubWVzc2FnZSkpOwogICAgIH0KIAogICAgIGlmICghbWVzc2FnZXNUb1B1dEJhY2suaXNFbXB0
eSgpKSB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9t
ZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kVmVjdG9yKG1l
c3NhZ2VzVG9QdXRCYWNrKTsKKworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdl
c1RvUHV0QmFjaykKKyAgICAgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5n
Rm9yU3luY1JlcGx5LmFwcGVuZChzdGQ6Om1vdmUobWVzc2FnZSkpOwogICAgIH0KIH0KIApAQCAt
Mzc4LDE3ICszNzcsMTcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICByZXR1cm4gc2VuZE1lc3NhZ2Uo
c3RkOjptb3ZlKGVuY29kZXIpKTsKIH0KIAotT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3Vi
bGUgdGltZW91dCkKK3N0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRp
bWVvdXQpCiB7CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5
IGluIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CiAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKIAogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVj
b2Rlcj4mIG1lc3NhZ2UgPSAqaXQ7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYgbWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0g
ZGVzdGluYXRpb25JRCkgewotICAgICAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmV0dXJuZWRNZXNzYWdlID0gc3RkOjptb3Zl
KG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShp
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmVkTWVzc2FnZTsKQEAgLTQxNCwxNCAr
NDEzLDE0IEBAIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3Nh
Z2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAKLSAgICAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVm
ZXJlbmNlPiwgdWludDY0X3Q+LCBPd25QdHI8TWVzc2FnZURlY29kZXI+Pjo6aXRlcmF0b3IgaXQg
PSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKKyAgICAg
ICAgYXV0byBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZmluZChtZXNzYWdlQW5kRGVzdGluYXRp
b24pOwogICAgICAgICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICBPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IGRlY29kZXIgPSBpdC0+dmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gc3RkOjptb3ZlKGl0LT52YWx1
ZSk7CiAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlTWFwLnJlbW92ZShpdCk7CiAKLSAgICAg
ICAgICAgIHJldHVybiBkZWNvZGVyLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBkZWNv
ZGVyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIE5vdyB3ZSB3YWl0LgogICAg
ICAgICBpZiAoIW1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24udGltZWRXYWl0KG1fd2FpdEZvck1l
c3NhZ2VNdXRleCwgYWJzb2x1dGVUaW1lKSkgewogICAgICAgICAgICAgLy8gV2UgdGltZWQgb3V0
LCBub3cgcmVtb3ZlIHRoZSBwZW5kaW5nIHdhaXQuCkBAIC00MzQsNyArNDMzLDcgQEAgT3duUHRy
PE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3duUHRyPE1lc3Nh
Z2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBkb3VibGUgdGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKK3N0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQs
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgZG91YmxlIHRpbWVvdXQs
IHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpCiB7CiAgICAgaWYgKFJ1bkxvb3A6OmN1cnJlbnQoKSAh
PSBtX2NsaWVudFJ1bkxvb3ApIHsKICAgICAgICAgLy8gTm8gZmxhZ3MgYXJlIHN1cHBvcnRlZCBm
b3Igc3luY2hyb25vdXMgbWVzc2FnZXMgc2VudCBmcm9tIHNlY29uZGFyeSB0aHJlYWRzLgpAQCAt
NDY2LDcgKzQ2NSw3IEBAIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6CiAgICAgLy8gVGhlbiB3YWl0
IGZvciBhIHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hp
bmcgaW5jb21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVy
ZW5jZSB0byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KICAg
ICBSZWY8Q29ubmVjdGlvbj4gcHJvdGVjdCgqdGhpcyk7Ci0gICAgT3duUHRyPE1lc3NhZ2VEZWNv
ZGVyPiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgdGltZW91dCwgc3lu
Y1NlbmRGbGFncyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseSA9
IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7
CiAKICAgICAtLW1faW5TZW5kU3luY0NvdW50OwogCkBAIC00ODAsMTAgKzQ3OSwxMCBAQCBPd25Q
dHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBz
eW5jUmVxdWVzdElELCBzdGQ6OgogICAgIGlmICghcmVwbHkpCiAgICAgICAgIGRpZEZhaWxUb1Nl
bmRTeW5jTWVzc2FnZSgpOwogCi0gICAgcmV0dXJuIHJlcGx5LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gcmVwbHk7CiB9CiAKLU93blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlRnJvbVNlY29uZGFyeVRocmVhZCh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIGRvdWJsZSB0aW1lb3V0KQorc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmN1cnJlbnQoKSAhPSBtX2NsaWVudFJ1bkxvb3ApOwogCkBAIC01MjAsNyArNTE5
LDcgQEAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKHVpbnQ2NF90IHMKICAgICByZXR1cm4gc3RkOjptb3ZlKHBlbmRp
bmdSZXBseS5yZXBseURlY29kZXIpOwogfQogCi1Pd25QdHI8TWVzc2FnZURlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgZG91YmxlIHRp
bWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURl
Y29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpCiB7CiAgICAgLy8gVXNl
IGEgcmVhbGx5IGxvbmcgdGltZW91dC4KICAgICBpZiAodGltZW91dCA9PSBOb1RpbWVvdXQpCkBA
IC01NzIsNyArNTcxLDcgQEAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0
Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRvdWIKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoT3du
UHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQordm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQog
ewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogCkBAIC02
MDksMTMgKzYwOCwxMyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBs
eShPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIpCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVu
IGlmIHRoZSBzZW5kIHRpbWVkIG91dCwgc28gaXQncyBmaW5lIHRvIGlnbm9yZS4KIH0KIAotdm9p
ZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gbWVzc2FnZSkKK3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNz
YWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkuaXNFbXB0eSgpKTsKIAogICAgIGlmIChtZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiU3lu
Y01lc3NhZ2VSZXBseSIpIHsKLSAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KG1lc3Nh
Z2UucmVsZWFzZSgpKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KHN0ZDo6bW92
ZShtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYzNiw3ICs2MzUsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoT3duUHRyPE1lc3NhZ2VE
ZWNvZGVyPiBtZXNzYWdlKQogCiAgICAgYXV0byBpdCA9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVycy5maW5kKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAgaWYgKGl0ICE9
IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewotICAgICAgICBpdC0+dmFsdWUu
Zmlyc3QtPmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZSwgdGhpcywgaXQtPnZhbHVlLnNlY29uZCwgbWVzc2FnZS5yZWxlYXNl
KCkubGVha1B0cigpKSk7CisgICAgICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goYmluZCgm
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlLCB0aGlz
LCBpdC0+dmFsdWUuc2Vjb25kLCBtZXNzYWdlLnJlbGVhc2UoKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02NTIsNyArNjUxLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKIAogICAgICAgICBh
dXRvIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bWFr
ZV9wYWlyKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5h
bWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkpOwogICAgICAgICBpZiAoaXQgIT0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgaXQtPnZhbHVlID0gbWVzc2Fn
ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBpdC0+dmFsdWUgPSBzdGQ6Om1vdmUobWVzc2FnZSk7
CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlKTsKICAgICAgICAgCiAgICAgICAgICAgICBt
X3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLnNpZ25hbCgpOwpAQCAtNjYwLDcgKzY1OSw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29k
ZXI+IG1lc3NhZ2UpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlbnF1ZXVlSW5jb21pbmdNZXNz
YWdlKG1lc3NhZ2UucmVsZWFzZSgpKTsKKyAgICBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKHN0ZDo6
bW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRD
bG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCkBAIC03NzQsNyArNzczLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQogICAgIGV4aXQoMCk7CiB9CiAKLXZv
aWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29k
ZXI+IGluY29taW5nTWVzc2FnZSkKK3ZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGluY29taW5nTWVzc2FnZSkKIHsK
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2luY29taW5nTWVzc2FnZXNMb2Nr
KTsKQEAgLTc4OSw3ICs3ODgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
dGhpcywgZGVjb2Rlcik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKIHsKICAgICAv
LyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0aGlzIGFmdGVyIGNhbGxpbmcg
cmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFyZ3VtZW50RGVjb2RlciBtZXNz
YWdlIHdpbGwgYmUgZnJlZWQuCkBAIC04MjMsNyArODIyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQogCiB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSgpCiB7Ci0gICAgT3duUHRyPE1lc3NhZ2VEZWNv
ZGVyPiBtZXNzYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2Fn
ZTsKIAogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5jb21pbmdNZXNzYWdl
c0xvY2spOwpAQCAtODMzLDcgKzgzMiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVN
ZXNzYWdlKCkKICAgICAgICAgbWVzc2FnZSA9IG1faW5jb21pbmdNZXNzYWdlcy50YWtlRmlyc3Qo
KTsKICAgICB9CiAKLSAgICBkaXNwYXRjaE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCkpOworICAg
IGRpc3BhdGNoTWVzc2FnZShzdGQ6Om1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lkIENvbm5lY3Rp
b246Ondha2VVcFJ1bkxvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nv
bm5lY3Rpb24uaAppbmRleCAxNTM4NmY0YTRhNDJiYmQ4ZTFhN2MxYzUyZWEzMzlkODliMGZmNGEx
Li5jYTU4NzJiMGY4YWJkNDgwMTA0ZDc5MWU5MWQ2M2RjMTI5NmYxMjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTc1LDggKzE3NSw4IEBA
IHB1YmxpYzoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90
JiBzeW5jUmVxdWVzdElEKTsKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKLSAgICBPd25Q
dHI8TWVzc2FnZURlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElE
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+LCBkb3VibGUgdGltZW91dCwgdW5zaWdu
ZWQgc3luY1NlbmRGbGFncyA9IDApOwotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5
bmNNZXNzYWdlRnJvbVNlY29uZGFyeVRocmVhZCh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+LCBkb3VibGUgdGltZW91dCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1Jl
cXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiwgZG91YmxlIHRpbWVvdXQs
IHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+IHNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiwgZG91YmxlIHRpbWVv
dXQpOwogICAgIGJvb2wgc2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29k
ZXI+KTsKIAogICAgIHZvaWQgd2FrZVVwUnVuTG9vcCgpOwpAQCAtMTkzLDEzICsxOTMsMTMgQEAg
cHJpdmF0ZToKICAgICAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQogICAgIAotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpOwogICAgIAotICAgIE93blB0cjxNZXNz
YWdlRGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3Vi
bGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKTsKIAogICAgIC8vIENhbGxl
ZCBvbiB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlLgotICAgIHZvaWQgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29kZXI+KTsKLSAgICB2b2lkIHByb2Nlc3NJbmNvbWlu
Z1N5bmNSZXBseShPd25QdHI8TWVzc2FnZURlY29kZXI+KTsKKyAgICB2b2lkIHByb2Nlc3NJbmNv
bWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPik7CisgICAgdm9pZCBw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPik7
CiAKICAgICB2b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck9uQ29ubmVjdGlvbldvcmtR
dWV1ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlKiwgV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CiAgICAgdm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJPbkNvbm5lY3Rpb25Xb3JrUXVldWUoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUpOwpAQCAtMjE0LDE0ICsyMTQsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBDYWxsZWQg
b24gdGhlIGxpc3RlbmVyIHRocmVhZC4KICAgICB2b2lkIGRpc3BhdGNoQ29ubmVjdGlvbkRpZENs
b3NlKCk7CiAgICAgdm9pZCBkaXNwYXRjaE9uZU1lc3NhZ2UoKTsKLSAgICB2b2lkIGRpc3BhdGNo
TWVzc2FnZShPd25QdHI8TWVzc2FnZURlY29kZXI+KTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZShNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShNZXNz
YWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
Y29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYg
bWVzc2FnZU5hbWVTdHJpbmcpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7
CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCi0gICAgdm9pZCBlbnF1ZXVl
SW5jb21pbmdNZXNzYWdlKE93blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAgIHZvaWQgZW5xdWV1
ZUluY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+KTsKIAogICAg
IENsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2lzU2VydmVyOwpAQCAtMjQ0LDcgKzI0NCw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBJbmNvbWluZyBtZXNzYWdlcy4KICAgICBNdXRleCBtX2lu
Y29taW5nTWVzc2FnZXNMb2NrOwotICAgIERlcXVlPE93blB0cjxNZXNzYWdlRGVjb2Rlcj4+IG1f
aW5jb21pbmdNZXNzYWdlczsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+PiBtX2luY29taW5nTWVzc2FnZXM7CiAKICAgICAvLyBPdXRnb2luZyBtZXNzYWdlcy4KICAg
ICBNdXRleCBtX291dGdvaW5nTWVzc2FnZXNMb2NrOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247
CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2FnZU11dGV4OwotICAgIEhhc2hNYXA8c3RkOjpwYWly
PHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIFN0cmluZ1JlZmVyZW5jZT4sIHVpbnQ2NF90Piwg
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPj4gbV93YWl0Rm9yTWVzc2FnZU1hcDsKKyAgICBIYXNoTWFw
PHN0ZDo6cGFpcjxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCBTdHJpbmdSZWZlcmVuY2U+LCB1
aW50NjRfdD4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4+IG1fd2FpdEZvck1lc3Nh
Z2VNYXA7CiAKICAgICAvLyBSZXByZXNlbnRzIGEgc3luYyByZXF1ZXN0IGZvciB3aGljaCB3ZSdy
ZSB3YWl0aW5nIG9uIGEgcmVwbHkuCiAgICAgc3RydWN0IFBlbmRpbmdTeW5jUmVwbHkgewpAQCAt
MjYxLDcgKzI2MSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gVGhlIHJlcGx5IGRlY29kZXIs
IHdpbGwgYmUgbnVsbCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgc3luYwog
ICAgICAgICAvLyBtZXNzYWdlIG9uIHRoZSBvdGhlciBzaWRlLgotICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IHJlcGx5RGVjb2RlcjsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VEZWNvZGVyPiByZXBseURlY29kZXI7CiAKICAgICAgICAgLy8gV2lsbCBiZSBzZXQgdG8gdHJ1
ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVjZWl2ZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2
ZVJlcGx5OwpAQCAtMzY2LDcgKzM2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29u
bmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUKICAgICBl
bmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2FnZSBh
bmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5RGVj
b2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBzdGQ6Om1vdmUoZW5jb2Rlciks
IHRpbWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIHN0ZDo6
bW92ZShlbmNvZGVyKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAgaWYgKCFyZXBseURl
Y29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzc2LDcgKzM3Niw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2Fn
ZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9u
Ojp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBk
b3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSB3
YWl0Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklE
LCB0aW1lb3V0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIg
PSB3YWl0Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklELCB0aW1lb3V0KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVj
dGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcAppbmRleCA5Y2RjODhlMGY2ZjlkZjkwMDNmYWE5OTJmOTM3ZTJhMmYwYzczOTIw
Li45NDhjNGViN2RjMWIyZWVmMWMxZjJmYWE3YjdkOWViYjk1MjdiYWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcApA
QCAtMjk5LDE0ICsyOTksMTQgQEAgdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplRGVhZE5hbWVT
b3VyY2UoKQogICAgIH0pOwogfQogCi1zdGF0aWMgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVh
dGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQorc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2df
aGVhZGVyX3QqIGhlYWRlcikKIHsKICAgICBpZiAoIShoZWFkZXItPm1zZ2hfYml0cyAmIE1BQ0hf
TVNHSF9CSVRTX0NPTVBMRVgpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBzaW1wbGUgbWVzc2Fn
ZS4KICAgICAgICAgdWludDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhl
YWRlciArIDEpOwogICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAt
IHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU93bmVk
PE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKGJvZHksIGJvZHlTaXplKSwgVmVjdG9yPEF0
dGFjaG1lbnQ+KCkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlRGVj
b2Rlcj4oRGF0YVJlZmVyZW5jZShib2R5LCBib2R5U2l6ZSksIFZlY3RvcjxBdHRhY2htZW50Pigp
KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQg
JiBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lOwpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBPd25Q
dHI8TWVzc2FnZURlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90
KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KG1lc3NhZ2VCb2R5QXR0YWNobWVudC5hZGRyZXNzKCkpOwogICAgICAgICBzaXplX3Qg
bWVzc2FnZUJvZHlTaXplID0gbWVzc2FnZUJvZHlBdHRhY2htZW50LnNpemUoKTsKIAotICAgICAg
ICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVPd25lZDxNZXNzYWdlRGVj
b2Rlcj4oRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplKSwgc3RkOjpt
b3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TWVzc2FnZURlY29kZXI+KERhdGFSZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5
U2l6ZSksIHN0ZDo6bW92ZShhdHRhY2htZW50cykpOwogCiAgICAgICAgIHZtX2RlYWxsb2NhdGUo
bWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KG1lc3NhZ2VC
b2R5QXR0YWNobWVudC5hZGRyZXNzKCkpLCBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpKTsK
IApAQCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhfdCog
bWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXpl
ID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBjcmVhdGVPd25lZDxNZXNzYWdlRGVj
b2Rlcj4oRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplKSwgYXR0YWNo
bWVudHMpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VEZWNvZGVyPihEYXRh
UmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7CiB9
CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUg
bWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICBpZiAoIWhlYWRlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gY3JlYXRlTWVz
c2FnZURlY29kZXIoaGVhZGVyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IGRlY29kZXIgPSBjcmVhdGVNZXNzYWdlRGVjb2RlcihoZWFkZXIpOwogICAgIEFTU0VSVChkZWNv
ZGVyKTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MApAQCAt
NDQ5LDcgKzQ0OSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxl
cigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KGRlY29kZXIucmVsZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6bW92
ZShkZWNvZGVyKSk7CiB9ICAgIAogCiB2b2lkIENvbm5lY3Rpb246OmV4Y2VwdGlvblNvdXJjZUV2
ZW50SGFuZGxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDc0ZmEzNjUwOGE2ZjRiMzY0
MjZiZjMwMGU0MDkyMzJkZTE0MmNhYjguLmQyOWQzMmVmMTA1ODgxYTYzZjliNDY2Yzc5YzE0N2Yy
M2NhMmM4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2VOYW1lLCBBUElPYmplY3QKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZU5hbWUpOwog
ICAgIGVuY29kZXItPmVuY29kZShJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlcihtZXNz
YWdlQm9keSkpOwogCi0gICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyPiByZXBseURl
Y29kZXIgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCBDb3JlSVBD
OjpDb25uZWN0aW9uOjpOb1RpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIHN0ZDo6
bW92ZShlbmNvZGVyKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KTsKICAgICBpZiAo
IXJlcGx5RGVjb2RlciB8fCAhcmVwbHlEZWNvZGVyLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKSB7
CiAgICAgICAgIHJldHVybkRhdGEgPSBudWxscHRyOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="234741"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>