<?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>79870</bug_id>
          
          <creation_ts>2012-02-28 22:09:29 -0800</creation_ts>
          <short_desc>[BlackBerry]Array of Cookies in HTTP request header are not in order.</short_desc>
          <delta_ts>2012-03-01 20:26:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>0</everconfirmed>
          <reporter name="Jason Liu">jasonliuwebkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>jasonliuwebkit</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>kpiascik</cc>
    
    <cc>staikos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567368</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-02-28 22:09:29 -0800</bug_when>
    <thetext>Test Case:
----------
Setting array of cookies as follow:
setcookie(&quot;setArraycookie[three]&quot;, &quot;cookiethree&quot;);
setcookie(&quot;setArraycookie[two]&quot;, &quot;cookietwo&quot;);
setcookie(&quot;setArraycookie[one]&quot;, &quot;cookieone&quot;);

Expected Results:
-----------------
Order of cookies in the HTTP request should be the same order as the HTTP
response sent from the server:

Cookie:setArraycookie[three]=cookiethree; setArraycookie[two]=cookietwo;
setArraycookie[one]=cookieone

Actual results:
---------------
Cookie Array are not in the same order:

Cookie:setArraycookie[one]=cookieone; setArraycookie[three]=cookiethree;
setArraycookie[two]=cookietwo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567520</commentid>
    <comment_count>1</comment_count>
      <attachid>129419</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-02-29 01:59:05 -0800</bug_when>
    <thetext>Created attachment 129419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567524</commentid>
    <comment_count>2</comment_count>
      <attachid>129420</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-02-29 02:07:56 -0800</bug_when>
    <thetext>Created attachment 129420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567828</commentid>
    <comment_count>3</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-02-29 12:32:48 -0800</bug_when>
    <thetext>The refactor of removeCookie doesn&apos;t do the right thing.  Without this patch it was:

ParsedCookie* CookieMap::removeCookie(const ParsedCookie* cookie)
{
    // Find a previous entry for deletion
    String key = cookie-&gt;name() + cookie-&gt;path();
    ParsedCookie* prevCookie = m_cookieMap.take(key);

    if (!prevCookie)
        return 0;

    if (prevCookie == m_oldestCookie)
        updateOldestCookie();
    else if (prevCookie != cookie) {
        // The cookie we used to search is force expired, we must do the same
        // to the cookie in memory too.
        if (cookie-&gt;isForceExpired())
            prevCookie-&gt;forceExpire();
        delete cookie;
    }

    if (!prevCookie-&gt;isSession())
        cookieManager().removedCookie();
    return prevCookie;
}

And it was called from two places.  The new removeCookieAtIndex only does the equivalent of m_cookieMap.take(key), and so when it&apos;s called from getAllCookies, all the other bookkeeping done by removeCookie is skipped.

removeCookieAtIndex should be:

ParsedCookie* CookieMap::removeCookieAtIndex(size_t position)
{
    ASSERT(0 &lt;= position &amp;&amp; position &lt; m_cookieVector.size());
    ParsedCookie* prevCookie = m_cookieVector[position];
    m_cookieVector.remove(position);

    if (prevCookie == m_oldestCookie)
        updateOldestCookie();
    else if (prevCookie != cookie) {
        // The cookie we used to search is force expired, we must do the same
        // to the cookie in memory too.
        if (cookie-&gt;isForceExpired())
            prevCookie-&gt;forceExpire();
        delete cookie;
    }

    if (!prevCookie-&gt;isSession())
        cookieManager().removedCookie();
    return prevCookie;
}

And then removeCookie is just:

ParsedCookie* CookieMap::removeCookie(const ParsedCookie* cookie)
{
    size_t cookieCount = m_cookieVector.size();
    for (int position = 0; position &lt; cookieCount; ++position) {
        if (m_cookieVector[position]-&gt;name() == cookie-&gt;name() &amp;&amp; m_cookieVector[position]-&gt;path() == cookie-&gt;path())
            return removeCookieAtIndex(position);
    }
    return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568450</commentid>
    <comment_count>4</comment_count>
      <attachid>129657</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-03-01 00:59:20 -0800</bug_when>
    <thetext>Created attachment 129657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568459</commentid>
    <comment_count>5</comment_count>
      <attachid>129660</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-03-01 01:14:00 -0800</bug_when>
    <thetext>Created attachment 129660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568771</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-03-01 10:47:17 -0800</bug_when>
    <thetext>I was a little surprised to find out that removeCookieAtIndex still needs the &quot;cookie&quot; parameter as well as the index, but after I thought about it a bit, it makes sense: this is for the case where a cookie has been updated (ie. a new cookie with the same name and path overwrote the old one), and removeCookie is called based on the old cookie.  In this case there is extra cleanup to do, so the old cookie still needs to be passed in.

A comment explaining this would be good.  Otherwise looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568775</commentid>
    <comment_count>7</comment_count>
      <attachid>129660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 11:00:02 -0800</bug_when>
    <thetext>Comment on attachment 129660
Patch

Rejecting attachment 129660 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11769567</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569207</commentid>
    <comment_count>8</comment_count>
      <attachid>129660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 20:26:54 -0800</bug_when>
    <thetext>Comment on attachment 129660
Patch

Clearing flags on attachment: 129660

Committed r109494: &lt;http://trac.webkit.org/changeset/109494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569208</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 20:26:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129419</attachid>
            <date>2012-02-29 01:59:05 -0800</date>
            <delta_ts>2012-02-29 02:07:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79870-20120229175902.patch</filename>
            <type>text/plain</type>
            <size>21328</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzOGQ0YTQyZGE5MmNk
ODBhYmMwMjQ4NWM1MTA4YTA1YTBmZDhmMy4uZjg4YjE1MWJjNjM4NGUyMDRiYjI5YjFkMTA5MjY1
OTFhZThjZGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTI5ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XUFycmF5IG9mIENvb2tpZXMgaW4gSFRUUCByZXF1ZXN0IGhlYWRlciBhcmUgbm90IGluIG9y
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVTb3J0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZU1hbmFnZXI6OmFkZENvb2tpZVRvTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFj
a2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmFkZE9yUmVwbGFjZUNv
b2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OnJlbW92ZUNvb2tpZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpyZW1vdmVDb29raWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29va2llTWFwOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZU1hcDo6dXBkYXRlT2xkZXN0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1h
cDo6ZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmNvdW50KToK
KyAgICAgICAgKENvb2tpZU1hcCk6CisKIDIwMTItMDItMjcgIEFkYW0gS2xlaW4gIDxhZGFta0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWx3YXlzIG5vdGlmeSBzdWJ0cmVlIG9mIHJlbW92YWwg
aW4gQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGQ3OTM4MGZkOWJj
OTdjOWI5MzE4YjViZDRiMjFiYmUzZjFlODUyNWUuLjc2MDQ2ZjM2MGRiMjE2YTA1YzdiZTAxMTY1
M2ZkODE1MmEzODZlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIENvb2tpZU1hbmFn
ZXI6On5Db29raWVNYW5hZ2VyKCkKIHN0YXRpYyBib29sIGNvb2tpZVNvcnRlcihQYXJzZWRDb29r
aWUqIGEsIFBhcnNlZENvb2tpZSogYikKIHsKICAgICBpZiAoYS0+cGF0aCgpLmxlbmd0aCgpID09
IGItPnBhdGgoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGEtPmNyZWF0aW9uVGltZSgpIDw9
IGItPmNyZWF0aW9uVGltZSgpOworICAgICAgICByZXR1cm4gYS0+Y3JlYXRpb25UaW1lKCkgPCBi
LT5jcmVhdGlvblRpbWUoKTsKICAgICByZXR1cm4gYS0+cGF0aCgpLmxlbmd0aCgpID4gYi0+cGF0
aCgpLmxlbmd0aCgpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBDb29raWVNYW5hZ2Vy
OjpnZXRSYXdDb29raWVzKFZlY3RvcjxQYXJzZWRDb29raWUqPiAmc3RhY2tPZkNvb2tpZXMsIGNv
bnN0IEsKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0ZDo6c29ydChzdGFja09mQ29va2llcy5i
ZWdpbigpLCBzdGFja09mQ29va2llcy5lbmQoKSwgY29va2llU29ydGVyKTsKKyAgICBzdGQ6OnN0
YWJsZV9zb3J0KHN0YWNrT2ZDb29raWVzLmJlZ2luKCksIHN0YWNrT2ZDb29raWVzLmVuZCgpLCBj
b29raWVTb3J0ZXIpOwogfQogCiB2b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUFsbENvb2tpZXMo
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBiYWNraW5nU3RvcmVSZW1vdmFsKQpAQCAtMzcwLDMy
ICszNzAsNTkgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKFBhcnNl
ZENvb2tpZSogY2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3QKICAgICAgICAgaWYgKHBvc3RUb0Jh
Y2tpbmdTdG9yZSA9PSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSkKICAgICAgICAgICAgIG1fY29v
a2llQmFja2luZ1N0b3JlLT5yZW1vdmUoY2FuZGlkYXRlQ29va2llKTsKICAgICAgICAgZWxzZSBp
ZiAoY3VyTWFwKSB7Ci0gICAgICAgICAgICBib29sIGNvb2tpZUFscmVhZHlFeGlzdHMgPSBjdXJN
YXAtPmV4aXN0c0Nvb2tpZShjYW5kaWRhdGVDb29raWUpOwotICAgICAgICAgICAgaWYgKGNvb2tp
ZUFscmVhZHlFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFn
ZXIgLSBleHBpcmVkIGNvb2tpZSBleGlzdHMgaW4gbWVtb3J5Iik7Ci0gICAgICAgICAgICAgICAg
UGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29raWUoY2FuZGlkYXRlQ29v
a2llKTsKLSAgICAgICAgICAgICAgICAvLyBDb29raWUgaXMgdXNlbGVzcywgUmVtb3ZlIHRoZSBj
b29raWUgZnJvbSB0aGUgYmFja2luZ3N0b3JlIGlmIGl0IGV4aXN0cwotICAgICAgICAgICAgICAg
IC8vIEJhY2t1cCBjaGVjayBmb3IgQmFja2luZ1N0b3JlQ29va2llRW50cnkgaW5jYXNlIHNvbWVv
bmUgaW5jb3JyZWN0bHkgdXNlcyB0aGlzIGVudW0KLSAgICAgICAgICAgICAgICBpZiAocG9zdFRv
QmFja2luZ1N0b3JlICE9IEJhY2tpbmdTdG9yZUNvb2tpZUVudHJ5ICYmICFleHBpcmVkLT5pc1Nl
c3Npb24oKSkgewotICAgICAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIg
LSBleHBpcmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9tIGRiIik7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmUoZXhwaXJlZCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOworICAgICAg
ICAgICAgLy8gUmVtb3ZlQ29va2llIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGNvb2tpZSBkb2Vzbid0
IGV4aXN0LgorICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1v
dmVDb29raWUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIC8vIENvb2tpZSBpcyB1c2Vs
ZXNzLCBSZW1vdmUgdGhlIGNvb2tpZSBmcm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQgZXhpc3Rz
LgorICAgICAgICAgICAgLy8gQmFja3VwIGNoZWNrIGZvciBCYWNraW5nU3RvcmVDb29raWVFbnRy
eSBpbmNhc2Ugc29tZW9uZSBpbmNvcnJlY3RseSB1c2VzIHRoaXMgZW51bS4KKyAgICAgICAgICAg
IGlmIChleHBpcmVkICYmIHBvc3RUb0JhY2tpbmdTdG9yZSAhPSBCYWNraW5nU3RvcmVDb29raWVF
bnRyeSAmJiAhZXhwaXJlZC0+aXNTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAgICBDb29raWVM
b2coIkNvb2tpZU1hbmFnZXIgLSBleHBpcmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGlu
ZyBmcm9tIGRiIik7CisgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92
ZShleHBpcmVkKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOwor
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZGVsZXRlIGNhbmRpZGF0ZUNvb2tpZTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoY3VyTWFwKTsKLSAgICAgICAgYm9vbCBjb29raWVB
bHJlYWR5RXhpc3RzID0gY3VyTWFwLT5leGlzdHNDb29raWUoY2FuZGlkYXRlQ29va2llKTsKLSAg
ICAgICAgaWYgKGNvb2tpZUFscmVhZHlFeGlzdHMpCi0gICAgICAgICAgICB1cGRhdGUoY3VyTWFw
LCBjYW5kaWRhdGVDb29raWUsIHBvc3RUb0JhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENvb2tpZVRvTWFwKGN1ck1hcCwgY2FuZGlkYXRlQ29va2llLCBwb3N0VG9C
YWNraW5nU3RvcmUpOworICAgICAgICBhZGRDb29raWVUb01hcChjdXJNYXAsIGNhbmRpZGF0ZUNv
b2tpZSwgcG9zdFRvQmFja2luZ1N0b3JlKTsKICAgICB9CiB9CiAKIHZvaWQgQ29va2llTWFuYWdl
cjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2Fu
ZGlkYXRlQ29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9y
ZSkKIHsKKyAgICBQYXJzZWRDb29raWUqIHByZXZDb29raWUgPSB0YXJnZXRNYXAtPmFkZE9yUmVw
bGFjZUNvb2tpZShjYW5kaWRhdGVDb29raWUpOworICAgIGlmIChwcmV2Q29va2llKSB7CisKKyAg
ICAgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gdXBkYXRpbmcgbmV3IGNvb2tpZSAtICVz
LlxuIiwgY2FuZGlkYXRlQ29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
ICAgIC8vIEEgY29va2llIHdhcyByZXBsYWNlZCBpbiB0YXJnZXRNYXAuCisgICAgICAgIC8vIElm
IG9sZCBjb29raWUgaXMgbm9uLXNlc3Npb24gYW5kIG5ldyBvbmUgaXMsIHdlIGhhdmUgdG8gZGVs
ZXRlIGl0IGZyb20gYmFja2luZ3N0b3JlCisgICAgICAgIC8vIElmIG5ldyBjb29raWUgaXMgbm9u
LXNlc3Npb24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRvIGJhY2tpbmdzdG9y
ZQorICAgICAgICAvLyBJZiBib3RoIHNlc3Npb25zIGFyZSBub24tc2Vzc2lvbiwgdGhlbiB3ZSB1
cGRhdGUgaXQgaW4gdGhlIGJhY2tpbmdzdG9yZQorICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9
IGNhbmRpZGF0ZUNvb2tpZS0+aXNTZXNzaW9uKCk7CisgICAgICAgIGJvb2wgb2xkSXNTZXNzaW9u
ID0gcHJldkNvb2tpZS0+aXNTZXNzaW9uKCk7CisKKyAgICAgICAgaWYgKHBvc3RUb0JhY2tpbmdT
dG9yZSA9PSBSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBpZiAoIW5ld0lz
U2Vzc2lvbiAmJiAhb2xkSXNTZXNzaW9uKQorICAgICAgICAgICAgICAgIG1fY29va2llQmFja2lu
Z1N0b3JlLT51cGRhdGUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5l
d0lzU2Vzc2lvbiAmJiAhb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTXVzdCBt
YW51YWxseSBkZWNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBub3QgY291bnRlZCB3
aGVuCisgICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVW
ZWN0b3IuCisgICAgICAgICAgICAgICAgcmVtb3ZlZENvb2tpZSgpOworICAgICAgICAgICAgICAg
IG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmUocHJldkNvb2tpZSk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFuZXdJc1Nlc3Npb24gJiYgb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAg
ICAgLy8gTXVzdCBtYW51YWxseSBpbmNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBu
b3QgY291bnRlZCB3aGVuCisgICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgYWRkZWQg
aW4gY29va2llVmVjdG9yLgorICAgICAgICAgICAgICAgIGFkZGVkQ29va2llKCk7CisgICAgICAg
ICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPmluc2VydChjYW5kaWRhdGVDb29raWUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBwcmV2Q29va2llOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gYWRk
aW5nIG5ldyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0ZUNvb2tpZS0+dG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKwogICAgIFBhcnNlZENvb2tpZSogb2xkZXN0Q29va2llID0gMDsKICAgICAv
LyBDaGVjayBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIHRoZSBwZXIgY29va2llIGRvbWFpbiBsaW1p
dC4KICAgICAvLyBJZiB0aGF0IGlzIG5vdCB0cnVlLCB3ZSBjaGVjayBpZiB0aGUgZ2xvYmFsIGxp
bWl0IGhhcyBiZWVuIHJlYWNoZWQgaWYgYmFja2luZ3N0b3JlIG1vZGUgaXMgb24KQEAgLTQwOCwx
OCArNDM1LDE0IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFw
KiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRlCiAgICAgLy8gICAgdGhlbiBpdCBt
ZWFucyB0aGUgZ2xvYmFsIGNvdW50IHdpbGwgbmV2ZXIgZXhjZWVkIHRoZSBsaW1pdAogCiAgICAg
Q29va2llTGltaXRMb2coIkNvb2tpZU1hbmFnZXIgLSBsb2NhbCBjb3VudDogJWQgIGdsb2JhbCBj
b3VudDogJWQiLCB0YXJnZXRNYXAtPmNvdW50KCksIG1fY291bnQpOwotICAgIGlmICh0YXJnZXRN
YXAtPmNvdW50KCkgPj0gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKKyAgICBpZiAodGFyZ2V0
TWFwLT5jb3VudCgpID4gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKICAgICAgICAgQ29va2ll
TG9nKCJDb29raWVNYW5hZ2VyIC0gZGVsZXRpbmcgb2xkZXN0IGNvb2tpZSBmcm9tIHRoaXMgbWFw
IGR1ZSB0byBkb21haW4gY291bnQuXG4iKTsKICAgICAgICAgb2xkZXN0Q29va2llID0gdGFyZ2V0
TWFwLT5yZW1vdmVPbGRlc3RDb29raWUoKTsKLSAgICB9IGVsc2UgaWYgKG1fY291bnQgPj0gc19n
bG9iYWxNYXhDb29raWVDb3VudCAmJiAocG9zdFRvQmFja2luZ1N0b3JlICE9IERvTm90UmVtb3Zl
RnJvbUJhY2tpbmdTdG9yZSkpIHsKKyAgICB9IGVsc2UgaWYgKG1fY291bnQgPiBzX2dsb2JhbE1h
eENvb2tpZUNvdW50ICYmIChwb3N0VG9CYWNraW5nU3RvcmUgIT0gRG9Ob3RSZW1vdmVGcm9tQmFj
a2luZ1N0b3JlKSkgewogICAgICAgICBDb29raWVMaW1pdExvZygiQ29va2llTWFuYWdlciAtIEds
b2JhbCBsaW1pdCByZWFjaGVkLCBpbml0aWF0ZSBjb29raWUgbGltaXQgY2xlYW4gdXAuIik7CiAg
ICAgICAgIGluaXRpYXRlQ29va2llTGltaXRDbGVhblVwKCk7CiAgICAgfQogCi0gICAgQ29va2ll
TG9nKCJDb29raWVNYW5hZ2VyIC0gYWRkaW5nIG5ldyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0
ZUNvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIHRhcmdldE1hcC0+YWRk
Q29va2llKGNhbmRpZGF0ZUNvb2tpZSk7Ci0KICAgICAvLyBPbmx5IGFkZCBub24gc2Vzc2lvbiBj
b29raWUgdG8gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9yZSA9
PSBSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIGlmIChvbGRlc3RDb29raWUgJiYg
IW9sZGVzdENvb2tpZS0+aXNTZXNzaW9uKCkpIHsKQEAgLTQzMywzOCArNDU2LDYgQEAgdm9pZCBD
b29raWVNYW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFyc2Vk
Q29va2llKiBjYW5kaWRhdGUKICAgICAgICAgZGVsZXRlIG9sZGVzdENvb2tpZTsKIH0KIAotdm9p
ZCBDb29raWVNYW5hZ2VyOjp1cGRhdGUoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tp
ZSogbmV3Q29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9y
ZSkKLXsKLSAgICAvLyBJZiBvbGQgY29va2llIGlzIG5vbi1zZXNzaW9uIGFuZCBuZXcgb25lIGlz
LCB3ZSBoYXZlIHRvIGRlbGV0ZSBpdCBmcm9tIGJhY2tpbmdzdG9yZQotICAgIC8vIElmIG5ldyBj
b29raWUgaXMgbm9uLXNlc3Npb24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRv
IGJhY2tpbmdzdG9yZQotICAgIC8vIElmIGJvdGggc2Vzc2lvbnMgYXJlIG5vbi1zZXNzaW9uLCB0
aGVuIHdlIHVwZGF0ZSBpdCBpbiB0aGUgYmFja2luZ3N0b3JlCi0KLSAgICBDb29raWVMb2coIkNv
b2tpZU1hbmFnZXIgLSB1cGRhdGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBuZXdDb29raWUtPnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBQYXJzZWRDb29raWUqIG9sZENvb2tpZSA9
IHRhcmdldE1hcC0+dXBkYXRlQ29va2llKG5ld0Nvb2tpZSk7Ci0KLSAgICBBU1NFUlQob2xkQ29v
a2llKTsKLQotICAgIGlmIChwb3N0VG9CYWNraW5nU3RvcmUgPT0gUmVtb3ZlRnJvbUJhY2tpbmdT
dG9yZSkgewotICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9IG5ld0Nvb2tpZS0+aXNTZXNzaW9u
KCk7Ci0gICAgICAgIGJvb2wgb2xkSXNTZXNzaW9uID0gb2xkQ29va2llLT5pc1Nlc3Npb24oKTsK
LSAgICAgICAgaWYgKCFuZXdJc1Nlc3Npb24gJiYgIW9sZElzU2Vzc2lvbikKLSAgICAgICAgICAg
IG1fY29va2llQmFja2luZ1N0b3JlLT51cGRhdGUobmV3Q29va2llKTsKLSAgICAgICAgZWxzZSBp
ZiAobmV3SXNTZXNzaW9uICYmICFvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3Qg
bWFudWFsbHkgZGVjcmVhc2UgdGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQg
d2hlbgotICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVNYXAu
Ci0gICAgICAgICAgICByZW1vdmVkQ29va2llKCk7Ci0gICAgICAgICAgICBtX2Nvb2tpZUJhY2tp
bmdTdG9yZS0+cmVtb3ZlKG9sZENvb2tpZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW5ld0lzU2Vz
c2lvbiAmJiBvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3QgbWFudWFsbHkgaW5j
cmVhc2UgdGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQgd2hlbgotICAgICAg
ICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgYWRkZWQgaW4gY29va2llTWFwLgotICAgICAgICAgICAg
YWRkZWRDb29raWUoKTsKLSAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5pbnNlcnQo
bmV3Q29va2llKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBkZWxldGUgb2xkQ29va2llOwotfQot
CiB2b2lkIENvb2tpZU1hbmFnZXI6OmdldEJhY2tpbmdTdG9yZUNvb2tpZXMoKQogewogICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQganVzdCBhZnRlciBoYXZpbmcgY3JlYXRlZCB0
aGUgY29va2llTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0Nvb2tpZU1hbmFnZXIuaAppbmRleCBiOTdiOWY5NjJkYzk1ZDU2MzJhMzg4Y2QzOTEyNzUy
MzQ1NmQ5NWZhLi5iMmFjNDM5ZDQwNDNjZmViOTZhY2JkNzMyNTFiNDJlMWIyMjcyMWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIu
aApAQCAtMTIwLDggKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlamVjdEZv
clNlY3VyaXR5UmVhc29uKGNvbnN0IFBhcnNlZENvb2tpZSosIGNvbnN0IEtVUkwmKTsKIAotICAg
IHZvaWQgYWRkQ29va2llVG9NYXAoQ29va2llTWFwKiwgUGFyc2VkQ29va2llKiwgQmFja2luZ1N0
b3JlUmVtb3ZhbFBvbGljeSk7Ci0gICAgdm9pZCB1cGRhdGUoQ29va2llTWFwKiwgUGFyc2VkQ29v
a2llKiwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7CisgICAgdm9pZCBhZGRDb29raWVUb01h
cChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJh
Y2tpbmdTdG9yZVJlbW92YWxQb2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlKTsKIAogICAgIENvb2tp
ZU1hcCogZmluZE9yQ3JlYXRlQ29va2llTWFwKENvb2tpZU1hcCogcHJvdG9jb2xNYXAsIGNvbnN0
IFN0cmluZyYgZG9tYWluLCBib29sIGZpbmRPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCmluZGV4IDRjNmQ1NDFhZGRlZmQwYWEy
MjIyYjFjNjBlMmQ2N2Q4MWEyZTIxMjIuLjU5YmJmOTRmNmJmNGQwOGUzNTNiYjJiOWZhZjQyMWUx
MjRmOGY2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZU1hcC5jcHAKQEAgLTU0LDQzICs1NCw1MCBAQCBDb29raWVNYXA6On5Db29raWVNYXAoKQog
ICAgIGRlbGV0ZUFsbENvb2tpZXNBbmREb21haW5zKCk7CiB9CiAKLWJvb2wgQ29va2llTWFwOjpl
eGlzdHNDb29raWUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpIGNvbnN0CitQYXJzZWRDb29r
aWUqIENvb2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSogY29va2llKQog
ewotICAgIFN0cmluZyBrZXkgPSBjb29raWUtPm5hbWUoKSArIGNvb2tpZS0+cGF0aCgpOwotICAg
IHJldHVybiBtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpOwotfQotCi12b2lkIENvb2tpZU1hcDo6
YWRkQ29va2llKFBhcnNlZENvb2tpZSogY29va2llKQotewotICAgIFN0cmluZyBrZXkgPSBjb29r
aWUtPm5hbWUoKSArIGNvb2tpZS0+cGF0aCgpOwotCiAgICAgQ29va2llTG9nKCJDb29raWVNYXAg
LSBBdHRlbXB0aW5nIHRvIGFkZCBjb29raWUgLSAlcyIsIGNvb2tpZS0+bmFtZSgpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgQVNTRVJUKCFtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpKTsKLSAgICBt
X2Nvb2tpZU1hcC5hZGQoa2V5LCBjb29raWUpOworICAgIFBhcnNlZENvb2tpZSogcHJldkNvb2tp
ZSA9IDA7CisgICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+OjppdGVyYXRvciBpdDsKKyAgICBmb3Ig
KGl0ID0gbV9jb29raWVWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbV9jb29raWVWZWN0b3IuZW5kKCk7
IGl0KyspIHsKKyAgICAgICAgaWYgKCgqaXQpLT5uYW1lKCkgPT0gY29va2llLT5uYW1lKCkgJiYg
KCppdCktPnBhdGgoKSA9PSBjb29raWUtPnBhdGgoKSkgeworICAgICAgICAgICAgcHJldkNvb2tp
ZSA9ICppdDsKKyAgICAgICAgICAgICppdCA9IGNvb2tpZTsKKyAgICAgICAgICAgIGlmIChwcmV2
Q29va2llID09IG1fb2xkZXN0Q29va2llKQorICAgICAgICAgICAgICAgIHVwZGF0ZU9sZGVzdENv
b2tpZSgpOworICAgICAgICAgICAgcmV0dXJuIHByZXZDb29raWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBtX2Nvb2tpZVZlY3Rvci5hcHBlbmQoY29va2llKTsKICAgICBpZiAoIWNvb2tpZS0+
aXNTZXNzaW9uKCkpCiAgICAgICAgIGNvb2tpZU1hbmFnZXIoKS5hZGRlZENvb2tpZSgpOwogICAg
IGlmICghbV9vbGRlc3RDb29raWUgfHwgbV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4g
Y29va2llLT5sYXN0QWNjZXNzZWQoKSkKICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBjb29raWU7
CisgICAgcmV0dXJuIDA7CiB9CiAKLVBhcnNlZENvb2tpZSogQ29va2llTWFwOjp1cGRhdGVDb29r
aWUoUGFyc2VkQ29va2llKiBuZXdDb29raWUpCitQYXJzZWRDb29raWUqIENvb2tpZU1hcDo6cmVt
b3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24pCiB7Ci0gICAgU3RyaW5nIGtleSA9IG5ld0Nv
b2tpZS0+bmFtZSgpICsgbmV3Q29va2llLT5wYXRoKCk7Ci0gICAgUGFyc2VkQ29va2llKiBvbGRD
b29raWUgPSBtX2Nvb2tpZU1hcC50YWtlKGtleSk7Ci0gICAgQVNTRVJUKG9sZENvb2tpZSk7Ci0g
ICAgbV9jb29raWVNYXAuYWRkKGtleSwgbmV3Q29va2llKTsKLSAgICBpZiAob2xkQ29va2llID09
IG1fb2xkZXN0Q29va2llKQotICAgICAgICB1cGRhdGVPbGRlc3RDb29raWUoKTsKLSAgICByZXR1
cm4gb2xkQ29va2llOworICAgIEFTU0VSVChwb3NpdGlvbiA+PSAwKTsKKyAgICBQYXJzZWRDb29r
aWUqIHJlbW92ZWRjb29raWUgPSBtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl07CisgICAgbV9jb29r
aWVWZWN0b3IucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICByZXR1cm4gcmVtb3ZlZGNvb2tpZTsKIH0K
IAogUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZUNvb2tpZShjb25zdCBQYXJzZWRDb29r
aWUqIGNvb2tpZSkKIHsKLSAgICAvLyBGaW5kIGEgcHJldmlvdXMgZW50cnkgZm9yIGRlbGV0aW9u
Ci0gICAgU3RyaW5nIGtleSA9IGNvb2tpZS0+bmFtZSgpICsgY29va2llLT5wYXRoKCk7Ci0gICAg
UGFyc2VkQ29va2llKiBwcmV2Q29va2llID0gbV9jb29raWVNYXAudGFrZShrZXkpOwotCisgICAg
Ly8gRmluZCBhIHByZXZpb3VzIGVudHJ5IGZvciBkZWxldGlvbi4KKyAgICBDb29raWVMb2coIkNv
b2tpZU1hcCAtIHJlbW92ZUNvb2tpZTolcyIsIGNvb2tpZS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkp
OworICAgIFBhcnNlZENvb2tpZSogcHJldkNvb2tpZSA9IDA7CisgICAgaW50IGNvb2tpZUNvdW50
ID0gbV9jb29raWVWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAoaW50IHBvc2l0aW9uID0gMDsgcG9z
aXRpb24gPCBjb29raWVDb3VudDsgcG9zaXRpb24rKykgeworICAgICAgICBpZiAobV9jb29raWVW
ZWN0b3JbcG9zaXRpb25dLT5uYW1lKCkgPT0gY29va2llLT5uYW1lKCkgJiYgbV9jb29raWVWZWN0
b3JbcG9zaXRpb25dLT5wYXRoKCkgPT0gY29va2llLT5wYXRoKCkpIHsKKyAgICAgICAgICAgIHBy
ZXZDb29raWUgPSByZW1vdmVDb29raWVBdEluZGV4KHBvc2l0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQogICAgIGlmICghcHJldkNvb2tpZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTEyNiwxOSArMTMzLDIyIEBAIHZvaWQgQ29va2llTWFwOjphZGRTdWJkb21h
aW5NYXAoY29uc3QgU3RyaW5nJiBzdWJkb21haW4sIENvb2tpZU1hcCogbmV3RG9tYWluKQogCiB2
b2lkIENvb2tpZU1hcDo6Z2V0QWxsQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNr
T2ZDb29raWVzKQogewotICAgIENvb2tpZUxvZygiQ29va2llTWFwIC0gQXR0ZW1wdGluZyB0byBj
b3B5IE1hcDolcyBjb29raWVzIHdpdGggJWQgY29va2llcyBpbnRvIHZlY3RvcnMiLCBtX25hbWUu
dXRmOCgpLmRhdGEoKSwgbV9jb29raWVNYXAuc2l6ZSgpKTsKKyAgICBDb29raWVMb2coIkNvb2tp
ZU1hcCAtIEF0dGVtcHRpbmcgdG8gY29weSBNYXA6JXMgY29va2llcyB3aXRoICVkIGNvb2tpZXMg
aW50byB2ZWN0b3JzIiwgbV9uYW1lLnV0ZjgoKS5kYXRhKCksIG1fY29va2llVmVjdG9yLnNpemUo
KSk7CisKKyAgICBzdGFja09mQ29va2llcy0+cmVzZXJ2ZUNhcGFjaXR5KHN0YWNrT2ZDb29raWVz
LT5zaXplKCkgKyBtX2Nvb2tpZVZlY3Rvci5zaXplKCkpOwogCi0gICAgVmVjdG9yPFBhcnNlZENv
b2tpZSo+IG5ld0Nvb2tpZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fY29va2llTWFwLCBu
ZXdDb29raWVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0Nvb2tpZXMuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgUGFyc2VkQ29va2llKiBuZXdDb29raWUgPSBuZXdDb29raWVzW2ld
OworICAgIGludCBwb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgbV9jb29raWVW
ZWN0b3Iuc2l6ZSgpKSB7CisgICAgICAgIFBhcnNlZENvb2tpZSogbmV3Q29va2llID0gbV9jb29r
aWVWZWN0b3JbcG9zaXRpb25dOwogICAgICAgICBpZiAobmV3Q29va2llLT5oYXNFeHBpcmVkKCkp
IHsKICAgICAgICAgICAgIC8vIE5vdGljZSB0aGF0IHdlIGRvbid0IGRlbGV0ZSBmcm9tIGJhY2tp
bmdzdG9yZS4gVGhlc2UgZXhwaXJlZCBjb29raWVzIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGRl
bGV0ZWQgd2hlbiBtYW5hZ2VyIGxvYWRzIHRoZSBiYWNraW5nc3RvcmUgYWdhaW4uCi0gICAgICAg
ICAgICBQYXJzZWRDb29raWUqIGV4cGlyZWQgPSByZW1vdmVDb29raWUobmV3Q29va2llKTsKKyAg
ICAgICAgICAgIFBhcnNlZENvb2tpZSogZXhwaXJlZCA9IHJlbW92ZUNvb2tpZUF0SW5kZXgocG9z
aXRpb24pOwogICAgICAgICAgICAgZGVsZXRlIGV4cGlyZWQ7Ci0gICAgICAgIH0gZWxzZQorICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RhY2tPZkNvb2tpZXMtPmFwcGVuZChuZXdDb29r
aWUpOworICAgICAgICAgICAgcG9zaXRpb24rKzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIENv
b2tpZUxvZygiQ29va2llTWFwIC0gc3RhY2sgb2YgY29va2llcyBub3cgaGF2ZSAlZCBjb29raWVz
IGluIGl0IiwgKCpzdGFja09mQ29va2llcykuc2l6ZSgpKTsKQEAgLTE3NywxNSArMTg3LDE2IEBA
IFBhcnNlZENvb2tpZSogQ29va2llTWFwOjpyZW1vdmVPbGRlc3RDb29raWUoKQogCiB2b2lkIENv
b2tpZU1hcDo6dXBkYXRlT2xkZXN0Q29va2llKCkKIHsKLSAgICBpZiAoIW1fY29va2llTWFwLnNp
emUoKSkKKyAgICBzaXplX3Qgc2l6ZSA9IG1fY29va2llVmVjdG9yLnNpemUoKTsKKyAgICBpZiAo
IXNpemUpIHsKICAgICAgICAgbV9vbGRlc3RDb29raWUgPSAwOwotICAgIGVsc2UgewotICAgICAg
ICBIYXNoTWFwPFN0cmluZywgUGFyc2VkQ29va2llKj46Oml0ZXJhdG9yIGl0ID0gbV9jb29raWVN
YXAuYmVnaW4oKTsKLSAgICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+c2Vjb25kOwotICAgICAg
ICArK2l0OwotICAgICAgICBmb3IgKDsgaXQgIT0gbV9jb29raWVNYXAuZW5kKCk7ICsraXQpCi0g
ICAgICAgICAgICBpZiAobV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gaXQtPnNlY29u
ZC0+bGFzdEFjY2Vzc2VkKCkpCi0gICAgICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+
c2Vjb25kOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9vbGRlc3RDb29raWUgPSBt
X2Nvb2tpZVZlY3RvclswXTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICBpZiAobV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gbV9jb29raWVWZWN0
b3JbaV0tPmxhc3RBY2Nlc3NlZCgpKQorICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBtX2Nv
b2tpZVZlY3RvcltpXTsKICAgICB9CiB9CiAKQEAgLTE5Myw4ICsyMDQsOCBAQCB2b2lkIENvb2tp
ZU1hcDo6ZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKQogewogICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX3N1YmRvbWFpbnMpOwogICAgIG1fc3ViZG9tYWlucy5jbGVhcigpOwotICAgIGRlbGV0ZUFs
bFZhbHVlcyhtX2Nvb2tpZU1hcCk7Ci0gICAgbV9jb29raWVNYXAuY2xlYXIoKTsKKyAgICBkZWxl
dGVBbGxWYWx1ZXMobV9jb29raWVWZWN0b3IpOworICAgIG1fY29va2llVmVjdG9yLmNsZWFyKCk7
CiAKICAgICBtX29sZGVzdENvb2tpZSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYXAuaAppbmRleCA3M2JhMTNmYWNjMTRhNTE1MmVhMTM5ODg4
ZTQ0NDNhOGVhMWQ3ZTA2Li5iYWEzMzA4NmE0ODlkOTExNTY3ZjUyNTI4YmFmNGI5OGFjZTRiOGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgK
QEAgLTUxLDE3ICs1MSwxNCBAQCBwdWJsaWM6CiAgICAgQ29va2llTWFwKGNvbnN0IFN0cmluZyYg
bmFtZSA9ICIiKTsKICAgICB+Q29va2llTWFwKCk7CiAKLSAgICB1bnNpZ25lZCBpbnQgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZU1hcC5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBpbnQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7IH0KICAgICBjb25z
dCBTdHJpbmcmIGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZvaWQg
YWRkQ29va2llKFBhcnNlZENvb2tpZSopOwotCiAgICAgLy8gUmV0dXJuaW5nIHRoZSBvcmlnaW5h
bCBjb29raWUgb2JqZWN0IHNvIG1hbmFnZXIgY2FuIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHVw
ZGF0ZXMgaW4gdGhlIGRhdGFiYXNlIHF1ZXVlLgotICAgIFBhcnNlZENvb2tpZSogdXBkYXRlQ29v
a2llKFBhcnNlZENvb2tpZSopOworICAgIFBhcnNlZENvb2tpZSogYWRkT3JSZXBsYWNlQ29va2ll
KFBhcnNlZENvb2tpZSopOwogCiAgICAgLy8gTmVlZCB0byByZXR1cm4gdGhlIHJlZmVyZW5jZSB0
byB0aGUgcmVtb3ZlZCBjb29raWUgc28gbWFuYWdlciBjYW4gZGVhbCB3aXRoIGl0IChnYXJiYWdl
IGNvbGxlY3QpLgogICAgIFBhcnNlZENvb2tpZSogcmVtb3ZlQ29va2llKGNvbnN0IFBhcnNlZENv
b2tpZSopOwotICAgIGJvb2wgZXhpc3RzQ29va2llKGNvbnN0IFBhcnNlZENvb2tpZSopIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJucyBhIG1hcCB3aXRoIHRoYXQgZ2l2ZW4gc3ViZG9tYWluLgogICAg
IENvb2tpZU1hcCogZ2V0U3ViZG9tYWluTWFwKGNvbnN0IFN0cmluZyYpOwpAQCAtNzQsMTEgKzcx
LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT2xkZXN0Q29va2llKCk7
CisgICAgUGFyc2VkQ29va2llKiByZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbik7CiAK
LSAgICAvLyBUaGUga2V5IGlzIHRoZSB0dXBsZSAobmFtZSwgcGF0aCkuCi0gICAgLy8gVGhlIHNw
ZWMgYXNrcyB0byBoYXZlIGFsc28gZG9tYWluLCB3aGljaCBpcyBpbXBsaWVkIGJ5IGNob29zaW5n
IHRoZSBDb29raWVNYXAgcmVsZXZhbnQgdG8gdGhlIGRvbWFpbi4KLSAgICBIYXNoTWFwPFN0cmlu
ZywgUGFyc2VkQ29va2llKj4gbV9jb29raWVNYXA7Ci0KKyAgICBWZWN0b3I8UGFyc2VkQ29va2ll
Kj4gbV9jb29raWVWZWN0b3I7CiAgICAgLy8gVGhlIGtleSBpcyBhIHN1YnNlY3Rpb24gb2YgdGhl
IGRvbWFpbi4KICAgICAvLyBleDogaWYgaW5zZXJ0aW5nIGFjY291bnRzLmdvb2dsZS5jb20gJiB0
aGlzIGNvb2tpZW1hcCBpcyAiY29tIiwgdGhpcyBzdWJkb21haW4gbWFwIHdpbGwgY29udGFpbiAi
Z29vZ2xlIgogICAgIC8vIHRoZSAiZ29vZ2xlIiBjb29raWVtYXAgd2lsbCBjb250YWluICJhY2Nv
dW50cyIgaW4gaXRzIHN1YmRvbWFpbiBtYXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOThjYTdiNDI0ODQ1ZDU0MGEzY2Fl
MmI1Nzg1ODhhMTkxNWYxZmI5OS4uZGY2MzFiNzA5YzhjNTdjYmY0ZTYyZjgzODZmNjkxYjc3MGQ0
ZjkxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTI5ICBKYXNvbiBMaXUgIDxqYXNv
bi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XUFycmF5IG9m
IENvb2tpZXMgaW4gSFRUUCByZXF1ZXN0IGhlYWRlciBhcmUgbm90IGluIG9yZGVyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4NzAKKworICAgICAg
ICBTdGQ6OnNvcnQgYW5kIEhhc2hNYXAgYXJlIG5vdCBzdGFibGUuIFNvIGNvb2tpZXMgd2l0aCB0
aGUgc2FtZSBjcmVhdGluZworICAgICAgICB0aW1lIG1heSBiZSBzZW50IGRpc29yZGVyLgorICAg
ICAgICBDaGFuZ2Ugc3RkOjpzb3J0IHdpdGggc3RkOjpzdGFibGUtc29ydC4KKyAgICAgICAgV2Ug
ZG9uJ3QgbmVlZCB1c2luZyBIYXNoTWFwIHRvIHNhdmUgc28gZmV3IGNvb2tpZXMgZm9yIG9uZSBk
b21haW4uCisgICAgICAgIEl0IGlzIGEgd2FzdCBvZiB0aW1lIHRvIGNyZWF0ZSBIYXNoTWFwLCB0
b28uCisgICAgICAgIFNvIGNoYW5nZSBpdCB3aXRoIHZlY3Rvci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9yZXNv
dXJjZXMvc2V0QXJyYXljb29raWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMtcmVzdWx0LnBocDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tp
ZXMucGhwOiBBZGRlZC4KKwogMjAxMi0wMi0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTI0OTkzPiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzI1CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5
Y29va2llcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NThjMjc5YTcxZjhhNTljOTYzYTll
N2QxNmJkYmFjMTAzZDVkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKK1RoaXMgdGVzdCBjYXNlIHRvIHNldCBhIEFycmF5IG9mIENvb2tpZSBzaXplIG9m
IDMgYW5kIGNoZWNrIGlmIGl0J3MgYmVlbiBjb3JyZWN0bHkgc2V0IGFuZCBpbiBvcmRlci4KK0lm
IHRoZSBUZXN0IGNhc2Ugd2FzIHN1Y2Nlc3NmdWwsIFRoZW4gaXQgc2hvdWxkIHByaW50IFBhc3Nl
ZCBiZWxvdyEhCisKKworUGFzc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1yZXN1bHQucGhwIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMtcmVzdWx0LnBo
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZTRhNmE1NDk2NzkyYzFmZmMzYTc3NmU2MDNhZDNmN2I5ZTgwY2IyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNl
cy9zZXRBcnJheWNvb2tpZXMtcmVzdWx0LnBocApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4NCis8
aGVhZD4NCis8c2NyaXB0Pg0KKyAgICBmdW5jdGlvbiBydW4oKXsNCisgICAgICAgIC8vIFJlYWRp
bmcgdGhlIENvb2lrZXMgdXNpbmcgUEhQDQorICAgICAgICB2YXIgY29va2llID0gIjw/cGhwIGlm
IChpc3NldCgkX0NPT0tJRVsnc2V0QXJyYXljb29raWUnXSkpIHsNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfQ09PS0lFWydzZXRBcnJheWNvb2tpZSddIGFzICRu
YW1lID0+ICR2YWx1ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRu
YW1lID0gaHRtbHNwZWNpYWxjaGFycygkbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiRuYW1lIDogJHZhbHVlIjsNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisJCSAgICAgICAgICAgIH0gDQorICAgICAg
ICAgICAgICAgICAgICAgPz4iOw0KKw0KKyAgICAgICAgdmFyIHN0YXR1cyA9ICJGYWlsIjsNCisg
ICAgICAgIGlmIChjb29raWUgPT0gInRocmVlIDogY29va2lldGhyZWV0d28gOiBjb29raWV0d29v
bmUgOiBjb29raWVvbmUiKSB7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiKS5pbm5lckhUTUwgPSAiPGI+UGFzc2VkPC9iPiI7DQorICAgICAgICAgICAgc3RhdHVz
ID0gIlBhc3MiOw0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKS5pbm5lckhUTUwgPSAiPGI+RmFpbGVkPC9iPiI7ICAgIA0KKyAgICB9
DQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkg
b25sb2FkPSJydW4oKSI+DQorPHA+VGhpcyB0ZXN0IGNhc2UgdG8gc2V0IGEgQXJyYXkgb2YgQ29v
a2llIHNpemUgb2YgMyBhbmQgY2hlY2sgaWYgaXQncyBiZWVuIGNvcnJlY3RseSBzZXQgYW5kIGlu
IG9yZGVyLjxiciAvPklmIHRoZSBUZXN0IGNhc2Ugd2FzIHN1Y2Nlc3NmdWwsIFRoZW4gaXQgc2hv
dWxkIHByaW50IFBhc3NlZCBiZWxvdyEhIDwvcD48YnIvPg0KKzxkaXYgaWQ9InRlc3QiPg0KK05v
dCBXb3JraW5nISENCis8L2Rpdj4NCis8L2JvZHk+DQorPC9odG1sPg0KKw0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVz
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXlj
b29raWVzLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTM3ODRjNjgyMDQ5Y2NkNTAyNGNjZTIwZGRlOWM2YWY4
ZDY3NmNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVz
L3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwCkBAIC0wLDAgKzEsOCBAQAorPD9waHAgDQor
Ly8gU2V0dGluZyBBcnJheSBvZiBjb29raWVzDQorc2V0Y29va2llKCJzZXRBcnJheWNvb2tpZVt0
aHJlZV0iLCAiY29va2lldGhyZWUiKTsNCitzZXRjb29raWUoInNldEFycmF5Y29va2llW3R3b10i
LCAiY29va2lldHdvIik7DQorc2V0Y29va2llKCJzZXRBcnJheWNvb2tpZVtvbmVdIiwgImNvb2tp
ZW9uZSIpOw0KK2hlYWRlcignTG9jYXRpb246IHNldEFycmF5Y29va2llcy1yZXN1bHQucGhwJyk7
DQorPz4NCisNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129420</attachid>
            <date>2012-02-29 02:07:56 -0800</date>
            <delta_ts>2012-03-01 00:59:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79870-20120229180754.patch</filename>
            <type>text/plain</type>
            <size>21360</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzOGQ0YTQyZGE5MmNk
ODBhYmMwMjQ4NWM1MTA4YTA1YTBmZDhmMy4uMzExYzdlNjk3NDA0NjY0OWZmMGIxNzZjMTEyZTA1
OWU4MWU2Mzc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTI5ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XUFycmF5IG9mIENvb2tpZXMgaW4gSFRUUCByZXF1ZXN0IGhlYWRlciBhcmUgbm90IGluIG9y
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4
NzAKKworICAgICAgICBTdGQ6OnNvcnQgYW5kIEhhc2hNYXAgYXJlIG5vdCBzdGFibGUuIFNvIGNv
b2tpZXMgd2l0aCB0aGUgc2FtZSBjcmVhdGluZworICAgICAgICB0aW1lIG1heSBiZSBzZW50IGRp
c29yZGVyLgorICAgICAgICBDaGFuZ2Ugc3RkOjpzb3J0IHdpdGggc3RkOjpzdGFibGUtc29ydC4K
KyAgICAgICAgV2UgZG9uJ3QgbmVlZCB1c2luZyBIYXNoTWFwIHRvIHNhdmUgc28gZmV3IGNvb2tp
ZXMgZm9yIG9uZSBkb21haW4uCisgICAgICAgIEl0IGlzIGEgd2FzdCBvZiB0aW1lIHRvIGNyZWF0
ZSBIYXNoTWFwLCB0b28uCisgICAgICAgIFNvIGNoYW5nZSBpdCB3aXRoIHZlY3RvcgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLnBocAorCisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
b2tpZVNvcnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2VyOjpnZXRSYXdDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OmNoZWNrQW5kVHJlYXRDb29r
aWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6YWRkQ29va2llVG9NYXApOgor
ICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1h
cDo6cmVtb3ZlQ29va2llQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OnJl
bW92ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjp1cGRhdGVPbGRlc3RDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpkZWxldGVBbGxDb29raWVzQW5kRG9tYWlucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZU1hcDo6Y291bnQpOgorICAgICAgICAoQ29va2llTWFwKToKKwogMjAxMi0wMi0y
NyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBbHdheXMgbm90
aWZ5IHN1YnRyZWUgb2YgcmVtb3ZhbCBpbiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdl
ci5jcHAKaW5kZXggZDc5MzgwZmQ5YmM5N2M5YjkzMThiNWJkNGIyMWJiZTNmMWU4NTI1ZS4uNzYw
NDZmMzYwZGIyMTZhMDVjN2JlMDExNjUzZmQ4MTUyYTM4NmVhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xMjAs
NyArMTIwLDcgQEAgQ29va2llTWFuYWdlcjo6fkNvb2tpZU1hbmFnZXIoKQogc3RhdGljIGJvb2wg
Y29va2llU29ydGVyKFBhcnNlZENvb2tpZSogYSwgUGFyc2VkQ29va2llKiBiKQogewogICAgIGlm
IChhLT5wYXRoKCkubGVuZ3RoKCkgPT0gYi0+cGF0aCgpLmxlbmd0aCgpKQotICAgICAgICByZXR1
cm4gYS0+Y3JlYXRpb25UaW1lKCkgPD0gYi0+Y3JlYXRpb25UaW1lKCk7CisgICAgICAgIHJldHVy
biBhLT5jcmVhdGlvblRpbWUoKSA8IGItPmNyZWF0aW9uVGltZSgpOwogICAgIHJldHVybiBhLT5w
YXRoKCkubGVuZ3RoKCkgPiBiLT5wYXRoKCkubGVuZ3RoKCk7CiB9CiAKQEAgLTMwMCw3ICszMDAs
NyBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFBhcnNlZENvb2tp
ZSo+ICZzdGFja09mQ29va2llcywgY29uc3QgSwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3Rk
Ojpzb3J0KHN0YWNrT2ZDb29raWVzLmJlZ2luKCksIHN0YWNrT2ZDb29raWVzLmVuZCgpLCBjb29r
aWVTb3J0ZXIpOworICAgIHN0ZDo6c3RhYmxlX3NvcnQoc3RhY2tPZkNvb2tpZXMuYmVnaW4oKSwg
c3RhY2tPZkNvb2tpZXMuZW5kKCksIGNvb2tpZVNvcnRlcik7CiB9CiAKIHZvaWQgQ29va2llTWFu
YWdlcjo6cmVtb3ZlQWxsQ29va2llcyhCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IGJhY2tpbmdT
dG9yZVJlbW92YWwpCkBAIC0zNzAsMzIgKzM3MCw1OSBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OmNo
ZWNrQW5kVHJlYXRDb29raWUoUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdT
dAogICAgICAgICBpZiAocG9zdFRvQmFja2luZ1N0b3JlID09IEJhY2tpbmdTdG9yZUNvb2tpZUVu
dHJ5KQogICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShjYW5kaWRhdGVD
b29raWUpOwogICAgICAgICBlbHNlIGlmIChjdXJNYXApIHsKLSAgICAgICAgICAgIGJvb2wgY29v
a2llQWxyZWFkeUV4aXN0cyA9IGN1ck1hcC0+ZXhpc3RzQ29va2llKGNhbmRpZGF0ZUNvb2tpZSk7
Ci0gICAgICAgICAgICBpZiAoY29va2llQWxyZWFkeUV4aXN0cykgewotICAgICAgICAgICAgICAg
IENvb2tpZUxvZygiQ29va2llTWFuYWdlciAtIGV4cGlyZWQgY29va2llIGV4aXN0cyBpbiBtZW1v
cnkiKTsKLSAgICAgICAgICAgICAgICBQYXJzZWRDb29raWUqIGV4cGlyZWQgPSBjdXJNYXAtPnJl
bW92ZUNvb2tpZShjYW5kaWRhdGVDb29raWUpOwotICAgICAgICAgICAgICAgIC8vIENvb2tpZSBp
cyB1c2VsZXNzLCBSZW1vdmUgdGhlIGNvb2tpZSBmcm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQg
ZXhpc3RzCi0gICAgICAgICAgICAgICAgLy8gQmFja3VwIGNoZWNrIGZvciBCYWNraW5nU3RvcmVD
b29raWVFbnRyeSBpbmNhc2Ugc29tZW9uZSBpbmNvcnJlY3RseSB1c2VzIHRoaXMgZW51bQotICAg
ICAgICAgICAgICAgIGlmIChwb3N0VG9CYWNraW5nU3RvcmUgIT0gQmFja2luZ1N0b3JlQ29va2ll
RW50cnkgJiYgIWV4cGlyZWQtPmlzU2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENv
b2tpZUxvZygiQ29va2llTWFuYWdlciAtIGV4cGlyZWQgY29va2llIGlzIG5vbnNlc3Npb24sIGRl
bGV0aW5nIGZyb20gZGIiKTsKLSAgICAgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3Rv
cmUtPnJlbW92ZShleHBpcmVkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGVsZXRlIGV4cGlyZWQ7CisgICAgICAgICAgICAvLyBSZW1vdmVDb29raWUgd2lsbCByZXR1cm4g
MCBpZiB0aGUgY29va2llIGRvZXNuJ3QgZXhpc3QuCisgICAgICAgICAgICBQYXJzZWRDb29raWUq
IGV4cGlyZWQgPSBjdXJNYXAtPnJlbW92ZUNvb2tpZShjYW5kaWRhdGVDb29raWUpOworICAgICAg
ICAgICAgLy8gQ29va2llIGlzIHVzZWxlc3MsIFJlbW92ZSB0aGUgY29va2llIGZyb20gdGhlIGJh
Y2tpbmdzdG9yZSBpZiBpdCBleGlzdHMuCisgICAgICAgICAgICAvLyBCYWNrdXAgY2hlY2sgZm9y
IEJhY2tpbmdTdG9yZUNvb2tpZUVudHJ5IGluY2FzZSBzb21lb25lIGluY29ycmVjdGx5IHVzZXMg
dGhpcyBlbnVtLgorICAgICAgICAgICAgaWYgKGV4cGlyZWQgJiYgcG9zdFRvQmFja2luZ1N0b3Jl
ICE9IEJhY2tpbmdTdG9yZUNvb2tpZUVudHJ5ICYmICFleHBpcmVkLT5pc1Nlc3Npb24oKSkgewor
ICAgICAgICAgICAgICAgIENvb2tpZUxvZygiQ29va2llTWFuYWdlciAtIGV4cGlyZWQgY29va2ll
IGlzIG5vbnNlc3Npb24sIGRlbGV0aW5nIGZyb20gZGIiKTsKKyAgICAgICAgICAgICAgICBtX2Nv
b2tpZUJhY2tpbmdTdG9yZS0+cmVtb3ZlKGV4cGlyZWQpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGVsZXRlIGV4cGlyZWQ7CisKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkZWxl
dGUgY2FuZGlkYXRlQ29va2llOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJNYXAp
OwotICAgICAgICBib29sIGNvb2tpZUFscmVhZHlFeGlzdHMgPSBjdXJNYXAtPmV4aXN0c0Nvb2tp
ZShjYW5kaWRhdGVDb29raWUpOwotICAgICAgICBpZiAoY29va2llQWxyZWFkeUV4aXN0cykKLSAg
ICAgICAgICAgIHVwZGF0ZShjdXJNYXAsIGNhbmRpZGF0ZUNvb2tpZSwgcG9zdFRvQmFja2luZ1N0
b3JlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ29va2llVG9NYXAoY3VyTWFwLCBj
YW5kaWRhdGVDb29raWUsIHBvc3RUb0JhY2tpbmdTdG9yZSk7CisgICAgICAgIGFkZENvb2tpZVRv
TWFwKGN1ck1hcCwgY2FuZGlkYXRlQ29va2llLCBwb3N0VG9CYWNraW5nU3RvcmUpOwogICAgIH0K
IH0KIAogdm9pZCBDb29raWVNYW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdl
dE1hcCwgUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQ
b2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlKQogeworICAgIFBhcnNlZENvb2tpZSogcHJldkNvb2tp
ZSA9IHRhcmdldE1hcC0+YWRkT3JSZXBsYWNlQ29va2llKGNhbmRpZGF0ZUNvb2tpZSk7CisgICAg
aWYgKHByZXZDb29raWUpIHsKKworICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSB1
cGRhdGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBjYW5kaWRhdGVDb29raWUtPnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgLy8gQSBjb29raWUgd2FzIHJlcGxhY2VkIGluIHRh
cmdldE1hcC4KKyAgICAgICAgLy8gSWYgb2xkIGNvb2tpZSBpcyBub24tc2Vzc2lvbiBhbmQgbmV3
IG9uZSBpcywgd2UgaGF2ZSB0byBkZWxldGUgaXQgZnJvbSBiYWNraW5nc3RvcmUKKyAgICAgICAg
Ly8gSWYgbmV3IGNvb2tpZSBpcyBub24tc2Vzc2lvbiBhbmQgb2xkIG9uZSBpcywgd2UgaGF2ZSB0
byBhZGQgaXQgdG8gYmFja2luZ3N0b3JlCisgICAgICAgIC8vIElmIGJvdGggc2Vzc2lvbnMgYXJl
IG5vbi1zZXNzaW9uLCB0aGVuIHdlIHVwZGF0ZSBpdCBpbiB0aGUgYmFja2luZ3N0b3JlCisgICAg
ICAgIGJvb2wgbmV3SXNTZXNzaW9uID0gY2FuZGlkYXRlQ29va2llLT5pc1Nlc3Npb24oKTsKKyAg
ICAgICAgYm9vbCBvbGRJc1Nlc3Npb24gPSBwcmV2Q29va2llLT5pc1Nlc3Npb24oKTsKKworICAg
ICAgICBpZiAocG9zdFRvQmFja2luZ1N0b3JlID09IFJlbW92ZUZyb21CYWNraW5nU3RvcmUpIHsK
KyAgICAgICAgICAgIGlmICghbmV3SXNTZXNzaW9uICYmICFvbGRJc1Nlc3Npb24pCisgICAgICAg
ICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnVwZGF0ZShjYW5kaWRhdGVDb29raWUpOwor
ICAgICAgICAgICAgZWxzZSBpZiAobmV3SXNTZXNzaW9uICYmICFvbGRJc1Nlc3Npb24pIHsKKyAg
ICAgICAgICAgICAgICAvLyBNdXN0IG1hbnVhbGx5IGRlY3JlYXNlIHRoZSBjb3VudGVyIGJlY2F1
c2UgaXQgd2FzIG5vdCBjb3VudGVkIHdoZW4KKyAgICAgICAgICAgICAgICAvLyB0aGUgY29va2ll
IHdhcyByZW1vdmVkIGluIGNvb2tpZVZlY3Rvci4KKyAgICAgICAgICAgICAgICByZW1vdmVkQ29v
a2llKCk7CisgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShwcmV2
Q29va2llKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5ld0lzU2Vzc2lvbiAmJiBvbGRJc1Nl
c3Npb24pIHsKKyAgICAgICAgICAgICAgICAvLyBNdXN0IG1hbnVhbGx5IGluY3JlYXNlIHRoZSBj
b3VudGVyIGJlY2F1c2UgaXQgd2FzIG5vdCBjb3VudGVkIHdoZW4KKyAgICAgICAgICAgICAgICAv
LyB0aGUgY29va2llIHdhcyBhZGRlZCBpbiBjb29raWVWZWN0b3IuCisgICAgICAgICAgICAgICAg
YWRkZWRDb29raWUoKTsKKyAgICAgICAgICAgICAgICBtX2Nvb2tpZUJhY2tpbmdTdG9yZS0+aW5z
ZXJ0KGNhbmRpZGF0ZUNvb2tpZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZGVsZXRlIHByZXZDb29raWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb29raWVM
b2coIkNvb2tpZU1hbmFnZXIgLSBhZGRpbmcgbmV3IGNvb2tpZSAtICVzLlxuIiwgY2FuZGlkYXRl
Q29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgUGFyc2VkQ29va2llKiBv
bGRlc3RDb29raWUgPSAwOwogICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgbm90IHJlYWNoZWQgdGhl
IHBlciBjb29raWUgZG9tYWluIGxpbWl0LgogICAgIC8vIElmIHRoYXQgaXMgbm90IHRydWUsIHdl
IGNoZWNrIGlmIHRoZSBnbG9iYWwgbGltaXQgaGFzIGJlZW4gcmVhY2hlZCBpZiBiYWNraW5nc3Rv
cmUgbW9kZSBpcyBvbgpAQCAtNDA4LDE4ICs0MzUsMTQgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjph
ZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2llKiBjYW5kaWRh
dGUKICAgICAvLyAgICB0aGVuIGl0IG1lYW5zIHRoZSBnbG9iYWwgY291bnQgd2lsbCBuZXZlciBl
eGNlZWQgdGhlIGxpbWl0CiAKICAgICBDb29raWVMaW1pdExvZygiQ29va2llTWFuYWdlciAtIGxv
Y2FsIGNvdW50OiAlZCAgZ2xvYmFsIGNvdW50OiAlZCIsIHRhcmdldE1hcC0+Y291bnQoKSwgbV9j
b3VudCk7Ci0gICAgaWYgKHRhcmdldE1hcC0+Y291bnQoKSA+PSBzX21heENvb2tpZUNvdW50UGVy
SG9zdCkgeworICAgIGlmICh0YXJnZXRNYXAtPmNvdW50KCkgPiBzX21heENvb2tpZUNvdW50UGVy
SG9zdCkgewogICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBkZWxldGluZyBvbGRl
c3QgY29va2llIGZyb20gdGhpcyBtYXAgZHVlIHRvIGRvbWFpbiBjb3VudC5cbiIpOwogICAgICAg
ICBvbGRlc3RDb29raWUgPSB0YXJnZXRNYXAtPnJlbW92ZU9sZGVzdENvb2tpZSgpOwotICAgIH0g
ZWxzZSBpZiAobV9jb3VudCA+PSBzX2dsb2JhbE1heENvb2tpZUNvdW50ICYmIChwb3N0VG9CYWNr
aW5nU3RvcmUgIT0gRG9Ob3RSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSkgeworICAgIH0gZWxzZSBp
ZiAobV9jb3VudCA+IHNfZ2xvYmFsTWF4Q29va2llQ291bnQgJiYgKHBvc3RUb0JhY2tpbmdTdG9y
ZSAhPSBEb05vdFJlbW92ZUZyb21CYWNraW5nU3RvcmUpKSB7CiAgICAgICAgIENvb2tpZUxpbWl0
TG9nKCJDb29raWVNYW5hZ2VyIC0gR2xvYmFsIGxpbWl0IHJlYWNoZWQsIGluaXRpYXRlIGNvb2tp
ZSBsaW1pdCBjbGVhbiB1cC4iKTsKICAgICAgICAgaW5pdGlhdGVDb29raWVMaW1pdENsZWFuVXAo
KTsKICAgICB9CiAKLSAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBhZGRpbmcgbmV3IGNv
b2tpZSAtICVzLlxuIiwgY2FuZGlkYXRlQ29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgdGFyZ2V0TWFwLT5hZGRDb29raWUoY2FuZGlkYXRlQ29va2llKTsKLQogICAgIC8v
IE9ubHkgYWRkIG5vbiBzZXNzaW9uIGNvb2tpZSB0byB0aGUgYmFja2luZyBzdG9yZS4KICAgICBp
ZiAocG9zdFRvQmFja2luZ1N0b3JlID09IFJlbW92ZUZyb21CYWNraW5nU3RvcmUpIHsKICAgICAg
ICAgaWYgKG9sZGVzdENvb2tpZSAmJiAhb2xkZXN0Q29va2llLT5pc1Nlc3Npb24oKSkgewpAQCAt
NDMzLDM4ICs0NTYsNiBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OmFkZENvb2tpZVRvTWFwKENvb2tp
ZU1hcCogdGFyZ2V0TWFwLCBQYXJzZWRDb29raWUqIGNhbmRpZGF0ZQogICAgICAgICBkZWxldGUg
b2xkZXN0Q29va2llOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnVwZGF0ZShDb29raWVNYXAq
IHRhcmdldE1hcCwgUGFyc2VkQ29va2llKiBuZXdDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQ
b2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlKQotewotICAgIC8vIElmIG9sZCBjb29raWUgaXMgbm9u
LXNlc3Npb24gYW5kIG5ldyBvbmUgaXMsIHdlIGhhdmUgdG8gZGVsZXRlIGl0IGZyb20gYmFja2lu
Z3N0b3JlCi0gICAgLy8gSWYgbmV3IGNvb2tpZSBpcyBub24tc2Vzc2lvbiBhbmQgb2xkIG9uZSBp
cywgd2UgaGF2ZSB0byBhZGQgaXQgdG8gYmFja2luZ3N0b3JlCi0gICAgLy8gSWYgYm90aCBzZXNz
aW9ucyBhcmUgbm9uLXNlc3Npb24sIHRoZW4gd2UgdXBkYXRlIGl0IGluIHRoZSBiYWNraW5nc3Rv
cmUKLQotICAgIENvb2tpZUxvZygiQ29va2llTWFuYWdlciAtIHVwZGF0aW5nIG5ldyBjb29raWUg
LSAlcy5cbiIsIG5ld0Nvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIFBh
cnNlZENvb2tpZSogb2xkQ29va2llID0gdGFyZ2V0TWFwLT51cGRhdGVDb29raWUobmV3Q29va2ll
KTsKLQotICAgIEFTU0VSVChvbGRDb29raWUpOwotCi0gICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9y
ZSA9PSBSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGJvb2wgbmV3SXNTZXNzaW9u
ID0gbmV3Q29va2llLT5pc1Nlc3Npb24oKTsKLSAgICAgICAgYm9vbCBvbGRJc1Nlc3Npb24gPSBv
bGRDb29raWUtPmlzU2Vzc2lvbigpOwotICAgICAgICBpZiAoIW5ld0lzU2Vzc2lvbiAmJiAhb2xk
SXNTZXNzaW9uKQotICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnVwZGF0ZShuZXdD
b29raWUpOwotICAgICAgICBlbHNlIGlmIChuZXdJc1Nlc3Npb24gJiYgIW9sZElzU2Vzc2lvbikg
ewotICAgICAgICAgICAgLy8gTXVzdCBtYW51YWxseSBkZWNyZWFzZSB0aGUgY291bnRlciBiZWNh
dXNlIGl0IHdhcyBub3QgY291bnRlZCB3aGVuCi0gICAgICAgICAgICAvLyB0aGUgY29va2llIHdh
cyByZW1vdmVkIGluIGNvb2tpZU1hcC4KLSAgICAgICAgICAgIHJlbW92ZWRDb29raWUoKTsKLSAg
ICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmUob2xkQ29va2llKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghbmV3SXNTZXNzaW9uICYmIG9sZElzU2Vzc2lvbikgewotICAgICAgICAg
ICAgLy8gTXVzdCBtYW51YWxseSBpbmNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBu
b3QgY291bnRlZCB3aGVuCi0gICAgICAgICAgICAvLyB0aGUgY29va2llIHdhcyBhZGRlZCBpbiBj
b29raWVNYXAuCi0gICAgICAgICAgICBhZGRlZENvb2tpZSgpOwotICAgICAgICAgICAgbV9jb29r
aWVCYWNraW5nU3RvcmUtPmluc2VydChuZXdDb29raWUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGRlbGV0ZSBvbGRDb29raWU7Ci19Ci0KIHZvaWQgQ29va2llTWFuYWdlcjo6Z2V0QmFja2luZ1N0
b3JlQ29va2llcygpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBqdXN0
IGFmdGVyIGhhdmluZyBjcmVhdGVkIHRoZSBjb29raWVNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCmluZGV4IGI5N2I5Zjk2
MmRjOTVkNTYzMmEzODhjZDM5MTI3NTIzNDU2ZDk1ZmEuLmIyYWM0MzlkNDA0M2NmZWI5NmFjYmQ3
MzI1MWI0MmUxYjIyNzIxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llTWFuYWdlci5oCkBAIC0xMjAsOCArMTIwLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgc2hvdWxkUmVqZWN0Rm9yU2VjdXJpdHlSZWFzb24oY29uc3QgUGFyc2VkQ29va2ll
KiwgY29uc3QgS1VSTCYpOwogCi0gICAgdm9pZCBhZGRDb29raWVUb01hcChDb29raWVNYXAqLCBQ
YXJzZWRDb29raWUqLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5KTsKLSAgICB2b2lkIHVwZGF0
ZShDb29raWVNYXAqLCBQYXJzZWRDb29raWUqLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5KTsK
KyAgICB2b2lkIGFkZENvb2tpZVRvTWFwKENvb2tpZU1hcCogdGFyZ2V0TWFwLCBQYXJzZWRDb29r
aWUqIGNhbmRpZGF0ZUNvb2tpZSwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBwb3N0VG9CYWNr
aW5nU3RvcmUpOwogCiAgICAgQ29va2llTWFwKiBmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2ll
TWFwKiBwcm90b2NvbE1hcCwgY29uc3QgU3RyaW5nJiBkb21haW4sIGJvb2wgZmluZE9ubHkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAK
aW5kZXggNGM2ZDU0MWFkZGVmZDBhYTIyMjJiMWM2MGUyZDY3ZDgxYTJlMjEyMi4uNTliYmY5NGY2
YmY0ZDA4ZTM1M2JiMmI5ZmFmNDIxZTEyNGY4ZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmNwcApAQCAtNTQsNDMgKzU0LDUwIEBAIENv
b2tpZU1hcDo6fkNvb2tpZU1hcCgpCiAgICAgZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKTsK
IH0KIAotYm9vbCBDb29raWVNYXA6OmV4aXN0c0Nvb2tpZShjb25zdCBQYXJzZWRDb29raWUqIGNv
b2tpZSkgY29uc3QKK1BhcnNlZENvb2tpZSogQ29va2llTWFwOjphZGRPclJlcGxhY2VDb29raWUo
UGFyc2VkQ29va2llKiBjb29raWUpCiB7Ci0gICAgU3RyaW5nIGtleSA9IGNvb2tpZS0+bmFtZSgp
ICsgY29va2llLT5wYXRoKCk7Ci0gICAgcmV0dXJuIG1fY29va2llTWFwLmNvbnRhaW5zKGtleSk7
Ci19Ci0KLXZvaWQgQ29va2llTWFwOjphZGRDb29raWUoUGFyc2VkQ29va2llKiBjb29raWUpCi17
Ci0gICAgU3RyaW5nIGtleSA9IGNvb2tpZS0+bmFtZSgpICsgY29va2llLT5wYXRoKCk7Ci0KICAg
ICBDb29raWVMb2coIkNvb2tpZU1hcCAtIEF0dGVtcHRpbmcgdG8gYWRkIGNvb2tpZSAtICVzIiwg
Y29va2llLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoIW1fY29va2llTWFw
LmNvbnRhaW5zKGtleSkpOwotICAgIG1fY29va2llTWFwLmFkZChrZXksIGNvb2tpZSk7CisgICAg
UGFyc2VkQ29va2llKiBwcmV2Q29va2llID0gMDsKKyAgICBWZWN0b3I8UGFyc2VkQ29va2llKj46
Oml0ZXJhdG9yIGl0OworICAgIGZvciAoaXQgPSBtX2Nvb2tpZVZlY3Rvci5iZWdpbigpOyBpdCAh
PSBtX2Nvb2tpZVZlY3Rvci5lbmQoKTsgaXQrKykgeworICAgICAgICBpZiAoKCppdCktPm5hbWUo
KSA9PSBjb29raWUtPm5hbWUoKSAmJiAoKml0KS0+cGF0aCgpID09IGNvb2tpZS0+cGF0aCgpKSB7
CisgICAgICAgICAgICBwcmV2Q29va2llID0gKml0OworICAgICAgICAgICAgKml0ID0gY29va2ll
OworICAgICAgICAgICAgaWYgKHByZXZDb29raWUgPT0gbV9vbGRlc3RDb29raWUpCisgICAgICAg
ICAgICAgICAgdXBkYXRlT2xkZXN0Q29va2llKCk7CisgICAgICAgICAgICByZXR1cm4gcHJldkNv
b2tpZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fY29va2llVmVjdG9yLmFwcGVuZChjb29r
aWUpOwogICAgIGlmICghY29va2llLT5pc1Nlc3Npb24oKSkKICAgICAgICAgY29va2llTWFuYWdl
cigpLmFkZGVkQ29va2llKCk7CiAgICAgaWYgKCFtX29sZGVzdENvb2tpZSB8fCBtX29sZGVzdENv
b2tpZS0+bGFzdEFjY2Vzc2VkKCkgPiBjb29raWUtPmxhc3RBY2Nlc3NlZCgpKQogICAgICAgICBt
X29sZGVzdENvb2tpZSA9IGNvb2tpZTsKKyAgICByZXR1cm4gMDsKIH0KIAotUGFyc2VkQ29va2ll
KiBDb29raWVNYXA6OnVwZGF0ZUNvb2tpZShQYXJzZWRDb29raWUqIG5ld0Nvb2tpZSkKK1BhcnNl
ZENvb2tpZSogQ29va2llTWFwOjpyZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbikKIHsK
LSAgICBTdHJpbmcga2V5ID0gbmV3Q29va2llLT5uYW1lKCkgKyBuZXdDb29raWUtPnBhdGgoKTsK
LSAgICBQYXJzZWRDb29raWUqIG9sZENvb2tpZSA9IG1fY29va2llTWFwLnRha2Uoa2V5KTsKLSAg
ICBBU1NFUlQob2xkQ29va2llKTsKLSAgICBtX2Nvb2tpZU1hcC5hZGQoa2V5LCBuZXdDb29raWUp
OwotICAgIGlmIChvbGRDb29raWUgPT0gbV9vbGRlc3RDb29raWUpCi0gICAgICAgIHVwZGF0ZU9s
ZGVzdENvb2tpZSgpOwotICAgIHJldHVybiBvbGRDb29raWU7CisgICAgQVNTRVJUKHBvc2l0aW9u
ID49IDApOworICAgIFBhcnNlZENvb2tpZSogcmVtb3ZlZGNvb2tpZSA9IG1fY29va2llVmVjdG9y
W3Bvc2l0aW9uXTsKKyAgICBtX2Nvb2tpZVZlY3Rvci5yZW1vdmUocG9zaXRpb24pOworICAgIHJl
dHVybiByZW1vdmVkY29va2llOwogfQogCiBQYXJzZWRDb29raWUqIENvb2tpZU1hcDo6cmVtb3Zl
Q29va2llKGNvbnN0IFBhcnNlZENvb2tpZSogY29va2llKQogewotICAgIC8vIEZpbmQgYSBwcmV2
aW91cyBlbnRyeSBmb3IgZGVsZXRpb24KLSAgICBTdHJpbmcga2V5ID0gY29va2llLT5uYW1lKCkg
KyBjb29raWUtPnBhdGgoKTsKLSAgICBQYXJzZWRDb29raWUqIHByZXZDb29raWUgPSBtX2Nvb2tp
ZU1hcC50YWtlKGtleSk7Ci0KKyAgICAvLyBGaW5kIGEgcHJldmlvdXMgZW50cnkgZm9yIGRlbGV0
aW9uLgorICAgIENvb2tpZUxvZygiQ29va2llTWFwIC0gcmVtb3ZlQ29va2llOiVzIiwgY29va2ll
LT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUGFyc2VkQ29va2llKiBwcmV2Q29va2llID0g
MDsKKyAgICBpbnQgY29va2llQ291bnQgPSBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7CisgICAgZm9y
IChpbnQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IGNvb2tpZUNvdW50OyBwb3NpdGlvbisrKSB7
CisgICAgICAgIGlmIChtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl0tPm5hbWUoKSA9PSBjb29raWUt
Pm5hbWUoKSAmJiBtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl0tPnBhdGgoKSA9PSBjb29raWUtPnBh
dGgoKSkgeworICAgICAgICAgICAgcHJldkNvb2tpZSA9IHJlbW92ZUNvb2tpZUF0SW5kZXgocG9z
aXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKCFw
cmV2Q29va2llKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTI2LDE5ICsxMzMsMjIgQEAgdm9p
ZCBDb29raWVNYXA6OmFkZFN1YmRvbWFpbk1hcChjb25zdCBTdHJpbmcmIHN1YmRvbWFpbiwgQ29v
a2llTWFwKiBuZXdEb21haW4pCiAKIHZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29raWVzKFZlY3Rv
cjxQYXJzZWRDb29raWUqPiogc3RhY2tPZkNvb2tpZXMpCiB7Ci0gICAgQ29va2llTG9nKCJDb29r
aWVNYXAgLSBBdHRlbXB0aW5nIHRvIGNvcHkgTWFwOiVzIGNvb2tpZXMgd2l0aCAlZCBjb29raWVz
IGludG8gdmVjdG9ycyIsIG1fbmFtZS51dGY4KCkuZGF0YSgpLCBtX2Nvb2tpZU1hcC5zaXplKCkp
OworICAgIENvb2tpZUxvZygiQ29va2llTWFwIC0gQXR0ZW1wdGluZyB0byBjb3B5IE1hcDolcyBj
b29raWVzIHdpdGggJWQgY29va2llcyBpbnRvIHZlY3RvcnMiLCBtX25hbWUudXRmOCgpLmRhdGEo
KSwgbV9jb29raWVWZWN0b3Iuc2l6ZSgpKTsKKworICAgIHN0YWNrT2ZDb29raWVzLT5yZXNlcnZl
Q2FwYWNpdHkoc3RhY2tPZkNvb2tpZXMtPnNpemUoKSArIG1fY29va2llVmVjdG9yLnNpemUoKSk7
CiAKLSAgICBWZWN0b3I8UGFyc2VkQ29va2llKj4gbmV3Q29va2llczsKLSAgICBjb3B5VmFsdWVz
VG9WZWN0b3IobV9jb29raWVNYXAsIG5ld0Nvb2tpZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmV3Q29va2llcy5zaXplKCk7IGkrKykgewotICAgICAgICBQYXJzZWRDb29raWUqIG5l
d0Nvb2tpZSA9IG5ld0Nvb2tpZXNbaV07CisgICAgaW50IHBvc2l0aW9uID0gMDsKKyAgICB3aGls
ZSAocG9zaXRpb24gPCBtX2Nvb2tpZVZlY3Rvci5zaXplKCkpIHsKKyAgICAgICAgUGFyc2VkQ29v
a2llKiBuZXdDb29raWUgPSBtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl07CiAgICAgICAgIGlmIChu
ZXdDb29raWUtPmhhc0V4cGlyZWQoKSkgewogICAgICAgICAgICAgLy8gTm90aWNlIHRoYXQgd2Ug
ZG9uJ3QgZGVsZXRlIGZyb20gYmFja2luZ3N0b3JlLiBUaGVzZSBleHBpcmVkIGNvb2tpZXMgd2ls
bCBiZQogICAgICAgICAgICAgLy8gZGVsZXRlZCB3aGVuIG1hbmFnZXIgbG9hZHMgdGhlIGJhY2tp
bmdzdG9yZSBhZ2Fpbi4KLSAgICAgICAgICAgIFBhcnNlZENvb2tpZSogZXhwaXJlZCA9IHJlbW92
ZUNvb2tpZShuZXdDb29raWUpOworICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0g
cmVtb3ZlQ29va2llQXRJbmRleChwb3NpdGlvbik7CiAgICAgICAgICAgICBkZWxldGUgZXhwaXJl
ZDsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzdGFja09m
Q29va2llcy0+YXBwZW5kKG5ld0Nvb2tpZSk7CisgICAgICAgICAgICBwb3NpdGlvbisrOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBzdGFjayBvZiBjb29r
aWVzIG5vdyBoYXZlICVkIGNvb2tpZXMgaW4gaXQiLCAoKnN0YWNrT2ZDb29raWVzKS5zaXplKCkp
OwpAQCAtMTc3LDE1ICsxODcsMTYgQEAgUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZU9s
ZGVzdENvb2tpZSgpCiAKIHZvaWQgQ29va2llTWFwOjp1cGRhdGVPbGRlc3RDb29raWUoKQogewot
ICAgIGlmICghbV9jb29raWVNYXAuc2l6ZSgpKQorICAgIHNpemVfdCBzaXplID0gbV9jb29raWVW
ZWN0b3Iuc2l6ZSgpOworICAgIGlmICghc2l6ZSkgewogICAgICAgICBtX29sZGVzdENvb2tpZSA9
IDA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBQYXJzZWRDb29raWUqPjo6
aXRlcmF0b3IgaXQgPSBtX2Nvb2tpZU1hcC5iZWdpbigpOwotICAgICAgICBtX29sZGVzdENvb2tp
ZSA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGZvciAoOyBpdCAhPSBtX2Nv
b2tpZU1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIGlmIChtX29sZGVzdENvb2tpZS0+bGFz
dEFjY2Vzc2VkKCkgPiBpdC0+c2Vjb25kLT5sYXN0QWNjZXNzZWQoKSkKLSAgICAgICAgICAgICAg
ICBtX29sZGVzdENvb2tpZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX29sZGVzdENvb2tpZSA9IG1fY29va2llVmVjdG9yWzBdOworICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX29sZGVzdENvb2tpZS0+bGFzdEFj
Y2Vzc2VkKCkgPiBtX2Nvb2tpZVZlY3RvcltpXS0+bGFzdEFjY2Vzc2VkKCkpCisgICAgICAgICAg
ICBtX29sZGVzdENvb2tpZSA9IG1fY29va2llVmVjdG9yW2ldOwogICAgIH0KIH0KIApAQCAtMTkz
LDggKzIwNCw4IEBAIHZvaWQgQ29va2llTWFwOjpkZWxldGVBbGxDb29raWVzQW5kRG9tYWlucygp
CiB7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fc3ViZG9tYWlucyk7CiAgICAgbV9zdWJkb21haW5z
LmNsZWFyKCk7Ci0gICAgZGVsZXRlQWxsVmFsdWVzKG1fY29va2llTWFwKTsKLSAgICBtX2Nvb2tp
ZU1hcC5jbGVhcigpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Nvb2tpZVZlY3Rvcik7CisgICAg
bV9jb29raWVWZWN0b3IuY2xlYXIoKTsKIAogICAgIG1fb2xkZXN0Q29va2llID0gMDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oCmluZGV4IDcz
YmExM2ZhY2MxNGE1MTUyZWExMzk4ODhlNDQ0M2E4ZWExZDdlMDYuLmJhYTMzMDg2YTQ4OWQ5MTE1
NjdmNTI1MjhiYWY0Yjk4YWNlNGI4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVNYXAuaApAQCAtNTEsMTcgKzUxLDE0IEBAIHB1YmxpYzoKICAgICBD
b29raWVNYXAoY29uc3QgU3RyaW5nJiBuYW1lID0gIiIpOwogICAgIH5Db29raWVNYXAoKTsKIAot
ICAgIHVuc2lnbmVkIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llTWFwLnNpemUo
KTsgfQorICAgIHVuc2lnbmVkIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llVmVj
dG9yLnNpemUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQogCi0gICAgdm9pZCBhZGRDb29raWUoUGFyc2VkQ29va2llKik7Ci0KICAgICAv
LyBSZXR1cm5pbmcgdGhlIG9yaWdpbmFsIGNvb2tpZSBvYmplY3Qgc28gbWFuYWdlciBjYW4ga2Vl
cCBhIHJlZmVyZW5jZSB0byB0aGUgdXBkYXRlcyBpbiB0aGUgZGF0YWJhc2UgcXVldWUuCi0gICAg
UGFyc2VkQ29va2llKiB1cGRhdGVDb29raWUoUGFyc2VkQ29va2llKik7CisgICAgUGFyc2VkQ29v
a2llKiBhZGRPclJlcGxhY2VDb29raWUoUGFyc2VkQ29va2llKik7CiAKICAgICAvLyBOZWVkIHRv
IHJldHVybiB0aGUgcmVmZXJlbmNlIHRvIHRoZSByZW1vdmVkIGNvb2tpZSBzbyBtYW5hZ2VyIGNh
biBkZWFsIHdpdGggaXQgKGdhcmJhZ2UgY29sbGVjdCkuCiAgICAgUGFyc2VkQ29va2llKiByZW1v
dmVDb29raWUoY29uc3QgUGFyc2VkQ29va2llKik7Ci0gICAgYm9vbCBleGlzdHNDb29raWUoY29u
c3QgUGFyc2VkQ29va2llKikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIGEgbWFwIHdpdGggdGhh
dCBnaXZlbiBzdWJkb21haW4uCiAgICAgQ29va2llTWFwKiBnZXRTdWJkb21haW5NYXAoY29uc3Qg
U3RyaW5nJik7CkBAIC03NCwxMSArNzEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVPbGRlc3RDb29raWUoKTsKKyAgICBQYXJzZWRDb29raWUqIHJlbW92ZUNvb2tpZUF0
SW5kZXgoaW50IHBvc2l0aW9uKTsKIAotICAgIC8vIFRoZSBrZXkgaXMgdGhlIHR1cGxlIChuYW1l
LCBwYXRoKS4KLSAgICAvLyBUaGUgc3BlYyBhc2tzIHRvIGhhdmUgYWxzbyBkb21haW4sIHdoaWNo
IGlzIGltcGxpZWQgYnkgY2hvb3NpbmcgdGhlIENvb2tpZU1hcCByZWxldmFudCB0byB0aGUgZG9t
YWluLgotICAgIEhhc2hNYXA8U3RyaW5nLCBQYXJzZWRDb29raWUqPiBtX2Nvb2tpZU1hcDsKLQor
ICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBtX2Nvb2tpZVZlY3RvcjsKICAgICAvLyBUaGUga2V5
IGlzIGEgc3Vic2VjdGlvbiBvZiB0aGUgZG9tYWluLgogICAgIC8vIGV4OiBpZiBpbnNlcnRpbmcg
YWNjb3VudHMuZ29vZ2xlLmNvbSAmIHRoaXMgY29va2llbWFwIGlzICJjb20iLCB0aGlzIHN1YmRv
bWFpbiBtYXAgd2lsbCBjb250YWluICJnb29nbGUiCiAgICAgLy8gdGhlICJnb29nbGUiIGNvb2tp
ZW1hcCB3aWxsIGNvbnRhaW4gImFjY291bnRzIiBpbiBpdHMgc3ViZG9tYWluIG1hcC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5OGNhN2I0MjQ4NDVkNTQwYTNjYWUyYjU3ODU4OGExOTE1ZjFmYjk5Li5kNzgzYzc1NDU2MGM3
ODQ2MWFiYjY3NjQwMzFkNTFlYTBhOTU2YTBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDItMjkgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldQXJyYXkgb2YgQ29va2llcyBpbiBIVFRQIHJlcXVlc3QgaGVhZGVyIGFy
ZSBub3QgaW4gb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldEFycmF5Y29va2llcy1yZXN1bHQucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy5waHA6IEFkZGVkLgorCiAyMDEyLTAy
LTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA5MjQ5OTM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk3MjUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9y
ZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZTk1OGMyNzlhNzFmOGE1OWM5NjNhOWU3ZDE2YmRiYWMxMDNkNWQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRB
cnJheWNvb2tpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNhc2Ug
dG8gc2V0IGEgQXJyYXkgb2YgQ29va2llIHNpemUgb2YgMyBhbmQgY2hlY2sgaWYgaXQncyBiZWVu
IGNvcnJlY3RseSBzZXQgYW5kIGluIG9yZGVyLgorSWYgdGhlIFRlc3QgY2FzZSB3YXMgc3VjY2Vz
c2Z1bCwgVGhlbiBpdCBzaG91bGQgcHJpbnQgUGFzc2VkIGJlbG93ISEKKworCitQYXNzZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJy
YXljb29raWVzLXJlc3VsdC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVz
b3VyY2VzL3NldEFycmF5Y29va2llcy1yZXN1bHQucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNGE2YTU0OTY3
OTJjMWZmYzNhNzc2ZTYwM2FkM2Y3YjllODBjYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1yZXN1bHQu
cGhwCkBAIC0wLDAgKzEsMzQgQEAKKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQ+DQorICAgIGZ1
bmN0aW9uIHJ1bigpew0KKyAgICAgICAgLy8gUmVhZGluZyB0aGUgQ29vaWtlcyB1c2luZyBQSFAN
CisgICAgICAgIHZhciBjb29raWUgPSAiPD9waHAgaWYgKGlzc2V0KCRfQ09PS0lFWydzZXRBcnJh
eWNvb2tpZSddKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAo
JF9DT09LSUVbJ3NldEFycmF5Y29va2llJ10gYXMgJG5hbWUgPT4gJHZhbHVlKSB7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBodG1sc3BlY2lhbGNoYXJzKCRu
YW1lKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBodG1s
c3BlY2lhbGNoYXJzKCR2YWx1ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiJG5hbWUgOiAkdmFsdWUiOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KKwkJICAgICAgICAgICAgfSANCisgICAgICAgICAgICAgICAgICAgICA/PiI7DQorDQor
ICAgICAgICB2YXIgc3RhdHVzID0gIkZhaWwiOw0KKyAgICAgICAgaWYgKGNvb2tpZSA9PSAidGhy
ZWUgOiBjb29raWV0aHJlZXR3byA6IGNvb2tpZXR3b29uZSA6IGNvb2tpZW9uZSIpIHsNCisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmlubmVySFRNTCA9ICI8Yj5Q
YXNzZWQ8L2I+IjsNCisgICAgICAgICAgICBzdGF0dXMgPSAiUGFzcyI7DQorICAgICAgICB9IGVs
c2UNCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmlubmVySFRN
TCA9ICI8Yj5GYWlsZWQ8L2I+IjsgICAgDQorICAgIH0NCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0K
Kw0KKzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBvbmxvYWQ9InJ1bigpIj4NCis8cD5UaGlz
IHRlc3QgY2FzZSB0byBzZXQgYSBBcnJheSBvZiBDb29raWUgc2l6ZSBvZiAzIGFuZCBjaGVjayBp
ZiBpdCdzIGJlZW4gY29ycmVjdGx5IHNldCBhbmQgaW4gb3JkZXIuPGJyIC8+SWYgdGhlIFRlc3Qg
Y2FzZSB3YXMgc3VjY2Vzc2Z1bCwgVGhlbiBpdCBzaG91bGQgcHJpbnQgUGFzc2VkIGJlbG93ISEg
PC9wPjxici8+DQorPGRpdiBpZD0idGVzdCI+DQorTm90IFdvcmtpbmchIQ0KKzwvZGl2Pg0KKzwv
Ym9keT4NCis8L2h0bWw+DQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1
Mzc4NGM2ODIwNDljY2Q1MDI0Y2NlMjBkZGU5YzZhZjhkNjc2Y2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2ll
cy5waHAKQEAgLTAsMCArMSw4IEBACis8P3BocCANCisvLyBTZXR0aW5nIEFycmF5IG9mIGNvb2tp
ZXMNCitzZXRjb29raWUoInNldEFycmF5Y29va2llW3RocmVlXSIsICJjb29raWV0aHJlZSIpOw0K
K3NldGNvb2tpZSgic2V0QXJyYXljb29raWVbdHdvXSIsICJjb29raWV0d28iKTsNCitzZXRjb29r
aWUoInNldEFycmF5Y29va2llW29uZV0iLCAiY29va2llb25lIik7DQoraGVhZGVyKCdMb2NhdGlv
bjogc2V0QXJyYXljb29raWVzLXJlc3VsdC5waHAnKTsNCis/Pg0KKw0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129657</attachid>
            <date>2012-03-01 00:59:20 -0800</date>
            <delta_ts>2012-03-01 01:13:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79870-20120301165918.patch</filename>
            <type>text/plain</type>
            <size>18053</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzOGQ0YTQyZGE5MmNk
ODBhYmMwMjQ4NWM1MTA4YTA1YTBmZDhmMy4uMmQwMjg0NTE3YzM3MjNhNjRhZTRiNTFjMzY1MDM1
ZDI3ZGFlMTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAzLTAxICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XUFycmF5IG9mIENvb2tpZXMgaW4gSFRUUCByZXF1ZXN0IGhlYWRlciBhcmUgbm90IGluIG9y
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4
NzAKKworICAgICAgICBTdGQ6OnNvcnQgYW5kIEhhc2hNYXAgYXJlIG5vdCBzdGFibGUuIFNvIGNv
b2tpZXMgd2l0aCB0aGUgc2FtZSBjcmVhdGluZworICAgICAgICB0aW1lIHNvbWV0aW1lcyBhcmUg
c2VudCBkaXNvcmRlci4KKyAgICAgICAgQ2hhbmdlIHN0ZDo6c29ydCB3aXRoIHN0ZDo6c3RhYmxl
LXNvcnQuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdXNpbmcgSGFzaE1hcCB0byBzYXZlIHNvIGZl
dyBjb29raWVzIGZvciBvbmUgZG9tYWluLgorICAgICAgICBJdCBpcyBhIHdhc3Qgb2YgdGltZSB0
byBjcmVhdGUgSGFzaE1hcCwgdG9vLgorICAgICAgICBTbyBjaGFuZ2UgaXQgd2l0aCB2ZWN0b3Iu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29va2llU29ydGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6Omdl
dFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6Y2hlY2tBbmRU
cmVhdENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2VyOjphZGRDb29raWVU
b01hcCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llTWFwOjphZGRPclJlcGxhY2VDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29va2llTWFwOjpyZW1vdmVDb29raWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tp
ZU1hcDo6cmVtb3ZlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llTWFwOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1h
cDo6dXBkYXRlT2xkZXN0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6ZGVs
ZXRlQWxsQ29va2llc0FuZERvbWFpbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmNvdW50KToKKyAgICAg
ICAgKENvb2tpZU1hcCk6CisKIDIwMTItMDItMjcgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWx3YXlzIG5vdGlmeSBzdWJ0cmVlIG9mIHJlbW92YWwgaW4gQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGQ3OTM4MGZkOWJjOTdjOWI5
MzE4YjViZDRiMjFiYmUzZjFlODUyNWUuLjc2MDQ2ZjM2MGRiMjE2YTA1YzdiZTAxMTY1M2ZkODE1
MmEzODZlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIENvb2tpZU1hbmFnZXI6On5D
b29raWVNYW5hZ2VyKCkKIHN0YXRpYyBib29sIGNvb2tpZVNvcnRlcihQYXJzZWRDb29raWUqIGEs
IFBhcnNlZENvb2tpZSogYikKIHsKICAgICBpZiAoYS0+cGF0aCgpLmxlbmd0aCgpID09IGItPnBh
dGgoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGEtPmNyZWF0aW9uVGltZSgpIDw9IGItPmNy
ZWF0aW9uVGltZSgpOworICAgICAgICByZXR1cm4gYS0+Y3JlYXRpb25UaW1lKCkgPCBiLT5jcmVh
dGlvblRpbWUoKTsKICAgICByZXR1cm4gYS0+cGF0aCgpLmxlbmd0aCgpID4gYi0+cGF0aCgpLmxl
bmd0aCgpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRS
YXdDb29raWVzKFZlY3RvcjxQYXJzZWRDb29raWUqPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IEsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHN0ZDo6c29ydChzdGFja09mQ29va2llcy5iZWdpbigp
LCBzdGFja09mQ29va2llcy5lbmQoKSwgY29va2llU29ydGVyKTsKKyAgICBzdGQ6OnN0YWJsZV9z
b3J0KHN0YWNrT2ZDb29raWVzLmJlZ2luKCksIHN0YWNrT2ZDb29raWVzLmVuZCgpLCBjb29raWVT
b3J0ZXIpOwogfQogCiB2b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUFsbENvb2tpZXMoQmFja2lu
Z1N0b3JlUmVtb3ZhbFBvbGljeSBiYWNraW5nU3RvcmVSZW1vdmFsKQpAQCAtMzcwLDMyICszNzAs
NTkgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKFBhcnNlZENvb2tp
ZSogY2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3QKICAgICAgICAgaWYgKHBvc3RUb0JhY2tpbmdT
dG9yZSA9PSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSkKICAgICAgICAgICAgIG1fY29va2llQmFj
a2luZ1N0b3JlLT5yZW1vdmUoY2FuZGlkYXRlQ29va2llKTsKICAgICAgICAgZWxzZSBpZiAoY3Vy
TWFwKSB7Ci0gICAgICAgICAgICBib29sIGNvb2tpZUFscmVhZHlFeGlzdHMgPSBjdXJNYXAtPmV4
aXN0c0Nvb2tpZShjYW5kaWRhdGVDb29raWUpOwotICAgICAgICAgICAgaWYgKGNvb2tpZUFscmVh
ZHlFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBl
eHBpcmVkIGNvb2tpZSBleGlzdHMgaW4gbWVtb3J5Iik7Ci0gICAgICAgICAgICAgICAgUGFyc2Vk
Q29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29raWUoY2FuZGlkYXRlQ29va2llKTsK
LSAgICAgICAgICAgICAgICAvLyBDb29raWUgaXMgdXNlbGVzcywgUmVtb3ZlIHRoZSBjb29raWUg
ZnJvbSB0aGUgYmFja2luZ3N0b3JlIGlmIGl0IGV4aXN0cwotICAgICAgICAgICAgICAgIC8vIEJh
Y2t1cCBjaGVjayBmb3IgQmFja2luZ1N0b3JlQ29va2llRW50cnkgaW5jYXNlIHNvbWVvbmUgaW5j
b3JyZWN0bHkgdXNlcyB0aGlzIGVudW0KLSAgICAgICAgICAgICAgICBpZiAocG9zdFRvQmFja2lu
Z1N0b3JlICE9IEJhY2tpbmdTdG9yZUNvb2tpZUVudHJ5ICYmICFleHBpcmVkLT5pc1Nlc3Npb24o
KSkgewotICAgICAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBleHBp
cmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9tIGRiIik7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmUoZXhwaXJlZCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOworICAgICAgICAgICAg
Ly8gUmVtb3ZlQ29va2llIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGNvb2tpZSBkb2Vzbid0IGV4aXN0
LgorICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29r
aWUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIC8vIENvb2tpZSBpcyB1c2VsZXNzLCBS
ZW1vdmUgdGhlIGNvb2tpZSBmcm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQgZXhpc3RzLgorICAg
ICAgICAgICAgLy8gQmFja3VwIGNoZWNrIGZvciBCYWNraW5nU3RvcmVDb29raWVFbnRyeSBpbmNh
c2Ugc29tZW9uZSBpbmNvcnJlY3RseSB1c2VzIHRoaXMgZW51bS4KKyAgICAgICAgICAgIGlmIChl
eHBpcmVkICYmIHBvc3RUb0JhY2tpbmdTdG9yZSAhPSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSAm
JiAhZXhwaXJlZC0+aXNTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAgICBDb29raWVMb2coIkNv
b2tpZU1hbmFnZXIgLSBleHBpcmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9t
IGRiIik7CisgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShleHBp
cmVkKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOworCiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgZGVsZXRlIGNhbmRpZGF0ZUNvb2tpZTsKICAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlQoY3VyTWFwKTsKLSAgICAgICAgYm9vbCBjb29raWVBbHJlYWR5
RXhpc3RzID0gY3VyTWFwLT5leGlzdHNDb29raWUoY2FuZGlkYXRlQ29va2llKTsKLSAgICAgICAg
aWYgKGNvb2tpZUFscmVhZHlFeGlzdHMpCi0gICAgICAgICAgICB1cGRhdGUoY3VyTWFwLCBjYW5k
aWRhdGVDb29raWUsIHBvc3RUb0JhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFkZENvb2tpZVRvTWFwKGN1ck1hcCwgY2FuZGlkYXRlQ29va2llLCBwb3N0VG9CYWNraW5n
U3RvcmUpOworICAgICAgICBhZGRDb29raWVUb01hcChjdXJNYXAsIGNhbmRpZGF0ZUNvb2tpZSwg
cG9zdFRvQmFja2luZ1N0b3JlKTsKICAgICB9CiB9CiAKIHZvaWQgQ29va2llTWFuYWdlcjo6YWRk
Q29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRl
Q29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSkKIHsK
KyAgICBQYXJzZWRDb29raWUqIHByZXZDb29raWUgPSB0YXJnZXRNYXAtPmFkZE9yUmVwbGFjZUNv
b2tpZShjYW5kaWRhdGVDb29raWUpOworICAgIGlmIChwcmV2Q29va2llKSB7CisKKyAgICAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gdXBkYXRpbmcgbmV3IGNvb2tpZSAtICVzLlxuIiwg
Y2FuZGlkYXRlQ29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIC8v
IEEgY29va2llIHdhcyByZXBsYWNlZCBpbiB0YXJnZXRNYXAuCisgICAgICAgIC8vIElmIG9sZCBj
b29raWUgaXMgbm9uLXNlc3Npb24gYW5kIG5ldyBvbmUgaXMsIHdlIGhhdmUgdG8gZGVsZXRlIGl0
IGZyb20gYmFja2luZ3N0b3JlCisgICAgICAgIC8vIElmIG5ldyBjb29raWUgaXMgbm9uLXNlc3Np
b24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRvIGJhY2tpbmdzdG9yZQorICAg
ICAgICAvLyBJZiBib3RoIHNlc3Npb25zIGFyZSBub24tc2Vzc2lvbiwgdGhlbiB3ZSB1cGRhdGUg
aXQgaW4gdGhlIGJhY2tpbmdzdG9yZQorICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9IGNhbmRp
ZGF0ZUNvb2tpZS0+aXNTZXNzaW9uKCk7CisgICAgICAgIGJvb2wgb2xkSXNTZXNzaW9uID0gcHJl
dkNvb2tpZS0+aXNTZXNzaW9uKCk7CisKKyAgICAgICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9yZSA9
PSBSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBpZiAoIW5ld0lzU2Vzc2lv
biAmJiAhb2xkSXNTZXNzaW9uKQorICAgICAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3Jl
LT51cGRhdGUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5ld0lzU2Vz
c2lvbiAmJiAhb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTXVzdCBtYW51YWxs
eSBkZWNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBub3QgY291bnRlZCB3aGVuCisg
ICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVWZWN0b3Iu
CisgICAgICAgICAgICAgICAgcmVtb3ZlZENvb2tpZSgpOworICAgICAgICAgICAgICAgIG1fY29v
a2llQmFja2luZ1N0b3JlLT5yZW1vdmUocHJldkNvb2tpZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFuZXdJc1Nlc3Npb24gJiYgb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8g
TXVzdCBtYW51YWxseSBpbmNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBub3QgY291
bnRlZCB3aGVuCisgICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgYWRkZWQgaW4gY29v
a2llVmVjdG9yLgorICAgICAgICAgICAgICAgIGFkZGVkQ29va2llKCk7CisgICAgICAgICAgICAg
ICAgbV9jb29raWVCYWNraW5nU3RvcmUtPmluc2VydChjYW5kaWRhdGVDb29raWUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBwcmV2Q29va2llOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gYWRkaW5nIG5l
dyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0ZUNvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKwogICAgIFBhcnNlZENvb2tpZSogb2xkZXN0Q29va2llID0gMDsKICAgICAvLyBDaGVj
ayBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIHRoZSBwZXIgY29va2llIGRvbWFpbiBsaW1pdC4KICAg
ICAvLyBJZiB0aGF0IGlzIG5vdCB0cnVlLCB3ZSBjaGVjayBpZiB0aGUgZ2xvYmFsIGxpbWl0IGhh
cyBiZWVuIHJlYWNoZWQgaWYgYmFja2luZ3N0b3JlIG1vZGUgaXMgb24KQEAgLTQwOCwxOCArNDM1
LDE0IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJn
ZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRlCiAgICAgLy8gICAgdGhlbiBpdCBtZWFucyB0
aGUgZ2xvYmFsIGNvdW50IHdpbGwgbmV2ZXIgZXhjZWVkIHRoZSBsaW1pdAogCiAgICAgQ29va2ll
TGltaXRMb2coIkNvb2tpZU1hbmFnZXIgLSBsb2NhbCBjb3VudDogJWQgIGdsb2JhbCBjb3VudDog
JWQiLCB0YXJnZXRNYXAtPmNvdW50KCksIG1fY291bnQpOwotICAgIGlmICh0YXJnZXRNYXAtPmNv
dW50KCkgPj0gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKKyAgICBpZiAodGFyZ2V0TWFwLT5j
b3VudCgpID4gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKICAgICAgICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gZGVsZXRpbmcgb2xkZXN0IGNvb2tpZSBmcm9tIHRoaXMgbWFwIGR1ZSB0
byBkb21haW4gY291bnQuXG4iKTsKICAgICAgICAgb2xkZXN0Q29va2llID0gdGFyZ2V0TWFwLT5y
ZW1vdmVPbGRlc3RDb29raWUoKTsKLSAgICB9IGVsc2UgaWYgKG1fY291bnQgPj0gc19nbG9iYWxN
YXhDb29raWVDb3VudCAmJiAocG9zdFRvQmFja2luZ1N0b3JlICE9IERvTm90UmVtb3ZlRnJvbUJh
Y2tpbmdTdG9yZSkpIHsKKyAgICB9IGVsc2UgaWYgKG1fY291bnQgPiBzX2dsb2JhbE1heENvb2tp
ZUNvdW50ICYmIChwb3N0VG9CYWNraW5nU3RvcmUgIT0gRG9Ob3RSZW1vdmVGcm9tQmFja2luZ1N0
b3JlKSkgewogICAgICAgICBDb29raWVMaW1pdExvZygiQ29va2llTWFuYWdlciAtIEdsb2JhbCBs
aW1pdCByZWFjaGVkLCBpbml0aWF0ZSBjb29raWUgbGltaXQgY2xlYW4gdXAuIik7CiAgICAgICAg
IGluaXRpYXRlQ29va2llTGltaXRDbGVhblVwKCk7CiAgICAgfQogCi0gICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gYWRkaW5nIG5ldyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0ZUNvb2tp
ZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIHRhcmdldE1hcC0+YWRkQ29va2ll
KGNhbmRpZGF0ZUNvb2tpZSk7Ci0KICAgICAvLyBPbmx5IGFkZCBub24gc2Vzc2lvbiBjb29raWUg
dG8gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9yZSA9PSBSZW1v
dmVGcm9tQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIGlmIChvbGRlc3RDb29raWUgJiYgIW9sZGVz
dENvb2tpZS0+aXNTZXNzaW9uKCkpIHsKQEAgLTQzMywzOCArNDU2LDYgQEAgdm9pZCBDb29raWVN
YW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2ll
KiBjYW5kaWRhdGUKICAgICAgICAgZGVsZXRlIG9sZGVzdENvb2tpZTsKIH0KIAotdm9pZCBDb29r
aWVNYW5hZ2VyOjp1cGRhdGUoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogbmV3
Q29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSkKLXsK
LSAgICAvLyBJZiBvbGQgY29va2llIGlzIG5vbi1zZXNzaW9uIGFuZCBuZXcgb25lIGlzLCB3ZSBo
YXZlIHRvIGRlbGV0ZSBpdCBmcm9tIGJhY2tpbmdzdG9yZQotICAgIC8vIElmIG5ldyBjb29raWUg
aXMgbm9uLXNlc3Npb24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRvIGJhY2tp
bmdzdG9yZQotICAgIC8vIElmIGJvdGggc2Vzc2lvbnMgYXJlIG5vbi1zZXNzaW9uLCB0aGVuIHdl
IHVwZGF0ZSBpdCBpbiB0aGUgYmFja2luZ3N0b3JlCi0KLSAgICBDb29raWVMb2coIkNvb2tpZU1h
bmFnZXIgLSB1cGRhdGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBuZXdDb29raWUtPnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBQYXJzZWRDb29raWUqIG9sZENvb2tpZSA9IHRhcmdl
dE1hcC0+dXBkYXRlQ29va2llKG5ld0Nvb2tpZSk7Ci0KLSAgICBBU1NFUlQob2xkQ29va2llKTsK
LQotICAgIGlmIChwb3N0VG9CYWNraW5nU3RvcmUgPT0gUmVtb3ZlRnJvbUJhY2tpbmdTdG9yZSkg
ewotICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9IG5ld0Nvb2tpZS0+aXNTZXNzaW9uKCk7Ci0g
ICAgICAgIGJvb2wgb2xkSXNTZXNzaW9uID0gb2xkQ29va2llLT5pc1Nlc3Npb24oKTsKLSAgICAg
ICAgaWYgKCFuZXdJc1Nlc3Npb24gJiYgIW9sZElzU2Vzc2lvbikKLSAgICAgICAgICAgIG1fY29v
a2llQmFja2luZ1N0b3JlLT51cGRhdGUobmV3Q29va2llKTsKLSAgICAgICAgZWxzZSBpZiAobmV3
SXNTZXNzaW9uICYmICFvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3QgbWFudWFs
bHkgZGVjcmVhc2UgdGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQgd2hlbgot
ICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVNYXAuCi0gICAg
ICAgICAgICByZW1vdmVkQ29va2llKCk7Ci0gICAgICAgICAgICBtX2Nvb2tpZUJhY2tpbmdTdG9y
ZS0+cmVtb3ZlKG9sZENvb2tpZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW5ld0lzU2Vzc2lvbiAm
JiBvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3QgbWFudWFsbHkgaW5jcmVhc2Ug
dGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQgd2hlbgotICAgICAgICAgICAg
Ly8gdGhlIGNvb2tpZSB3YXMgYWRkZWQgaW4gY29va2llTWFwLgotICAgICAgICAgICAgYWRkZWRD
b29raWUoKTsKLSAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5pbnNlcnQobmV3Q29v
a2llKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBkZWxldGUgb2xkQ29va2llOwotfQotCiB2b2lk
IENvb2tpZU1hbmFnZXI6OmdldEJhY2tpbmdTdG9yZUNvb2tpZXMoKQogewogICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSBjYWxsZWQganVzdCBhZnRlciBoYXZpbmcgY3JlYXRlZCB0aGUgY29v
a2llTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZU1hbmFnZXIuaAppbmRleCBiOTdiOWY5NjJkYzk1ZDU2MzJhMzg4Y2QzOTEyNzUyMzQ1NmQ5
NWZhLi5iMmFjNDM5ZDQwNDNjZmViOTZhY2JkNzMyNTFiNDJlMWIyMjcyMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaApAQCAt
MTIwLDggKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlamVjdEZvclNlY3Vy
aXR5UmVhc29uKGNvbnN0IFBhcnNlZENvb2tpZSosIGNvbnN0IEtVUkwmKTsKIAotICAgIHZvaWQg
YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiwgUGFyc2VkQ29va2llKiwgQmFja2luZ1N0b3JlUmVt
b3ZhbFBvbGljeSk7Ci0gICAgdm9pZCB1cGRhdGUoQ29va2llTWFwKiwgUGFyc2VkQ29va2llKiwg
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7CisgICAgdm9pZCBhZGRDb29raWVUb01hcChDb29r
aWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdT
dG9yZVJlbW92YWxQb2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlKTsKIAogICAgIENvb2tpZU1hcCog
ZmluZE9yQ3JlYXRlQ29va2llTWFwKENvb2tpZU1hcCogcHJvdG9jb2xNYXAsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBib29sIGZpbmRPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCmluZGV4IDRjNmQ1NDFhZGRlZmQwYWEyMjIyYjFj
NjBlMmQ2N2Q4MWEyZTIxMjIuLjY0YjMwZTRhNTJhOGE1MTZiMWI3OWIxYmRhYTU2YzY0ODhjNWQw
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
cC5jcHAKQEAgLTU0LDQ1ICs1NCwzNCBAQCBDb29raWVNYXA6On5Db29raWVNYXAoKQogICAgIGRl
bGV0ZUFsbENvb2tpZXNBbmREb21haW5zKCk7CiB9CiAKLWJvb2wgQ29va2llTWFwOjpleGlzdHND
b29raWUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpIGNvbnN0CitQYXJzZWRDb29raWUqIENv
b2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSogY29va2llKQogewotICAg
IFN0cmluZyBrZXkgPSBjb29raWUtPm5hbWUoKSArIGNvb2tpZS0+cGF0aCgpOwotICAgIHJldHVy
biBtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpOwotfQotCi12b2lkIENvb2tpZU1hcDo6YWRkQ29v
a2llKFBhcnNlZENvb2tpZSogY29va2llKQotewotICAgIFN0cmluZyBrZXkgPSBjb29raWUtPm5h
bWUoKSArIGNvb2tpZS0+cGF0aCgpOwotCiAgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBBdHRl
bXB0aW5nIHRvIGFkZCBjb29raWUgLSAlcyIsIGNvb2tpZS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgQVNTRVJUKCFtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpKTsKLSAgICBtX2Nvb2tp
ZU1hcC5hZGQoa2V5LCBjb29raWUpOworICAgIFBhcnNlZENvb2tpZSogcHJldkNvb2tpZSA9IDA7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7IGkrKykgewor
ICAgICAgICBpZiAobV9jb29raWVWZWN0b3JbaV0tPm5hbWUoKSA9PSBjb29raWUtPm5hbWUoKSAm
JiBtX2Nvb2tpZVZlY3RvcltpXS0+cGF0aCgpID09IGNvb2tpZS0+cGF0aCgpKSB7CisgICAgICAg
ICAgICBwcmV2Q29va2llID0gbV9jb29raWVWZWN0b3JbaV07CisgICAgICAgICAgICBtX2Nvb2tp
ZVZlY3RvcltpXSA9IGNvb2tpZTsKKyAgICAgICAgICAgIGlmIChwcmV2Q29va2llID09IG1fb2xk
ZXN0Q29va2llKQorICAgICAgICAgICAgICAgIHVwZGF0ZU9sZGVzdENvb2tpZSgpOworICAgICAg
ICAgICAgcmV0dXJuIHByZXZDb29raWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2Nvb2tp
ZVZlY3Rvci5hcHBlbmQoY29va2llKTsKICAgICBpZiAoIWNvb2tpZS0+aXNTZXNzaW9uKCkpCiAg
ICAgICAgIGNvb2tpZU1hbmFnZXIoKS5hZGRlZENvb2tpZSgpOwogICAgIGlmICghbV9vbGRlc3RD
b29raWUgfHwgbV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gY29va2llLT5sYXN0QWNj
ZXNzZWQoKSkKICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBjb29raWU7CisgICAgcmV0dXJuIDA7
CiB9CiAKLVBhcnNlZENvb2tpZSogQ29va2llTWFwOjp1cGRhdGVDb29raWUoUGFyc2VkQ29va2ll
KiBuZXdDb29raWUpCi17Ci0gICAgU3RyaW5nIGtleSA9IG5ld0Nvb2tpZS0+bmFtZSgpICsgbmV3
Q29va2llLT5wYXRoKCk7Ci0gICAgUGFyc2VkQ29va2llKiBvbGRDb29raWUgPSBtX2Nvb2tpZU1h
cC50YWtlKGtleSk7Ci0gICAgQVNTRVJUKG9sZENvb2tpZSk7Ci0gICAgbV9jb29raWVNYXAuYWRk
KGtleSwgbmV3Q29va2llKTsKLSAgICBpZiAob2xkQ29va2llID09IG1fb2xkZXN0Q29va2llKQot
ICAgICAgICB1cGRhdGVPbGRlc3RDb29raWUoKTsKLSAgICByZXR1cm4gb2xkQ29va2llOwotfQot
Ci1QYXJzZWRDb29raWUqIENvb2tpZU1hcDo6cmVtb3ZlQ29va2llKGNvbnN0IFBhcnNlZENvb2tp
ZSogY29va2llKQorUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZUNvb2tpZUF0SW5kZXgo
aW50IHBvc2l0aW9uLCBjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKIHsKLSAgICAvLyBGaW5k
IGEgcHJldmlvdXMgZW50cnkgZm9yIGRlbGV0aW9uCi0gICAgU3RyaW5nIGtleSA9IGNvb2tpZS0+
bmFtZSgpICsgY29va2llLT5wYXRoKCk7Ci0gICAgUGFyc2VkQ29va2llKiBwcmV2Q29va2llID0g
bV9jb29raWVNYXAudGFrZShrZXkpOwotCi0gICAgaWYgKCFwcmV2Q29va2llKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBBU1NFUlQoMCA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8IG1fY29va2ll
VmVjdG9yLnNpemUoKSk7CisgICAgUGFyc2VkQ29va2llKiBwcmV2Q29va2llID0gbV9jb29raWVW
ZWN0b3JbcG9zaXRpb25dOworICAgIG1fY29va2llVmVjdG9yLnJlbW92ZShwb3NpdGlvbik7CiAK
ICAgICBpZiAocHJldkNvb2tpZSA9PSBtX29sZGVzdENvb2tpZSkKICAgICAgICAgdXBkYXRlT2xk
ZXN0Q29va2llKCk7CkBAIC0xMDksNiArOTgsMTYgQEAgUGFyc2VkQ29va2llKiBDb29raWVNYXA6
OnJlbW92ZUNvb2tpZShjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKICAgICByZXR1cm4gcHJl
dkNvb2tpZTsKIH0KIAorUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZUNvb2tpZShjb25z
dCBQYXJzZWRDb29raWUqIGNvb2tpZSkKK3sKKyAgICBzaXplX3QgY29va2llQ291bnQgPSBtX2Nv
b2tpZVZlY3Rvci5zaXplKCk7CisgICAgZm9yIChpbnQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8
IGNvb2tpZUNvdW50OyArK3Bvc2l0aW9uKSB7CisgICAgICAgIGlmIChtX2Nvb2tpZVZlY3Rvcltw
b3NpdGlvbl0tPm5hbWUoKSA9PSBjb29raWUtPm5hbWUoKSAmJiBtX2Nvb2tpZVZlY3Rvcltwb3Np
dGlvbl0tPnBhdGgoKSA9PSBjb29raWUtPnBhdGgoKSkKKyAgICAgICAgICAgIHJldHVybiByZW1v
dmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBjb29raWUpOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKwogQ29va2llTWFwKiBDb29raWVNYXA6OmdldFN1YmRvbWFpbk1hcChjb25zdCBTdHJpbmcm
IHN1YmRvbWFpbikKIHsKICNpZiBFTkFCTEVfQ09PS0lFX0RFQlVHCkBAIC0xMjYsMTkgKzEyNSwy
MiBAQCB2b2lkIENvb2tpZU1hcDo6YWRkU3ViZG9tYWluTWFwKGNvbnN0IFN0cmluZyYgc3ViZG9t
YWluLCBDb29raWVNYXAqIG5ld0RvbWFpbikKIAogdm9pZCBDb29raWVNYXA6OmdldEFsbENvb2tp
ZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBzdGFja09mQ29va2llcykKIHsKLSAgICBDb29raWVM
b2coIkNvb2tpZU1hcCAtIEF0dGVtcHRpbmcgdG8gY29weSBNYXA6JXMgY29va2llcyB3aXRoICVk
IGNvb2tpZXMgaW50byB2ZWN0b3JzIiwgbV9uYW1lLnV0ZjgoKS5kYXRhKCksIG1fY29va2llTWFw
LnNpemUoKSk7CisgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBBdHRlbXB0aW5nIHRvIGNvcHkg
TWFwOiVzIGNvb2tpZXMgd2l0aCAlZCBjb29raWVzIGludG8gdmVjdG9ycyIsIG1fbmFtZS51dGY4
KCkuZGF0YSgpLCBtX2Nvb2tpZVZlY3Rvci5zaXplKCkpOworCisgICAgc3RhY2tPZkNvb2tpZXMt
PnJlc2VydmVDYXBhY2l0eShzdGFja09mQ29va2llcy0+c2l6ZSgpICsgbV9jb29raWVWZWN0b3Iu
c2l6ZSgpKTsKIAotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBuZXdDb29raWVzOwotICAgIGNv
cHlWYWx1ZXNUb1ZlY3RvcihtX2Nvb2tpZU1hcCwgbmV3Q29va2llcyk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdDb29raWVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIFBhcnNlZENv
b2tpZSogbmV3Q29va2llID0gbmV3Q29va2llc1tpXTsKKyAgICBpbnQgcG9zaXRpb24gPSAwOwor
ICAgIHdoaWxlIChwb3NpdGlvbiA8IG1fY29va2llVmVjdG9yLnNpemUoKSkgeworICAgICAgICBQ
YXJzZWRDb29raWUqIG5ld0Nvb2tpZSA9IG1fY29va2llVmVjdG9yW3Bvc2l0aW9uXTsKICAgICAg
ICAgaWYgKG5ld0Nvb2tpZS0+aGFzRXhwaXJlZCgpKSB7CiAgICAgICAgICAgICAvLyBOb3RpY2Ug
dGhhdCB3ZSBkb24ndCBkZWxldGUgZnJvbSBiYWNraW5nc3RvcmUuIFRoZXNlIGV4cGlyZWQgY29v
a2llcyB3aWxsIGJlCiAgICAgICAgICAgICAvLyBkZWxldGVkIHdoZW4gbWFuYWdlciBsb2FkcyB0
aGUgYmFja2luZ3N0b3JlIGFnYWluLgotICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVk
ID0gcmVtb3ZlQ29va2llKG5ld0Nvb2tpZSk7CisgICAgICAgICAgICBQYXJzZWRDb29raWUqIGV4
cGlyZWQgPSByZW1vdmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29raWUpOwogICAgICAg
ICAgICAgZGVsZXRlIGV4cGlyZWQ7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgc3RhY2tPZkNvb2tpZXMtPmFwcGVuZChuZXdDb29raWUpOworICAgICAgICAg
ICAgcG9zaXRpb24rKzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIENvb2tpZUxvZygiQ29va2ll
TWFwIC0gc3RhY2sgb2YgY29va2llcyBub3cgaGF2ZSAlZCBjb29raWVzIGluIGl0IiwgKCpzdGFj
a09mQ29va2llcykuc2l6ZSgpKTsKQEAgLTE3NywxNSArMTc5LDE2IEBAIFBhcnNlZENvb2tpZSog
Q29va2llTWFwOjpyZW1vdmVPbGRlc3RDb29raWUoKQogCiB2b2lkIENvb2tpZU1hcDo6dXBkYXRl
T2xkZXN0Q29va2llKCkKIHsKLSAgICBpZiAoIW1fY29va2llTWFwLnNpemUoKSkKKyAgICBzaXpl
X3Qgc2l6ZSA9IG1fY29va2llVmVjdG9yLnNpemUoKTsKKyAgICBpZiAoIXNpemUpIHsKICAgICAg
ICAgbV9vbGRlc3RDb29raWUgPSAwOwotICAgIGVsc2UgewotICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgUGFyc2VkQ29va2llKj46Oml0ZXJhdG9yIGl0ID0gbV9jb29raWVNYXAuYmVnaW4oKTsKLSAg
ICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+c2Vjb25kOwotICAgICAgICArK2l0OwotICAgICAg
ICBmb3IgKDsgaXQgIT0gbV9jb29raWVNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpZiAo
bV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gaXQtPnNlY29uZC0+bGFzdEFjY2Vzc2Vk
KCkpCi0gICAgICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+c2Vjb25kOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9vbGRlc3RDb29raWUgPSBtX2Nvb2tpZVZlY3Rvclsw
XTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9v
bGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gbV9jb29raWVWZWN0b3JbaV0tPmxhc3RBY2Nl
c3NlZCgpKQorICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBtX2Nvb2tpZVZlY3RvcltpXTsK
ICAgICB9CiB9CiAKQEAgLTE5Myw4ICsxOTYsOCBAQCB2b2lkIENvb2tpZU1hcDo6ZGVsZXRlQWxs
Q29va2llc0FuZERvbWFpbnMoKQogewogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3N1YmRvbWFpbnMp
OwogICAgIG1fc3ViZG9tYWlucy5jbGVhcigpOwotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Nvb2tp
ZU1hcCk7Ci0gICAgbV9jb29raWVNYXAuY2xlYXIoKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMobV9j
b29raWVWZWN0b3IpOworICAgIG1fY29va2llVmVjdG9yLmNsZWFyKCk7CiAKICAgICBtX29sZGVz
dENvb2tpZSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L0Nvb2tpZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVNYXAuaAppbmRleCA3M2JhMTNmYWNjMTRhNTE1MmVhMTM5ODg4ZTQ0NDNhOGVhMWQ3ZTA2
Li45M2IzMTY2Y2JhOWZmYjZiN2UwMWM2YjA2YzRjYzA2MjE3YTRhNjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgKQEAgLTUxLDE3ICs1MSwx
NCBAQCBwdWJsaWM6CiAgICAgQ29va2llTWFwKGNvbnN0IFN0cmluZyYgbmFtZSA9ICIiKTsKICAg
ICB+Q29va2llTWFwKCk7CiAKLSAgICB1bnNpZ25lZCBpbnQgY291bnQoKSBjb25zdCB7IHJldHVy
biBtX2Nvb2tpZU1hcC5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBpbnQgY291bnQoKSBjb25zdCB7
IHJldHVybiBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGdldE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZvaWQgYWRkQ29va2llKFBhcnNl
ZENvb2tpZSopOwotCiAgICAgLy8gUmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBjb29raWUgb2JqZWN0
IHNvIG1hbmFnZXIgY2FuIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHVwZGF0ZXMgaW4gdGhlIGRh
dGFiYXNlIHF1ZXVlLgotICAgIFBhcnNlZENvb2tpZSogdXBkYXRlQ29va2llKFBhcnNlZENvb2tp
ZSopOworICAgIFBhcnNlZENvb2tpZSogYWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSop
OwogCiAgICAgLy8gTmVlZCB0byByZXR1cm4gdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVtb3ZlZCBj
b29raWUgc28gbWFuYWdlciBjYW4gZGVhbCB3aXRoIGl0IChnYXJiYWdlIGNvbGxlY3QpLgogICAg
IFBhcnNlZENvb2tpZSogcmVtb3ZlQ29va2llKGNvbnN0IFBhcnNlZENvb2tpZSopOwotICAgIGJv
b2wgZXhpc3RzQ29va2llKGNvbnN0IFBhcnNlZENvb2tpZSopIGNvbnN0OwogCiAgICAgLy8gUmV0
dXJucyBhIG1hcCB3aXRoIHRoYXQgZ2l2ZW4gc3ViZG9tYWluLgogICAgIENvb2tpZU1hcCogZ2V0
U3ViZG9tYWluTWFwKGNvbnN0IFN0cmluZyYpOwpAQCAtNzQsMTEgKzcxLDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT2xkZXN0Q29va2llKCk7CisgICAgUGFyc2VkQ29v
a2llKiByZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbiwgY29uc3QgUGFyc2VkQ29va2ll
KiBjb29raWUpOwogCi0gICAgLy8gVGhlIGtleSBpcyB0aGUgdHVwbGUgKG5hbWUsIHBhdGgpLgot
ICAgIC8vIFRoZSBzcGVjIGFza3MgdG8gaGF2ZSBhbHNvIGRvbWFpbiwgd2hpY2ggaXMgaW1wbGll
ZCBieSBjaG9vc2luZyB0aGUgQ29va2llTWFwIHJlbGV2YW50IHRvIHRoZSBkb21haW4uCi0gICAg
SGFzaE1hcDxTdHJpbmcsIFBhcnNlZENvb2tpZSo+IG1fY29va2llTWFwOwotCisgICAgVmVjdG9y
PFBhcnNlZENvb2tpZSo+IG1fY29va2llVmVjdG9yOwogICAgIC8vIFRoZSBrZXkgaXMgYSBzdWJz
ZWN0aW9uIG9mIHRoZSBkb21haW4uCiAgICAgLy8gZXg6IGlmIGluc2VydGluZyBhY2NvdW50cy5n
b29nbGUuY29tICYgdGhpcyBjb29raWVtYXAgaXMgImNvbSIsIHRoaXMgc3ViZG9tYWluIG1hcCB3
aWxsIGNvbnRhaW4gImdvb2dsZSIKICAgICAvLyB0aGUgImdvb2dsZSIgY29va2llbWFwIHdpbGwg
Y29udGFpbiAiYWNjb3VudHMiIGluIGl0cyBzdWJkb21haW4gbWFwLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129660</attachid>
            <date>2012-03-01 01:14:00 -0800</date>
            <delta_ts>2012-03-01 20:26:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79870-20120301171357.patch</filename>
            <type>text/plain</type>
            <size>20812</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzOGQ0YTQyZGE5MmNk
ODBhYmMwMjQ4NWM1MTA4YTA1YTBmZDhmMy4uMmQwMjg0NTE3YzM3MjNhNjRhZTRiNTFjMzY1MDM1
ZDI3ZGFlMTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAzLTAxICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XUFycmF5IG9mIENvb2tpZXMgaW4gSFRUUCByZXF1ZXN0IGhlYWRlciBhcmUgbm90IGluIG9y
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4
NzAKKworICAgICAgICBTdGQ6OnNvcnQgYW5kIEhhc2hNYXAgYXJlIG5vdCBzdGFibGUuIFNvIGNv
b2tpZXMgd2l0aCB0aGUgc2FtZSBjcmVhdGluZworICAgICAgICB0aW1lIHNvbWV0aW1lcyBhcmUg
c2VudCBkaXNvcmRlci4KKyAgICAgICAgQ2hhbmdlIHN0ZDo6c29ydCB3aXRoIHN0ZDo6c3RhYmxl
LXNvcnQuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdXNpbmcgSGFzaE1hcCB0byBzYXZlIHNvIGZl
dyBjb29raWVzIGZvciBvbmUgZG9tYWluLgorICAgICAgICBJdCBpcyBhIHdhc3Qgb2YgdGltZSB0
byBjcmVhdGUgSGFzaE1hcCwgdG9vLgorICAgICAgICBTbyBjaGFuZ2UgaXQgd2l0aCB2ZWN0b3Iu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29va2llU29ydGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6Omdl
dFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6Y2hlY2tBbmRU
cmVhdENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2VyOjphZGRDb29raWVU
b01hcCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llTWFwOjphZGRPclJlcGxhY2VDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29va2llTWFwOjpyZW1vdmVDb29raWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tp
ZU1hcDo6cmVtb3ZlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llTWFwOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1h
cDo6dXBkYXRlT2xkZXN0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6ZGVs
ZXRlQWxsQ29va2llc0FuZERvbWFpbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmNvdW50KToKKyAgICAg
ICAgKENvb2tpZU1hcCk6CisKIDIwMTItMDItMjcgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWx3YXlzIG5vdGlmeSBzdWJ0cmVlIG9mIHJlbW92YWwgaW4gQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGQ3OTM4MGZkOWJjOTdjOWI5
MzE4YjViZDRiMjFiYmUzZjFlODUyNWUuLjc2MDQ2ZjM2MGRiMjE2YTA1YzdiZTAxMTY1M2ZkODE1
MmEzODZlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIENvb2tpZU1hbmFnZXI6On5D
b29raWVNYW5hZ2VyKCkKIHN0YXRpYyBib29sIGNvb2tpZVNvcnRlcihQYXJzZWRDb29raWUqIGEs
IFBhcnNlZENvb2tpZSogYikKIHsKICAgICBpZiAoYS0+cGF0aCgpLmxlbmd0aCgpID09IGItPnBh
dGgoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGEtPmNyZWF0aW9uVGltZSgpIDw9IGItPmNy
ZWF0aW9uVGltZSgpOworICAgICAgICByZXR1cm4gYS0+Y3JlYXRpb25UaW1lKCkgPCBiLT5jcmVh
dGlvblRpbWUoKTsKICAgICByZXR1cm4gYS0+cGF0aCgpLmxlbmd0aCgpID4gYi0+cGF0aCgpLmxl
bmd0aCgpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRS
YXdDb29raWVzKFZlY3RvcjxQYXJzZWRDb29raWUqPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IEsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHN0ZDo6c29ydChzdGFja09mQ29va2llcy5iZWdpbigp
LCBzdGFja09mQ29va2llcy5lbmQoKSwgY29va2llU29ydGVyKTsKKyAgICBzdGQ6OnN0YWJsZV9z
b3J0KHN0YWNrT2ZDb29raWVzLmJlZ2luKCksIHN0YWNrT2ZDb29raWVzLmVuZCgpLCBjb29raWVT
b3J0ZXIpOwogfQogCiB2b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUFsbENvb2tpZXMoQmFja2lu
Z1N0b3JlUmVtb3ZhbFBvbGljeSBiYWNraW5nU3RvcmVSZW1vdmFsKQpAQCAtMzcwLDMyICszNzAs
NTkgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKFBhcnNlZENvb2tp
ZSogY2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3QKICAgICAgICAgaWYgKHBvc3RUb0JhY2tpbmdT
dG9yZSA9PSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSkKICAgICAgICAgICAgIG1fY29va2llQmFj
a2luZ1N0b3JlLT5yZW1vdmUoY2FuZGlkYXRlQ29va2llKTsKICAgICAgICAgZWxzZSBpZiAoY3Vy
TWFwKSB7Ci0gICAgICAgICAgICBib29sIGNvb2tpZUFscmVhZHlFeGlzdHMgPSBjdXJNYXAtPmV4
aXN0c0Nvb2tpZShjYW5kaWRhdGVDb29raWUpOwotICAgICAgICAgICAgaWYgKGNvb2tpZUFscmVh
ZHlFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBl
eHBpcmVkIGNvb2tpZSBleGlzdHMgaW4gbWVtb3J5Iik7Ci0gICAgICAgICAgICAgICAgUGFyc2Vk
Q29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29raWUoY2FuZGlkYXRlQ29va2llKTsK
LSAgICAgICAgICAgICAgICAvLyBDb29raWUgaXMgdXNlbGVzcywgUmVtb3ZlIHRoZSBjb29raWUg
ZnJvbSB0aGUgYmFja2luZ3N0b3JlIGlmIGl0IGV4aXN0cwotICAgICAgICAgICAgICAgIC8vIEJh
Y2t1cCBjaGVjayBmb3IgQmFja2luZ1N0b3JlQ29va2llRW50cnkgaW5jYXNlIHNvbWVvbmUgaW5j
b3JyZWN0bHkgdXNlcyB0aGlzIGVudW0KLSAgICAgICAgICAgICAgICBpZiAocG9zdFRvQmFja2lu
Z1N0b3JlICE9IEJhY2tpbmdTdG9yZUNvb2tpZUVudHJ5ICYmICFleHBpcmVkLT5pc1Nlc3Npb24o
KSkgewotICAgICAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBleHBp
cmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9tIGRiIik7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmUoZXhwaXJlZCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOworICAgICAgICAgICAg
Ly8gUmVtb3ZlQ29va2llIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGNvb2tpZSBkb2Vzbid0IGV4aXN0
LgorICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29r
aWUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIC8vIENvb2tpZSBpcyB1c2VsZXNzLCBS
ZW1vdmUgdGhlIGNvb2tpZSBmcm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQgZXhpc3RzLgorICAg
ICAgICAgICAgLy8gQmFja3VwIGNoZWNrIGZvciBCYWNraW5nU3RvcmVDb29raWVFbnRyeSBpbmNh
c2Ugc29tZW9uZSBpbmNvcnJlY3RseSB1c2VzIHRoaXMgZW51bS4KKyAgICAgICAgICAgIGlmIChl
eHBpcmVkICYmIHBvc3RUb0JhY2tpbmdTdG9yZSAhPSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSAm
JiAhZXhwaXJlZC0+aXNTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAgICBDb29raWVMb2coIkNv
b2tpZU1hbmFnZXIgLSBleHBpcmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9t
IGRiIik7CisgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShleHBp
cmVkKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOworCiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgZGVsZXRlIGNhbmRpZGF0ZUNvb2tpZTsKICAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlQoY3VyTWFwKTsKLSAgICAgICAgYm9vbCBjb29raWVBbHJlYWR5
RXhpc3RzID0gY3VyTWFwLT5leGlzdHNDb29raWUoY2FuZGlkYXRlQ29va2llKTsKLSAgICAgICAg
aWYgKGNvb2tpZUFscmVhZHlFeGlzdHMpCi0gICAgICAgICAgICB1cGRhdGUoY3VyTWFwLCBjYW5k
aWRhdGVDb29raWUsIHBvc3RUb0JhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFkZENvb2tpZVRvTWFwKGN1ck1hcCwgY2FuZGlkYXRlQ29va2llLCBwb3N0VG9CYWNraW5n
U3RvcmUpOworICAgICAgICBhZGRDb29raWVUb01hcChjdXJNYXAsIGNhbmRpZGF0ZUNvb2tpZSwg
cG9zdFRvQmFja2luZ1N0b3JlKTsKICAgICB9CiB9CiAKIHZvaWQgQ29va2llTWFuYWdlcjo6YWRk
Q29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRl
Q29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSkKIHsK
KyAgICBQYXJzZWRDb29raWUqIHByZXZDb29raWUgPSB0YXJnZXRNYXAtPmFkZE9yUmVwbGFjZUNv
b2tpZShjYW5kaWRhdGVDb29raWUpOworICAgIGlmIChwcmV2Q29va2llKSB7CisKKyAgICAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gdXBkYXRpbmcgbmV3IGNvb2tpZSAtICVzLlxuIiwg
Y2FuZGlkYXRlQ29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIC8v
IEEgY29va2llIHdhcyByZXBsYWNlZCBpbiB0YXJnZXRNYXAuCisgICAgICAgIC8vIElmIG9sZCBj
b29raWUgaXMgbm9uLXNlc3Npb24gYW5kIG5ldyBvbmUgaXMsIHdlIGhhdmUgdG8gZGVsZXRlIGl0
IGZyb20gYmFja2luZ3N0b3JlCisgICAgICAgIC8vIElmIG5ldyBjb29raWUgaXMgbm9uLXNlc3Np
b24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRvIGJhY2tpbmdzdG9yZQorICAg
ICAgICAvLyBJZiBib3RoIHNlc3Npb25zIGFyZSBub24tc2Vzc2lvbiwgdGhlbiB3ZSB1cGRhdGUg
aXQgaW4gdGhlIGJhY2tpbmdzdG9yZQorICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9IGNhbmRp
ZGF0ZUNvb2tpZS0+aXNTZXNzaW9uKCk7CisgICAgICAgIGJvb2wgb2xkSXNTZXNzaW9uID0gcHJl
dkNvb2tpZS0+aXNTZXNzaW9uKCk7CisKKyAgICAgICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9yZSA9
PSBSZW1vdmVGcm9tQmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBpZiAoIW5ld0lzU2Vzc2lv
biAmJiAhb2xkSXNTZXNzaW9uKQorICAgICAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3Jl
LT51cGRhdGUoY2FuZGlkYXRlQ29va2llKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5ld0lzU2Vz
c2lvbiAmJiAhb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTXVzdCBtYW51YWxs
eSBkZWNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBub3QgY291bnRlZCB3aGVuCisg
ICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVWZWN0b3Iu
CisgICAgICAgICAgICAgICAgcmVtb3ZlZENvb2tpZSgpOworICAgICAgICAgICAgICAgIG1fY29v
a2llQmFja2luZ1N0b3JlLT5yZW1vdmUocHJldkNvb2tpZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFuZXdJc1Nlc3Npb24gJiYgb2xkSXNTZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8g
TXVzdCBtYW51YWxseSBpbmNyZWFzZSB0aGUgY291bnRlciBiZWNhdXNlIGl0IHdhcyBub3QgY291
bnRlZCB3aGVuCisgICAgICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgYWRkZWQgaW4gY29v
a2llVmVjdG9yLgorICAgICAgICAgICAgICAgIGFkZGVkQ29va2llKCk7CisgICAgICAgICAgICAg
ICAgbV9jb29raWVCYWNraW5nU3RvcmUtPmluc2VydChjYW5kaWRhdGVDb29raWUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBwcmV2Q29va2llOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gYWRkaW5nIG5l
dyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0ZUNvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKwogICAgIFBhcnNlZENvb2tpZSogb2xkZXN0Q29va2llID0gMDsKICAgICAvLyBDaGVj
ayBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIHRoZSBwZXIgY29va2llIGRvbWFpbiBsaW1pdC4KICAg
ICAvLyBJZiB0aGF0IGlzIG5vdCB0cnVlLCB3ZSBjaGVjayBpZiB0aGUgZ2xvYmFsIGxpbWl0IGhh
cyBiZWVuIHJlYWNoZWQgaWYgYmFja2luZ3N0b3JlIG1vZGUgaXMgb24KQEAgLTQwOCwxOCArNDM1
LDE0IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJn
ZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRlCiAgICAgLy8gICAgdGhlbiBpdCBtZWFucyB0
aGUgZ2xvYmFsIGNvdW50IHdpbGwgbmV2ZXIgZXhjZWVkIHRoZSBsaW1pdAogCiAgICAgQ29va2ll
TGltaXRMb2coIkNvb2tpZU1hbmFnZXIgLSBsb2NhbCBjb3VudDogJWQgIGdsb2JhbCBjb3VudDog
JWQiLCB0YXJnZXRNYXAtPmNvdW50KCksIG1fY291bnQpOwotICAgIGlmICh0YXJnZXRNYXAtPmNv
dW50KCkgPj0gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKKyAgICBpZiAodGFyZ2V0TWFwLT5j
b3VudCgpID4gc19tYXhDb29raWVDb3VudFBlckhvc3QpIHsKICAgICAgICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gZGVsZXRpbmcgb2xkZXN0IGNvb2tpZSBmcm9tIHRoaXMgbWFwIGR1ZSB0
byBkb21haW4gY291bnQuXG4iKTsKICAgICAgICAgb2xkZXN0Q29va2llID0gdGFyZ2V0TWFwLT5y
ZW1vdmVPbGRlc3RDb29raWUoKTsKLSAgICB9IGVsc2UgaWYgKG1fY291bnQgPj0gc19nbG9iYWxN
YXhDb29raWVDb3VudCAmJiAocG9zdFRvQmFja2luZ1N0b3JlICE9IERvTm90UmVtb3ZlRnJvbUJh
Y2tpbmdTdG9yZSkpIHsKKyAgICB9IGVsc2UgaWYgKG1fY291bnQgPiBzX2dsb2JhbE1heENvb2tp
ZUNvdW50ICYmIChwb3N0VG9CYWNraW5nU3RvcmUgIT0gRG9Ob3RSZW1vdmVGcm9tQmFja2luZ1N0
b3JlKSkgewogICAgICAgICBDb29raWVMaW1pdExvZygiQ29va2llTWFuYWdlciAtIEdsb2JhbCBs
aW1pdCByZWFjaGVkLCBpbml0aWF0ZSBjb29raWUgbGltaXQgY2xlYW4gdXAuIik7CiAgICAgICAg
IGluaXRpYXRlQ29va2llTGltaXRDbGVhblVwKCk7CiAgICAgfQogCi0gICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gYWRkaW5nIG5ldyBjb29raWUgLSAlcy5cbiIsIGNhbmRpZGF0ZUNvb2tp
ZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIHRhcmdldE1hcC0+YWRkQ29va2ll
KGNhbmRpZGF0ZUNvb2tpZSk7Ci0KICAgICAvLyBPbmx5IGFkZCBub24gc2Vzc2lvbiBjb29raWUg
dG8gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgaWYgKHBvc3RUb0JhY2tpbmdTdG9yZSA9PSBSZW1v
dmVGcm9tQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIGlmIChvbGRlc3RDb29raWUgJiYgIW9sZGVz
dENvb2tpZS0+aXNTZXNzaW9uKCkpIHsKQEAgLTQzMywzOCArNDU2LDYgQEAgdm9pZCBDb29raWVN
YW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2ll
KiBjYW5kaWRhdGUKICAgICAgICAgZGVsZXRlIG9sZGVzdENvb2tpZTsKIH0KIAotdm9pZCBDb29r
aWVNYW5hZ2VyOjp1cGRhdGUoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogbmV3
Q29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSkKLXsK
LSAgICAvLyBJZiBvbGQgY29va2llIGlzIG5vbi1zZXNzaW9uIGFuZCBuZXcgb25lIGlzLCB3ZSBo
YXZlIHRvIGRlbGV0ZSBpdCBmcm9tIGJhY2tpbmdzdG9yZQotICAgIC8vIElmIG5ldyBjb29raWUg
aXMgbm9uLXNlc3Npb24gYW5kIG9sZCBvbmUgaXMsIHdlIGhhdmUgdG8gYWRkIGl0IHRvIGJhY2tp
bmdzdG9yZQotICAgIC8vIElmIGJvdGggc2Vzc2lvbnMgYXJlIG5vbi1zZXNzaW9uLCB0aGVuIHdl
IHVwZGF0ZSBpdCBpbiB0aGUgYmFja2luZ3N0b3JlCi0KLSAgICBDb29raWVMb2coIkNvb2tpZU1h
bmFnZXIgLSB1cGRhdGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBuZXdDb29raWUtPnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBQYXJzZWRDb29raWUqIG9sZENvb2tpZSA9IHRhcmdl
dE1hcC0+dXBkYXRlQ29va2llKG5ld0Nvb2tpZSk7Ci0KLSAgICBBU1NFUlQob2xkQ29va2llKTsK
LQotICAgIGlmIChwb3N0VG9CYWNraW5nU3RvcmUgPT0gUmVtb3ZlRnJvbUJhY2tpbmdTdG9yZSkg
ewotICAgICAgICBib29sIG5ld0lzU2Vzc2lvbiA9IG5ld0Nvb2tpZS0+aXNTZXNzaW9uKCk7Ci0g
ICAgICAgIGJvb2wgb2xkSXNTZXNzaW9uID0gb2xkQ29va2llLT5pc1Nlc3Npb24oKTsKLSAgICAg
ICAgaWYgKCFuZXdJc1Nlc3Npb24gJiYgIW9sZElzU2Vzc2lvbikKLSAgICAgICAgICAgIG1fY29v
a2llQmFja2luZ1N0b3JlLT51cGRhdGUobmV3Q29va2llKTsKLSAgICAgICAgZWxzZSBpZiAobmV3
SXNTZXNzaW9uICYmICFvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3QgbWFudWFs
bHkgZGVjcmVhc2UgdGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQgd2hlbgot
ICAgICAgICAgICAgLy8gdGhlIGNvb2tpZSB3YXMgcmVtb3ZlZCBpbiBjb29raWVNYXAuCi0gICAg
ICAgICAgICByZW1vdmVkQ29va2llKCk7Ci0gICAgICAgICAgICBtX2Nvb2tpZUJhY2tpbmdTdG9y
ZS0+cmVtb3ZlKG9sZENvb2tpZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW5ld0lzU2Vzc2lvbiAm
JiBvbGRJc1Nlc3Npb24pIHsKLSAgICAgICAgICAgIC8vIE11c3QgbWFudWFsbHkgaW5jcmVhc2Ug
dGhlIGNvdW50ZXIgYmVjYXVzZSBpdCB3YXMgbm90IGNvdW50ZWQgd2hlbgotICAgICAgICAgICAg
Ly8gdGhlIGNvb2tpZSB3YXMgYWRkZWQgaW4gY29va2llTWFwLgotICAgICAgICAgICAgYWRkZWRD
b29raWUoKTsKLSAgICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5pbnNlcnQobmV3Q29v
a2llKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBkZWxldGUgb2xkQ29va2llOwotfQotCiB2b2lk
IENvb2tpZU1hbmFnZXI6OmdldEJhY2tpbmdTdG9yZUNvb2tpZXMoKQogewogICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSBjYWxsZWQganVzdCBhZnRlciBoYXZpbmcgY3JlYXRlZCB0aGUgY29v
a2llTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZU1hbmFnZXIuaAppbmRleCBiOTdiOWY5NjJkYzk1ZDU2MzJhMzg4Y2QzOTEyNzUyMzQ1NmQ5
NWZhLi5iMmFjNDM5ZDQwNDNjZmViOTZhY2JkNzMyNTFiNDJlMWIyMjcyMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaApAQCAt
MTIwLDggKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlamVjdEZvclNlY3Vy
aXR5UmVhc29uKGNvbnN0IFBhcnNlZENvb2tpZSosIGNvbnN0IEtVUkwmKTsKIAotICAgIHZvaWQg
YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiwgUGFyc2VkQ29va2llKiwgQmFja2luZ1N0b3JlUmVt
b3ZhbFBvbGljeSk7Ci0gICAgdm9pZCB1cGRhdGUoQ29va2llTWFwKiwgUGFyc2VkQ29va2llKiwg
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7CisgICAgdm9pZCBhZGRDb29raWVUb01hcChDb29r
aWVNYXAqIHRhcmdldE1hcCwgUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdT
dG9yZVJlbW92YWxQb2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlKTsKIAogICAgIENvb2tpZU1hcCog
ZmluZE9yQ3JlYXRlQ29va2llTWFwKENvb2tpZU1hcCogcHJvdG9jb2xNYXAsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBib29sIGZpbmRPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCmluZGV4IDRjNmQ1NDFhZGRlZmQwYWEyMjIyYjFj
NjBlMmQ2N2Q4MWEyZTIxMjIuLjY0YjMwZTRhNTJhOGE1MTZiMWI3OWIxYmRhYTU2YzY0ODhjNWQw
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
cC5jcHAKQEAgLTU0LDQ1ICs1NCwzNCBAQCBDb29raWVNYXA6On5Db29raWVNYXAoKQogICAgIGRl
bGV0ZUFsbENvb2tpZXNBbmREb21haW5zKCk7CiB9CiAKLWJvb2wgQ29va2llTWFwOjpleGlzdHND
b29raWUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpIGNvbnN0CitQYXJzZWRDb29raWUqIENv
b2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSogY29va2llKQogewotICAg
IFN0cmluZyBrZXkgPSBjb29raWUtPm5hbWUoKSArIGNvb2tpZS0+cGF0aCgpOwotICAgIHJldHVy
biBtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpOwotfQotCi12b2lkIENvb2tpZU1hcDo6YWRkQ29v
a2llKFBhcnNlZENvb2tpZSogY29va2llKQotewotICAgIFN0cmluZyBrZXkgPSBjb29raWUtPm5h
bWUoKSArIGNvb2tpZS0+cGF0aCgpOwotCiAgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBBdHRl
bXB0aW5nIHRvIGFkZCBjb29raWUgLSAlcyIsIGNvb2tpZS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgQVNTRVJUKCFtX2Nvb2tpZU1hcC5jb250YWlucyhrZXkpKTsKLSAgICBtX2Nvb2tp
ZU1hcC5hZGQoa2V5LCBjb29raWUpOworICAgIFBhcnNlZENvb2tpZSogcHJldkNvb2tpZSA9IDA7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7IGkrKykgewor
ICAgICAgICBpZiAobV9jb29raWVWZWN0b3JbaV0tPm5hbWUoKSA9PSBjb29raWUtPm5hbWUoKSAm
JiBtX2Nvb2tpZVZlY3RvcltpXS0+cGF0aCgpID09IGNvb2tpZS0+cGF0aCgpKSB7CisgICAgICAg
ICAgICBwcmV2Q29va2llID0gbV9jb29raWVWZWN0b3JbaV07CisgICAgICAgICAgICBtX2Nvb2tp
ZVZlY3RvcltpXSA9IGNvb2tpZTsKKyAgICAgICAgICAgIGlmIChwcmV2Q29va2llID09IG1fb2xk
ZXN0Q29va2llKQorICAgICAgICAgICAgICAgIHVwZGF0ZU9sZGVzdENvb2tpZSgpOworICAgICAg
ICAgICAgcmV0dXJuIHByZXZDb29raWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2Nvb2tp
ZVZlY3Rvci5hcHBlbmQoY29va2llKTsKICAgICBpZiAoIWNvb2tpZS0+aXNTZXNzaW9uKCkpCiAg
ICAgICAgIGNvb2tpZU1hbmFnZXIoKS5hZGRlZENvb2tpZSgpOwogICAgIGlmICghbV9vbGRlc3RD
b29raWUgfHwgbV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gY29va2llLT5sYXN0QWNj
ZXNzZWQoKSkKICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBjb29raWU7CisgICAgcmV0dXJuIDA7
CiB9CiAKLVBhcnNlZENvb2tpZSogQ29va2llTWFwOjp1cGRhdGVDb29raWUoUGFyc2VkQ29va2ll
KiBuZXdDb29raWUpCi17Ci0gICAgU3RyaW5nIGtleSA9IG5ld0Nvb2tpZS0+bmFtZSgpICsgbmV3
Q29va2llLT5wYXRoKCk7Ci0gICAgUGFyc2VkQ29va2llKiBvbGRDb29raWUgPSBtX2Nvb2tpZU1h
cC50YWtlKGtleSk7Ci0gICAgQVNTRVJUKG9sZENvb2tpZSk7Ci0gICAgbV9jb29raWVNYXAuYWRk
KGtleSwgbmV3Q29va2llKTsKLSAgICBpZiAob2xkQ29va2llID09IG1fb2xkZXN0Q29va2llKQot
ICAgICAgICB1cGRhdGVPbGRlc3RDb29raWUoKTsKLSAgICByZXR1cm4gb2xkQ29va2llOwotfQot
Ci1QYXJzZWRDb29raWUqIENvb2tpZU1hcDo6cmVtb3ZlQ29va2llKGNvbnN0IFBhcnNlZENvb2tp
ZSogY29va2llKQorUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZUNvb2tpZUF0SW5kZXgo
aW50IHBvc2l0aW9uLCBjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKIHsKLSAgICAvLyBGaW5k
IGEgcHJldmlvdXMgZW50cnkgZm9yIGRlbGV0aW9uCi0gICAgU3RyaW5nIGtleSA9IGNvb2tpZS0+
bmFtZSgpICsgY29va2llLT5wYXRoKCk7Ci0gICAgUGFyc2VkQ29va2llKiBwcmV2Q29va2llID0g
bV9jb29raWVNYXAudGFrZShrZXkpOwotCi0gICAgaWYgKCFwcmV2Q29va2llKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBBU1NFUlQoMCA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8IG1fY29va2ll
VmVjdG9yLnNpemUoKSk7CisgICAgUGFyc2VkQ29va2llKiBwcmV2Q29va2llID0gbV9jb29raWVW
ZWN0b3JbcG9zaXRpb25dOworICAgIG1fY29va2llVmVjdG9yLnJlbW92ZShwb3NpdGlvbik7CiAK
ICAgICBpZiAocHJldkNvb2tpZSA9PSBtX29sZGVzdENvb2tpZSkKICAgICAgICAgdXBkYXRlT2xk
ZXN0Q29va2llKCk7CkBAIC0xMDksNiArOTgsMTYgQEAgUGFyc2VkQ29va2llKiBDb29raWVNYXA6
OnJlbW92ZUNvb2tpZShjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKICAgICByZXR1cm4gcHJl
dkNvb2tpZTsKIH0KIAorUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZUNvb2tpZShjb25z
dCBQYXJzZWRDb29raWUqIGNvb2tpZSkKK3sKKyAgICBzaXplX3QgY29va2llQ291bnQgPSBtX2Nv
b2tpZVZlY3Rvci5zaXplKCk7CisgICAgZm9yIChpbnQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8
IGNvb2tpZUNvdW50OyArK3Bvc2l0aW9uKSB7CisgICAgICAgIGlmIChtX2Nvb2tpZVZlY3Rvcltw
b3NpdGlvbl0tPm5hbWUoKSA9PSBjb29raWUtPm5hbWUoKSAmJiBtX2Nvb2tpZVZlY3Rvcltwb3Np
dGlvbl0tPnBhdGgoKSA9PSBjb29raWUtPnBhdGgoKSkKKyAgICAgICAgICAgIHJldHVybiByZW1v
dmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBjb29raWUpOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKwogQ29va2llTWFwKiBDb29raWVNYXA6OmdldFN1YmRvbWFpbk1hcChjb25zdCBTdHJpbmcm
IHN1YmRvbWFpbikKIHsKICNpZiBFTkFCTEVfQ09PS0lFX0RFQlVHCkBAIC0xMjYsMTkgKzEyNSwy
MiBAQCB2b2lkIENvb2tpZU1hcDo6YWRkU3ViZG9tYWluTWFwKGNvbnN0IFN0cmluZyYgc3ViZG9t
YWluLCBDb29raWVNYXAqIG5ld0RvbWFpbikKIAogdm9pZCBDb29raWVNYXA6OmdldEFsbENvb2tp
ZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBzdGFja09mQ29va2llcykKIHsKLSAgICBDb29raWVM
b2coIkNvb2tpZU1hcCAtIEF0dGVtcHRpbmcgdG8gY29weSBNYXA6JXMgY29va2llcyB3aXRoICVk
IGNvb2tpZXMgaW50byB2ZWN0b3JzIiwgbV9uYW1lLnV0ZjgoKS5kYXRhKCksIG1fY29va2llTWFw
LnNpemUoKSk7CisgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBBdHRlbXB0aW5nIHRvIGNvcHkg
TWFwOiVzIGNvb2tpZXMgd2l0aCAlZCBjb29raWVzIGludG8gdmVjdG9ycyIsIG1fbmFtZS51dGY4
KCkuZGF0YSgpLCBtX2Nvb2tpZVZlY3Rvci5zaXplKCkpOworCisgICAgc3RhY2tPZkNvb2tpZXMt
PnJlc2VydmVDYXBhY2l0eShzdGFja09mQ29va2llcy0+c2l6ZSgpICsgbV9jb29raWVWZWN0b3Iu
c2l6ZSgpKTsKIAotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBuZXdDb29raWVzOwotICAgIGNv
cHlWYWx1ZXNUb1ZlY3RvcihtX2Nvb2tpZU1hcCwgbmV3Q29va2llcyk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdDb29raWVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIFBhcnNlZENv
b2tpZSogbmV3Q29va2llID0gbmV3Q29va2llc1tpXTsKKyAgICBpbnQgcG9zaXRpb24gPSAwOwor
ICAgIHdoaWxlIChwb3NpdGlvbiA8IG1fY29va2llVmVjdG9yLnNpemUoKSkgeworICAgICAgICBQ
YXJzZWRDb29raWUqIG5ld0Nvb2tpZSA9IG1fY29va2llVmVjdG9yW3Bvc2l0aW9uXTsKICAgICAg
ICAgaWYgKG5ld0Nvb2tpZS0+aGFzRXhwaXJlZCgpKSB7CiAgICAgICAgICAgICAvLyBOb3RpY2Ug
dGhhdCB3ZSBkb24ndCBkZWxldGUgZnJvbSBiYWNraW5nc3RvcmUuIFRoZXNlIGV4cGlyZWQgY29v
a2llcyB3aWxsIGJlCiAgICAgICAgICAgICAvLyBkZWxldGVkIHdoZW4gbWFuYWdlciBsb2FkcyB0
aGUgYmFja2luZ3N0b3JlIGFnYWluLgotICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVk
ID0gcmVtb3ZlQ29va2llKG5ld0Nvb2tpZSk7CisgICAgICAgICAgICBQYXJzZWRDb29raWUqIGV4
cGlyZWQgPSByZW1vdmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29raWUpOwogICAgICAg
ICAgICAgZGVsZXRlIGV4cGlyZWQ7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgc3RhY2tPZkNvb2tpZXMtPmFwcGVuZChuZXdDb29raWUpOworICAgICAgICAg
ICAgcG9zaXRpb24rKzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIENvb2tpZUxvZygiQ29va2ll
TWFwIC0gc3RhY2sgb2YgY29va2llcyBub3cgaGF2ZSAlZCBjb29raWVzIGluIGl0IiwgKCpzdGFj
a09mQ29va2llcykuc2l6ZSgpKTsKQEAgLTE3NywxNSArMTc5LDE2IEBAIFBhcnNlZENvb2tpZSog
Q29va2llTWFwOjpyZW1vdmVPbGRlc3RDb29raWUoKQogCiB2b2lkIENvb2tpZU1hcDo6dXBkYXRl
T2xkZXN0Q29va2llKCkKIHsKLSAgICBpZiAoIW1fY29va2llTWFwLnNpemUoKSkKKyAgICBzaXpl
X3Qgc2l6ZSA9IG1fY29va2llVmVjdG9yLnNpemUoKTsKKyAgICBpZiAoIXNpemUpIHsKICAgICAg
ICAgbV9vbGRlc3RDb29raWUgPSAwOwotICAgIGVsc2UgewotICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgUGFyc2VkQ29va2llKj46Oml0ZXJhdG9yIGl0ID0gbV9jb29raWVNYXAuYmVnaW4oKTsKLSAg
ICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+c2Vjb25kOwotICAgICAgICArK2l0OwotICAgICAg
ICBmb3IgKDsgaXQgIT0gbV9jb29raWVNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpZiAo
bV9vbGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gaXQtPnNlY29uZC0+bGFzdEFjY2Vzc2Vk
KCkpCi0gICAgICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBpdC0+c2Vjb25kOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9vbGRlc3RDb29raWUgPSBtX2Nvb2tpZVZlY3Rvclsw
XTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9v
bGRlc3RDb29raWUtPmxhc3RBY2Nlc3NlZCgpID4gbV9jb29raWVWZWN0b3JbaV0tPmxhc3RBY2Nl
c3NlZCgpKQorICAgICAgICAgICAgbV9vbGRlc3RDb29raWUgPSBtX2Nvb2tpZVZlY3RvcltpXTsK
ICAgICB9CiB9CiAKQEAgLTE5Myw4ICsxOTYsOCBAQCB2b2lkIENvb2tpZU1hcDo6ZGVsZXRlQWxs
Q29va2llc0FuZERvbWFpbnMoKQogewogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3N1YmRvbWFpbnMp
OwogICAgIG1fc3ViZG9tYWlucy5jbGVhcigpOwotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Nvb2tp
ZU1hcCk7Ci0gICAgbV9jb29raWVNYXAuY2xlYXIoKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMobV9j
b29raWVWZWN0b3IpOworICAgIG1fY29va2llVmVjdG9yLmNsZWFyKCk7CiAKICAgICBtX29sZGVz
dENvb2tpZSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L0Nvb2tpZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVNYXAuaAppbmRleCA3M2JhMTNmYWNjMTRhNTE1MmVhMTM5ODg4ZTQ0NDNhOGVhMWQ3ZTA2
Li44Njk2ODU3NmQ2MDAyZWRlYjE0ZjJiMDFjYjA2YTVkNTFhZjE5MGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgKQEAgLTUxLDE3ICs1MSwx
NCBAQCBwdWJsaWM6CiAgICAgQ29va2llTWFwKGNvbnN0IFN0cmluZyYgbmFtZSA9ICIiKTsKICAg
ICB+Q29va2llTWFwKCk7CiAKLSAgICB1bnNpZ25lZCBpbnQgY291bnQoKSBjb25zdCB7IHJldHVy
biBtX2Nvb2tpZU1hcC5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBpbnQgY291bnQoKSBjb25zdCB7
IHJldHVybiBtX2Nvb2tpZVZlY3Rvci5zaXplKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGdldE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZvaWQgYWRkQ29va2llKFBhcnNl
ZENvb2tpZSopOwotCiAgICAgLy8gUmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBjb29raWUgb2JqZWN0
IHNvIG1hbmFnZXIgY2FuIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHVwZGF0ZXMgaW4gdGhlIGRh
dGFiYXNlIHF1ZXVlLgotICAgIFBhcnNlZENvb2tpZSogdXBkYXRlQ29va2llKFBhcnNlZENvb2tp
ZSopOworICAgIFBhcnNlZENvb2tpZSogYWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSop
OwogCiAgICAgLy8gTmVlZCB0byByZXR1cm4gdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVtb3ZlZCBj
b29raWUgc28gbWFuYWdlciBjYW4gZGVhbCB3aXRoIGl0IChnYXJiYWdlIGNvbGxlY3QpLgogICAg
IFBhcnNlZENvb2tpZSogcmVtb3ZlQ29va2llKGNvbnN0IFBhcnNlZENvb2tpZSopOwotICAgIGJv
b2wgZXhpc3RzQ29va2llKGNvbnN0IFBhcnNlZENvb2tpZSopIGNvbnN0OwogCiAgICAgLy8gUmV0
dXJucyBhIG1hcCB3aXRoIHRoYXQgZ2l2ZW4gc3ViZG9tYWluLgogICAgIENvb2tpZU1hcCogZ2V0
U3ViZG9tYWluTWFwKGNvbnN0IFN0cmluZyYpOwpAQCAtNzQsMTEgKzcxLDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT2xkZXN0Q29va2llKCk7CisgICAgUGFyc2VkQ29v
a2llKiByZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbiwgY29uc3QgUGFyc2VkQ29va2ll
Kik7CiAKLSAgICAvLyBUaGUga2V5IGlzIHRoZSB0dXBsZSAobmFtZSwgcGF0aCkuCi0gICAgLy8g
VGhlIHNwZWMgYXNrcyB0byBoYXZlIGFsc28gZG9tYWluLCB3aGljaCBpcyBpbXBsaWVkIGJ5IGNo
b29zaW5nIHRoZSBDb29raWVNYXAgcmVsZXZhbnQgdG8gdGhlIGRvbWFpbi4KLSAgICBIYXNoTWFw
PFN0cmluZywgUGFyc2VkQ29va2llKj4gbV9jb29raWVNYXA7Ci0KKyAgICBWZWN0b3I8UGFyc2Vk
Q29va2llKj4gbV9jb29raWVWZWN0b3I7CiAgICAgLy8gVGhlIGtleSBpcyBhIHN1YnNlY3Rpb24g
b2YgdGhlIGRvbWFpbi4KICAgICAvLyBleDogaWYgaW5zZXJ0aW5nIGFjY291bnRzLmdvb2dsZS5j
b20gJiB0aGlzIGNvb2tpZW1hcCBpcyAiY29tIiwgdGhpcyBzdWJkb21haW4gbWFwIHdpbGwgY29u
dGFpbiAiZ29vZ2xlIgogICAgIC8vIHRoZSAiZ29vZ2xlIiBjb29raWVtYXAgd2lsbCBjb250YWlu
ICJhY2NvdW50cyIgaW4gaXRzIHN1YmRvbWFpbiBtYXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29v
a2llcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NThjMjc5YTcxZjhhNTljOTYzYTllN2Qx
NmJkYmFjMTAzZDVkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1RoaXMgdGVzdCBjYXNlIHRvIHNldCBhIEFycmF5IG9mIENvb2tpZSBzaXplIG9mIDMg
YW5kIGNoZWNrIGlmIGl0J3MgYmVlbiBjb3JyZWN0bHkgc2V0IGFuZCBpbiBvcmRlci4KK0lmIHRo
ZSBUZXN0IGNhc2Ugd2FzIHN1Y2Nlc3NmdWwsIFRoZW4gaXQgc2hvdWxkIHByaW50IFBhc3NlZCBi
ZWxvdyEhCisKKworUGFzc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1yZXN1bHQucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNvb2tpZXMtcmVzdWx0LnBocApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZTRhNmE1NDk2NzkyYzFmZmMzYTc3NmU2MDNhZDNmN2I5ZTgwY2IyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9z
ZXRBcnJheWNvb2tpZXMtcmVzdWx0LnBocApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4NCis8aGVh
ZD4NCis8c2NyaXB0Pg0KKyAgICBmdW5jdGlvbiBydW4oKXsNCisgICAgICAgIC8vIFJlYWRpbmcg
dGhlIENvb2lrZXMgdXNpbmcgUEhQDQorICAgICAgICB2YXIgY29va2llID0gIjw/cGhwIGlmIChp
c3NldCgkX0NPT0tJRVsnc2V0QXJyYXljb29raWUnXSkpIHsNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcmVhY2ggKCRfQ09PS0lFWydzZXRBcnJheWNvb2tpZSddIGFzICRuYW1l
ID0+ICR2YWx1ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1l
ID0gaHRtbHNwZWNpYWxjaGFycygkbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpOw0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiRuYW1lIDogJHZhbHVlIjsNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisJCSAgICAgICAgICAgIH0gDQorICAgICAgICAg
ICAgICAgICAgICAgPz4iOw0KKw0KKyAgICAgICAgdmFyIHN0YXR1cyA9ICJGYWlsIjsNCisgICAg
ICAgIGlmIChjb29raWUgPT0gInRocmVlIDogY29va2lldGhyZWV0d28gOiBjb29raWV0d29vbmUg
OiBjb29raWVvbmUiKSB7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QiKS5pbm5lckhUTUwgPSAiPGI+UGFzc2VkPC9iPiI7DQorICAgICAgICAgICAgc3RhdHVzID0g
IlBhc3MiOw0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKS5pbm5lckhUTUwgPSAiPGI+RmFpbGVkPC9iPiI7ICAgIA0KKyAgICB9DQor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgb25s
b2FkPSJydW4oKSI+DQorPHA+VGhpcyB0ZXN0IGNhc2UgdG8gc2V0IGEgQXJyYXkgb2YgQ29va2ll
IHNpemUgb2YgMyBhbmQgY2hlY2sgaWYgaXQncyBiZWVuIGNvcnJlY3RseSBzZXQgYW5kIGluIG9y
ZGVyLjxiciAvPklmIHRoZSBUZXN0IGNhc2Ugd2FzIHN1Y2Nlc3NmdWwsIFRoZW4gaXQgc2hvdWxk
IHByaW50IFBhc3NlZCBiZWxvdyEhIDwvcD48YnIvPg0KKzxkaXYgaWQ9InRlc3QiPg0KK05vdCBX
b3JraW5nISENCis8L2Rpdj4NCis8L2JvZHk+DQorPC9odG1sPg0KKw0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29raWVzLnBo
cCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0QXJyYXljb29r
aWVzLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NTM3ODRjNjgyMDQ5Y2NkNTAyNGNjZTIwZGRlOWM2YWY4ZDY3
NmNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jl
c291cmNlcy9zZXRBcnJheWNvb2tpZXMucGhwCkBAIC0wLDAgKzEsOCBAQAorPD9waHAgDQorLy8g
U2V0dGluZyBBcnJheSBvZiBjb29raWVzDQorc2V0Y29va2llKCJzZXRBcnJheWNvb2tpZVt0aHJl
ZV0iLCAiY29va2lldGhyZWUiKTsNCitzZXRjb29raWUoInNldEFycmF5Y29va2llW3R3b10iLCAi
Y29va2lldHdvIik7DQorc2V0Y29va2llKCJzZXRBcnJheWNvb2tpZVtvbmVdIiwgImNvb2tpZW9u
ZSIpOw0KK2hlYWRlcignTG9jYXRpb246IHNldEFycmF5Y29va2llcy1yZXN1bHQucGhwJyk7DQor
Pz4NCisNCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>