<?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>32160</bug_id>
          
          <creation_ts>2009-12-04 08:22:15 -0800</creation_ts>
          <short_desc>Web Inspector: Allow retrieval of all transmitted cookies</short_desc>
          <delta_ts>2009-12-08 05:21:17 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32223</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168778</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-04 08:22:15 -0800</bug_when>
    <thetext>Currently there is no way to retrieve all cookies in Web Inspector, which is required for audits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168786</commentid>
    <comment_count>1</comment_count>
      <attachid>44318</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-04 09:02:34 -0800</bug_when>
    <thetext>Created attachment 44318
patch

The approach has been discussed with pfeldman@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168788</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-04 09:07:09 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44318 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168870</commentid>
    <comment_count>3</comment_count>
      <attachid>44318</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-04 12:16:51 -0800</bug_when>
    <thetext>Comment on attachment 44318
patch

&gt; +        for (var c = 0; c &lt; allCookies.length; ++c) {

c is a strange index name.

&gt; +            for (var id in WebInspector.resources) {
&gt; +                var resource = WebInspector.resources[id];
&gt; +                var match = resource.documentURL.match(WebInspector.URLRegExp);

You don&apos;t need to do matching numCookeis x numResources times. It is easier to go though resources and store their domains into a set first (numResources steps), then you can get all cookies for given frame within numCookies x numDomains steps.

&gt;  
&gt; +WebInspector.Cookies.cookieMatchesResourceURL = function(cookie, resourceURL)
&gt; +{

I don&apos;t see this method used.

&gt; +
&gt; +WebInspector.Cookies.cookieDomainMatchesResourceDomain = function(cookieDomain, resourceDomain)
&gt; +{
&gt; +    if (cookieDomain.charAt(0) !== &apos;.&apos;)
&gt; +        return resourceDomain === cookieDomain;
&gt; +    return !!resourceDomain.match(new RegExp(&quot;^([^\\.]+\\.)?&quot; + cookieDomain.substring(1).escapeForRegExp() + &quot;$&quot;), &quot;i&quot;);

A test for this would be nice. You need to do a inspector test that would match a bunch of URLs against given domain on the frontend side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169328</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-07 08:01:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 44318 [details])
&gt; &gt; +        for (var c = 0; c &lt; allCookies.length; ++c) {
&gt; 
&gt; c is a strange index name.

i now

&gt; &gt; +            for (var id in WebInspector.resources) {
&gt; &gt; +                var resource = WebInspector.resources[id];
&gt; &gt; +                var match = resource.documentURL.match(WebInspector.URLRegExp);
&gt; 
&gt; You don&apos;t need to do matching numCookeis x numResources times. It is easier to
&gt; go though resources and store their domains into a set first (numResources
&gt; steps), then you can get all cookies for given frame within numCookies x
&gt; numDomains steps.

We should store full URLs rather than domains (since the cookies are matched using the protocol, hostname, port, and path.) I have changed the impl, so we can gain some benefit when there are several cookie domains in the page.

&gt; &gt;  
&gt; &gt; +WebInspector.Cookies.cookieMatchesResourceURL = function(cookie, resourceURL)
&gt; &gt; +{
&gt; 
&gt; I don&apos;t see this method used.

Thanks for the catch. For some reason I was invoking domain matching rather than full matching.

&gt; &gt; +
&gt; &gt; +WebInspector.Cookies.cookieDomainMatchesResourceDomain = function(cookieDomain, resourceDomain)
&gt; &gt; +{
&gt; &gt; +    if (cookieDomain.charAt(0) !== &apos;.&apos;)
&gt; &gt; +        return resourceDomain === cookieDomain;
&gt; &gt; +    return !!resourceDomain.match(new RegExp(&quot;^([^\\.]+\\.)?&quot; + cookieDomain.substring(1).escapeForRegExp() + &quot;$&quot;), &quot;i&quot;);
&gt; 
&gt; A test for this would be nice. You need to do a inspector test that would match
&gt; a bunch of URLs against given domain on the frontend side.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169329</commentid>
    <comment_count>5</comment_count>
      <attachid>44417</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-07 08:02:15 -0800</bug_when>
    <thetext>Created attachment 44417
patch (fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169330</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-07 08:05:00 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44417 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169382</commentid>
    <comment_count>7</comment_count>
      <attachid>44421</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-07 10:51:26 -0800</bug_when>
    <thetext>Created attachment 44421
patch (add comment + use match group)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169383</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-07 10:52:44 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44421 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169646</commentid>
    <comment_count>9</comment_count>
      <attachid>44467</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-12-08 05:02:46 -0800</bug_when>
    <thetext>Created attachment 44467
patch (test cleanup)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169647</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 05:05:04 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44467 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169649</commentid>
    <comment_count>11</comment_count>
      <attachid>44467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-08 05:21:11 -0800</bug_when>
    <thetext>Comment on attachment 44467
patch (test cleanup)

Clearing flags on attachment: 44467

Committed r51846: &lt;http://trac.webkit.org/changeset/51846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169650</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-08 05:21:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44318</attachid>
            <date>2009-12-04 09:02:34 -0800</date>
            <delta_ts>2009-12-07 08:02:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cookies.patch</filename>
            <type>text/plain</type>
            <size>13413</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2RjMGIwMy4uMjc2MWY1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0wNCAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgd2F5IGNvb2tpZXMgYXJlIHJldHJpZXZl
ZCBpbiB0aGUgV2ViSW5zcGVjdG9yIGZyb250ZW5kLgorCisgICAgICAgIE1vdmVkIHRoZSBjb29r
aWUgZmlsdGVyaW5nIGZyb20gdGhlIG5hdGl2ZSBjb2RlIGludG8gdGhlIGZyb250ZW5kIHNvIHRo
YXQKKyAgICAgICAgYWxsIGNvb2tpZXMgY2FuIGJlIHJldHJpZXZlZCByZWdhcmRsZXNzIG9mIHRo
ZSBhc3NvY2lhdGVkIGRvbWFpbgorICAgICAgICAocmVxdWlyZWQgZm9yIGNlcnRhaW4gYXVkaXRz
IHRvIHJ1bi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjE2MAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2Nvb2tpZXNGb3JEb21h
aW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
LmdldCBkb2N1bWVudFVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlLnNldCBkb2N1bWVudFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UpOgorCiAyMDA5LTEy
LTA0ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApp
bmRleCA2YjMyNjhkLi4xMWY1OGM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmNwcApAQCAtMzU3LDExICszNTcsMTEgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpoaWRlRE9N
Tm9kZUhpZ2hsaWdodCgpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aGlkZUhpZ2hs
aWdodCgpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldENvb2tpZXMobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgZG9tYWluKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDb29r
aWVzKGxvbmcgY2FsbElkKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRDb29raWVzKGNhbGxJ
ZCwgZG9tYWluKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmdldENvb2tpZXMoY2FsbElk
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpkZWxldGVDb29raWUoY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaAppbmRleCA4MDI2Mjk0Li5kNmU4OWZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGlnaGxp
Z2h0RE9NTm9kZShsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgp
OwogCi0gICAgdm9pZCBnZXRDb29raWVzKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFp
bik7CisgICAgdm9pZCBnZXRDb29raWVzKGxvbmcgY2FsbElkKTsKICAgICB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsKIAog
ICAgIC8vIEdlbmVyaWMgY29kZSBjYWxsZWQgZnJvbSBjdXN0b20gaW1wbGVtZW50YXRpb25zLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCBlNDM2ZTZiLi42MWM3NmQ2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtODcsNyArODcsNyBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShpbiBsb25nIG5v
ZGVJZCk7CiAgICAgICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAotICAgICAgICB2
b2lkIGdldENvb2tpZXMoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBkb21haW4pOworICAg
ICAgICB2b2lkIGdldENvb2tpZXMoaW4gbG9uZyBjYWxsSWQpOwogICAgICAgICB2b2lkIGRlbGV0
ZUNvb2tpZShpbiBET01TdHJpbmcgY29va2llTmFtZSwgaW4gRE9NU3RyaW5nIGRvbWFpbik7CiAK
ICAgICAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGluIERPTVN0cmluZyBvYmpl
Y3RHcm91cCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGMyNjk4MjUuLmZkMzE5YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCkBAIC0xMTQ5LDQ2ICsxMTQ5LDQ0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21hCiB9
CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIGhvc3QpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldENv
b2tpZXMobG9uZyBjYWxsSWQpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICAvLyBJZiB3ZSBjYW4gZ2V0IHJhdyBjb29raWVzLgogICAgIExpc3RI
YXNoU2V0PENvb2tpZT4gcmF3Q29va2llc0xpc3Q7Ci0gICAgCisKICAgICAvLyBJZiB3ZSBjYW4n
dCBnZXQgcmF3IGNvb2tpZXMgLSBmYWxsIGJhY2sgdG8gU3RyaW5nIHJlcHJlc2VudGF0aW9uCiAg
ICAgU3RyaW5nIHN0cmluZ0Nvb2tpZXNMaXN0OwotICAgIAorCiAgICAgLy8gUmV0dXJuIHZhbHVl
IHRvIGdldFJhd0Nvb2tpZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBldmVyeSBjYWxsIGJlY2F1
c2UKICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIHBsYXRmb3JtL25ldHdvcmsgYmFja2VuZCBz
cGVjaWZpYywgYW5kIHRoZSBjYWxsIHdpbGwKICAgICAvLyBhbHdheXMgcmV0dXJuIHRoZSBzYW1l
IHRydWUvZmFsc2UgdmFsdWUuCiAgICAgYm9vbCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxz
ZTsKLSAgICAKKwogICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9y
ZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
ZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KSB7CiAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGl0LT5zZWNvbmQtPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAg
ICAgIGlmIChkb2N1bWVudC0+dXJsKCkuaG9zdCgpID09IGhvc3QpIHsKLSAgICAgICAgICAgIFZl
Y3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OwotICAgICAgICAgICAgcmF3Q29va2llc0ltcGxl
bWVudGVkID0gZ2V0UmF3Q29va2llcyhkb2N1bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBk
b2NDb29raWVzTGlzdCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghcmF3Q29va2ll
c0ltcGxlbWVudGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGlj
YXRpb24gY2hlY2tpbmcgZm9yIHRoZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4K
LSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICBz
dHJpbmdDb29raWVzTGlzdCArPSBkb2N1bWVudC0+Y29va2llKGVjKTsKLSAgICAgICAgICAgICAg
ICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1l
cy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRv
Y3VtZW50IiBpcyB0aGUgZG9jdW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCi0g
ICAgICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGludCBjb29raWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlz
dFtpXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByYXdDb29raWVzTGlzdC5hZGQoZG9jQ29v
a2llc0xpc3RbaV0pOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgVmVjdG9yPENvb2tpZT4g
ZG9jQ29va2llc0xpc3Q7CisgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nv
b2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LT5jb29raWVVUkwoKSwgZG9jQ29va2llc0xpc3QpOwor
CisgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNl
bnRhdGlvbiBvZiBjb29raWVzLgorICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCArPSBkb2N1bWVudC0+Y29va2llKGVjKTsKKyAg
ICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBzYW5kYm94
ZWQgZnJhbWVzLiBUaGF0IHdvbid0IGhhcHBlbiBoZXJlCisgICAgICAgICAgICAvLyBiZWNhdXNl
ICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdl
LgorICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJhd0Nvb2tpZXNMaXN0LmNvbnRhaW5zKGRvY0Nvb2tpZXNMaXN0W2ldKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmF3Q29va2llc0xpc3QuYWRkKGRvY0Nvb2tpZXNMaXN0W2ldKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICghcmF3Q29va2llc0lt
cGxlbWVudGVkKQogICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRDb29raWVzKGNhbGxJZCwgbV9m
cm9udGVuZC0+bmV3U2NyaXB0QXJyYXkoKSwgc3RyaW5nQ29va2llc0xpc3QpOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAwZGQ2ZmIxLi5iYjRl
MWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xODYsNyAr
MTg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAgICAgdm9pZCBtYWluUmVzb3VyY2VGaXJlZERP
TUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgdm9pZCBn
ZXRDb29raWVzKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBnZXRD
b29raWVzKGxvbmcgY2FsbElkKTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICB2b2lkIGRp
ZE9wZW5EYXRhYmFzZShEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRleCAwY2FhMWI3Li41NTI0MDE0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKQEAgLTY3
LDcgKzY3LDggQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIHZhciBzZWxm
ID0gdGhpczsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soY29va2llcywgaXNBZHZhbmNlZCkg
eworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhhbGxDb29raWVzLCBpc0FkdmFuY2VkKSB7Cisg
ICAgICAgICAgICB2YXIgY29va2llcyA9IHNlbGYuX2Nvb2tpZXNGb3JEb21haW4oYWxsQ29va2ll
cyk7CiAgICAgICAgICAgICB2YXIgZGF0YUdyaWQgPSAoaXNBZHZhbmNlZCA/IHNlbGYuZGF0YUdy
aWRGb3JDb29raWVzKGNvb2tpZXMpIDogc2VsZi5zaW1wbGVEYXRhR3JpZEZvckNvb2tpZXMoY29v
a2llcykpOwogICAgICAgICAgICAgaWYgKGRhdGFHcmlkKSB7CiAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YUdyaWQgPSBkYXRhR3JpZDsKQEAgLTg1LDcgKzg2LDI1IEBAIFdlYkluc3BlY3Rvci5D
b29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jKGNhbGxiYWNrLCB0
aGlzLl9jb29raWVEb21haW4pOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29r
aWVzQXN5bmMoY2FsbGJhY2spOworICAgIH0sCisKKyAgICBfY29va2llc0ZvckRvbWFpbjogZnVu
Y3Rpb24oYWxsQ29va2llcykKKyAgICB7CisgICAgICAgIHZhciBjb29raWVzRm9yRG9tYWluID0g
W107CisgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgYWxsQ29va2llcy5sZW5ndGg7ICsrYykg
eworICAgICAgICAgICAgZm9yICh2YXIgaWQgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlcykgewor
ICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZXNbaWRd
OworICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHJlc291cmNlLmRvY3VtZW50VVJMLm1hdGNo
KFdlYkluc3BlY3Rvci5VUkxSZWdFeHApOworICAgICAgICAgICAgICAgIGlmICghbWF0Y2ggfHwg
bWF0Y2hbMl0gIT09IHRoaXMuX2Nvb2tpZURvbWFpbikKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZURv
bWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihhbGxDb29raWVzW2NdLmRvbWFpbiwgcmVzb3VyY2Uu
ZG9tYWluKSkgeworICAgICAgICAgICAgICAgICAgICBjb29raWVzRm9yRG9tYWluLnB1c2goYWxs
Q29va2llc1tjXSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29va2llc0ZvckRv
bWFpbjsKICAgICB9LAogCiAgICAgZGF0YUdyaWRGb3JDb29raWVzOiBmdW5jdGlvbihjb29raWVz
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI4ZGFmZWIuLmUz
ZDg4MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQzOSw3
ICs0MzksNyBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogCiBXZWJJbnNw
ZWN0b3IuQ29va2llcyA9IHt9CiAKLVdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3lu
YyA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBjb29raWVEb21haW4pCitXZWJJbnNwZWN0b3IuQ29va2ll
cy5nZXRDb29raWVzQXN5bmMgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBmdW5jdGlvbiBt
eWNhbGxiYWNrKGNvb2tpZXMsIGNvb2tpZXNTdHJpbmcpIHsKICAgICAgICAgaWYgKGNvb2tpZXNT
dHJpbmcpCkBAIC00NDgsNyArNDQ4LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2ll
c0FzeW5jID0gZnVuY3Rpb24oY2FsbGJhY2ssIGNvb2tpZURvbWFpbikKICAgICAgICAgICAgIGNh
bGxiYWNrKGNvb2tpZXMsIHRydWUpOwogICAgIH0KICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVj
dG9yLkNhbGxiYWNrLndyYXAobXljYWxsYmFjayk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5nZXRD
b29raWVzKGNhbGxJZCwgY29va2llRG9tYWluKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENv
b2tpZXMoY2FsbElkKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvb2tpZXMuYnVpbGRDb29raWVzRnJv
bVN0cmluZyA9IGZ1bmN0aW9uKHJhd0Nvb2tpZVN0cmluZykKQEAgLTQ3MCw2ICs0NzAsMjcgQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9uKHJh
d0Nvb2tpZVN0cmluZykKICAgICByZXR1cm4gY29va2llczsKIH0KIAorV2ViSW5zcGVjdG9yLkNv
b2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMID0gZnVuY3Rpb24oY29va2llLCByZXNvdXJj
ZVVSTCkKK3sKKyAgICB2YXIgbWF0Y2ggPSByZXNvdXJjZVVSTC5tYXRjaChXZWJJbnNwZWN0b3Iu
VVJMUmVnRXhwKTsKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCF0aGlzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9tYWlu
LCBtYXRjaFsyXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YXIgcmVzb3VyY2VQb3J0
ID0gbWF0Y2hbM10gPyBtYXRjaFszXSA6IHVuZGVmaW5lZDsKKyAgICB2YXIgcmVzb3VyY2VQYXRo
ID0gbWF0Y2hbNF0gPyBtYXRjaFs0XSA6ICcvJzsKKyAgICByZXR1cm4gKHJlc291cmNlUGF0aC5p
bmRleE9mKGNvb2tpZS5wYXRoKSA9PT0gMAorICAgICAgICAmJiAoIXJlc291cmNlUG9ydCB8fCAh
Y29va2llLnBvcnQgfHwgcmVzb3VyY2VQb3J0ID09PSBjb29raWUucG9ydCkKKyAgICAgICAgJiYg
KCFjb29raWUuc2VjdXJlIHx8IHJlc291cmNlVVJMLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignaHR0
cHMnKSA9PT0gMCkpOworfQorCitXZWJJbnNwZWN0b3IuQ29va2llcy5jb29raWVEb21haW5NYXRj
aGVzUmVzb3VyY2VEb21haW4gPSBmdW5jdGlvbihjb29raWVEb21haW4sIHJlc291cmNlRG9tYWlu
KQoreworICAgIGlmIChjb29raWVEb21haW4uY2hhckF0KDApICE9PSAnLicpCisgICAgICAgIHJl
dHVybiByZXNvdXJjZURvbWFpbiA9PT0gY29va2llRG9tYWluOworICAgIHJldHVybiAhIXJlc291
cmNlRG9tYWluLm1hdGNoKG5ldyBSZWdFeHAoIl4oW15cXC5dK1xcLik/IiArIGNvb2tpZURvbWFp
bi5zdWJzdHJpbmcoMSkuZXNjYXBlRm9yUmVnRXhwKCkgKyAiJCIpLCAiaSIpOworfQorCiBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnMgPSB7fQogCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
cnMuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlQXN5bmMgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCA3MjhmMmFjLi5k
MjNiNWRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Uu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC0yNiw3
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1
bmN0aW9uKHJlcXVlc3RIZWFkZXJzLCB1cmwsIGRvbWFpbiwgcGF0aCwgbGFzdFBhdGhDb21wb25l
bnQsIGlkZW50aWZpZXIsIG1haW5SZXNvdXJjZSwgY2FjaGVkLCByZXF1ZXN0TWV0aG9kLCByZXF1
ZXN0Rm9ybURhdGEpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbihyZXF1ZXN0SGVh
ZGVycywgdXJsLCBkb2N1bWVudFVSTCwgZG9tYWluLCBwYXRoLCBsYXN0UGF0aENvbXBvbmVudCwg
aWRlbnRpZmllciwgbWFpblJlc291cmNlLCBjYWNoZWQsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RG
b3JtRGF0YSkKIHsKICAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogCkBAIC0zNSw2
ICszNSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0aW9uKHJlcXVlc3RIZWFkZXJz
LCB1cmwsIGRvbWFpbiwgcGF0aCwgbGFzdFBhdGhDb21wCiAgICAgdGhpcy5tYWluUmVzb3VyY2Ug
PSBtYWluUmVzb3VyY2U7CiAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJz
OwogICAgIHRoaXMudXJsID0gdXJsOworICAgIHRoaXMuZG9jdW1lbnRVUkwgPSBkb2N1bWVudFVS
TDsKICAgICB0aGlzLmRvbWFpbiA9IGRvbWFpbjsKICAgICB0aGlzLnBhdGggPSBwYXRoOwogICAg
IHRoaXMubGFzdFBhdGhDb21wb25lbnQgPSBsYXN0UGF0aENvbXBvbmVudDsKQEAgLTE2Miw2ICsx
NjMsMTggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInVybCBjaGFuZ2VkIik7CiAgICAgfSwKIAorICAg
IGdldCBkb2N1bWVudFVSTCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnRV
Ukw7CisgICAgfSwKKworICAgIHNldCBkb2N1bWVudFVSTCh4KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX2RvY3VtZW50VVJMID09PSB4KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLl9kb2N1bWVudFVSTCA9IHg7CisgICAgfSwKKwogICAgIGdldCBkb21haW4oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpbjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCmluZGV4IDdkNWFkYWYuLjU2ZGIxYTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNzQsNiArNzQsMTQgQEAgdmFyIFdlYkluc3BlY3Rv
ciA9IHsKICAgICBtaXNzaW5nTG9jYWxpemVkU3RyaW5nczoge30sCiAgICAgcGVuZGluZ0Rpc3Bh
dGNoZXM6IDAsCiAKKyAgICAvLyBSZWdFeHAgZ3JvdXBzOgorICAgIC8vIDEgLSBzY2hlbWUKKyAg
ICAvLyAyIC0gaG9zdG5hbWUKKyAgICAvLyAzIC0gP3BvcnQKKyAgICAvLyA0IC0gP3BhdGgKKyAg
ICAvLyA1IC0gP2ZyYWdtZW50CisgICAgVVJMUmVnRXhwOiAvXihodHRwW3NdP3xmaWxlKTpcL1wv
KFteXC86XSspKD86OihbXGRdKykpPyg/OihcL1teI10qKSg/OiMoLiopKT8pPyQvaSwKKwogICAg
IGdldCBwbGF0Zm9ybSgpCiAgICAgewogICAgICAgICBpZiAoISgiX3BsYXRmb3JtIiBpbiB0aGlz
KSkKQEAgLTEwMDUsNiArMTAxMyw3IEBAIFdlYkluc3BlY3Rvci5hZGRSZXNvdXJjZSA9IGZ1bmN0
aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSgKICAgICAgICAgcGF5bG9hZC5yZXF1ZXN0SGVhZGVycywKICAgICAgICAg
cGF5bG9hZC5yZXF1ZXN0VVJMLAorICAgICAgICBwYXlsb2FkLmRvY3VtZW50VVJMLAogICAgICAg
ICBwYXlsb2FkLmhvc3QsCiAgICAgICAgIHBheWxvYWQucGF0aCwKICAgICAgICAgcGF5bG9hZC5s
YXN0UGF0aENvbXBvbmVudCwK
</data>
<flag name="review"
          id="26142"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44417</attachid>
            <date>2009-12-07 08:02:15 -0800</date>
            <delta_ts>2009-12-07 10:51:26 -0800</delta_ts>
            <desc>patch (fixed)</desc>
            <filename>cookies.patch</filename>
            <type>text/plain</type>
            <size>18963</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRj
aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjMTI5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3Vy
Y2UtbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIHRoYXQgY29va2ll
cyBhcmUgbWF0Y2hlZCB1cCB3aXRoIHJlc291cmNlcyBjb3JyZWN0bHkuCisKK1swLDIsNCw2LDgs
MTAsMTIsMTRdCitbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNV0KK1syLDMs
Niw3LDEwLDExLDE0LDE1XQorWzYsMTRdCitbNCw1LDYsNywxMiwxMywxNCwxNV0KK1s2LDcsMTQs
MTVdCitbOCwxMCwxMiwxNF0KK1s4LDksMTAsMTEsMTIsMTMsMTQsMTVdCitbMTAsMTEsMTQsMTVd
CitbMTRdCitbMTIsMTMsMTQsMTVdCitbMTQsMTVdCitbXQorW10KK1tdCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2guaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGFiZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5odG1sCkBAIC0wLDAgKzEsMTEy
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJjb29raWUtcmVzb3VyY2UtbWF0Y2guanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gZnJvbnRlbmRfZG9pdEFuZER1bXAoKQoreworICAgIHZhciBj
b29raWVzID0gWworICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlT25seVdl
YmtpdCIsICIxMjM0NTY3ODkwIiwgZmFsc2UsICJ3ZWJraXQub3JnIiwgIi8iKSwKKyAgICAgICAg
ZnJvbnRlbmRfY3JlYXRlQ29va2llKCJpbnNlY3VyZUFsbFdlYmtpdCIsICIxMjM0NTY3ODkwMTIz
NDU2IiwgZmFsc2UsICIud2Via2l0Lm9yZyIsICIvIiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0
ZUNvb2tpZSgiaW5zZWN1cmVBbGxXZWJraXRQYXRoIiwgIjEyMzQ1Njc4OTAxMjM0NTYiLCBmYWxz
ZSwgIi53ZWJraXQub3JnIiwgIi9wYXRoIiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tp
ZSgic2VjdXJlT25seVdlYmtpdFBhdGgiLCAiYmFyIiwgdHJ1ZSwgIndlYmtpdC5vcmciLCAiL3Bh
dGgiKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJzZWN1cmVBbGxXZWJraXQiLCAi
Zm9vIiwgdHJ1ZSwgIi53ZWJraXQub3JnIiwgIi8iKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRl
Q29va2llKCJzZWN1cmVBbGxXZWJraXRQYXRoIiwgImZvbyIsIHRydWUsICIud2Via2l0Lm9yZyIs
ICIvcGF0aCIpLAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlT25seVdl
YmtpdFBvcnQiLCAiMTIzNDU2Nzg5MCIsIGZhbHNlLCAid2Via2l0Lm9yZyIsICIvIiwgODApLAor
ICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlQWxsV2Via2l0UG9ydCIsICIx
MjM0NTY3ODkwMTIzNDU2IiwgZmFsc2UsICIud2Via2l0Lm9yZyIsICIvIiwgODApLAorICAgICAg
ICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlQWxsV2Via2l0UGF0aFBvcnQiLCAiMTIz
NDU2Nzg5MDEyMzQ1NiIsIGZhbHNlLCAiLndlYmtpdC5vcmciLCAiL3BhdGgiLCA4MCksCisgICAg
ICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgic2VjdXJlT25seVdlYmtpdFBhdGhQb3J0IiwgImJh
ciIsIHRydWUsICJ3ZWJraXQub3JnIiwgIi9wYXRoIiwgODApLAorICAgICAgICBmcm9udGVuZF9j
cmVhdGVDb29raWUoInNlY3VyZUFsbFdlYmtpdFBvcnQiLCAiZm9vIiwgdHJ1ZSwgIi53ZWJraXQu
b3JnIiwgIi8iLCA4MCksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgic2VjdXJlQWxs
V2Via2l0UGF0aFBvcnQiLCAiZm9vIiwgdHJ1ZSwgIi53ZWJraXQub3JnIiwgIi9wYXRoIiwgODAp
LAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoIm5vbk1hdGNoaW5nMSIsICJiYXIiLCBm
YWxzZSwgIndlYmtpdC56b28iLCAiLyIpLAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUo
Im5vbk1hdGNoaW5nMiIsICJiYXIiLCBmYWxzZSwgIndlYmtpdC5vcmciLCAiL2JhZFBhdGgiKSwK
KyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJub25NYXRjaGluZzMiLCAiYmFyIiwgdHJ1
ZSwgIi5tb28uY29tIiwgIi8iKQorICAgIF07CisKKyAgICB2YXIgcmVzb3VyY2VVUkxzID0gWwor
ICAgICAgICAiaHR0cDovL3dlYmtpdC5vcmciLCAvLyAwCisgICAgICAgICJodHRwOi8vd3d3Lndl
YmtpdC5vcmc6ODEiLCAvLyAxCisgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZy9wYXRoIiwgLy8g
MgorICAgICAgICAiaHR0cDovL3d3dy53ZWJraXQub3JnL3BhdGgiLCAvLyAzCisgICAgICAgICJo
dHRwczovL3dlYmtpdC5vcmcvIiwgLy8gNAorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0Lm9y
Zy8iLCAvLyA1CisgICAgICAgICJodHRwczovL3dlYmtpdC5vcmc6ODEvcGF0aCIsIC8vIDYKKyAg
ICAgICAgImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvcGF0aCIsIC8vIDcKKworICAgICAgICAiaHR0
cDovL3dlYmtpdC5vcmc6ODAiLCAvLyA4CisgICAgICAgICJodHRwOi8vd3d3LndlYmtpdC5vcmc6
ODAiLCAvLyA5CisgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTAKKyAg
ICAgICAgImh0dHA6Ly93d3cud2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTEKKyAgICAgICAgImh0
dHBzOi8vd2Via2l0Lm9yZzo4MC8iLCAvLyAxMgorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0
Lm9yZzo4MC8iLCAvLyAxMworICAgICAgICAiaHR0cHM6Ly93ZWJraXQub3JnOjgwL3BhdGgiLCAv
LyAxNAorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTUKKwor
ICAgICAgICAiaHR0cDovL3d3dy5ib28uY29tOjgwIiwgLy8gMTYKKyAgICAgICAgImh0dHBzOi8v
d3d3LmJvby5jb206ODAvcGF0aCIsIC8vIDE3CisgICAgICAgICJodHRwOi8vd3d3Lm1vby5jb206
ODAvIiwgLy8gMTgKKyAgICAgICAgImh0dHA6Ly93d3cuYm9vLmNvbTo4MCIsIC8vIDE5CisgICAg
ICAgICJodHRwczovL3d3dy5ib28uY29tOjgwL3BhdGgiLCAvLyAyMAorICAgICAgICAiaHR0cDov
L3d3dy5tb28uY29tOjgwLyIgLy8gMjEKKyAgICBdOworCisgICAgdmFyIHJlc3VsdCA9IFtdOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgY29va2llUmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVzb3Vy
Y2VVUkxzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNvb2tpZXNbaV0sIHJlc291cmNlVVJMc1tqXSkp
CisgICAgICAgICAgICAgICAgY29va2llUmVzdWx0LnB1c2goaik7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzdWx0LnB1c2goY29va2llUmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
KworICAgIC8vIFJlc291cmNlcyBmb3IgY29va2llcworICAgIHZhciBtYXRjaE1hdHJpeCA9IFsK
KyAgICAgICAgWzAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTRdLAorICAgICAgICBbMCwgMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICAgIFsy
LCAzLCA2LCA3LCAxMCwgMTEsIDE0LCAxNV0sCisgICAgICAgIFs2LCAxNF0sCisgICAgICAgIFs0
LCA1LCA2LCA3LCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICAgIFs2LCA3LCAxNCwgMTVdLAorCisg
ICAgICAgIFs4LCAxMCwgMTIsIDE0XSwKKyAgICAgICAgWzgsIDksIDEwLCAxMSwgMTIsIDEzLCAx
NCwgMTVdLAorICAgICAgICBbMTAsIDExLCAxNCwgMTVdLAorICAgICAgICBbMTRdLAorICAgICAg
ICBbMTIsIDEzLCAxNCwgMTVdLAorICAgICAgICBbMTQsIDE1XSwKKworICAgICAgICBbXSwKKyAg
ICAgICAgW10sCisgICAgICAgIFtdCisgICAgXTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfY3Jl
YXRlQ29va2llKG5hbWUsIHZhbHVlLCBzZWN1cmUsIGRvbWFpbiwgcGF0aCwgcG9ydCkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBuYW1lOiBuYW1lLAorICAgICAgICB2YWx1ZTogdmFsdWUsCisg
ICAgICAgIGRvbWFpbjogZG9tYWluLAorICAgICAgICBwb3J0OiBwb3J0LAorICAgICAgICBwYXRo
OiBwYXRoLAorICAgICAgICBleHBpcmVzOiAiVGh1IEphbiAwMSAxOTcwIDAwOjAwOjAwIEdNVCIs
CisgICAgICAgIHNpemU6IG5hbWUubGVuZ3RoICsgdmFsdWUubGVuZ3RoLAorICAgICAgICBodHRw
T25seTogZmFsc2UsCisgICAgICAgIHNlY3VyZTogc2VjdXJlLAorICAgICAgICBzZXNzaW9uOiB0
cnVlCisgICAgfTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25s
b2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG1hdGNoZWQgdXAgd2l0aCByZXNv
dXJjZXMgY29ycmVjdGx5LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29va2llLXJlc291cmNlLW1hdGNoLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMDBiODk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5qcwpAQCAtMCwwICsxLDExIEBACisvLyBJ
bnNwZWN0ZWQgUGFnZSBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGRvaXQoKSB7CisgICAgZnVuY3Rp
b24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBy
ZXN1bHQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBvdXRwdXQoIlsiICsgcmVzdWx0W2ldICsg
Il0iKTsKKyAgICAgICAgbm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJmcm9udGVuZF9kb2l0QW5kRHVtcCIsIGNhbGxiYWNrKTsKK30KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ0NjY0MS4uYTk5
ODM3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0xMi0wNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0aGUgd2F5IGNvb2tpZXMgYXJlIHJldHJpZXZlZCBpbiB0aGUgV2Vi
SW5zcGVjdG9yIGZyb250ZW5kLgorCisgICAgICAgIE1vdmVkIHRoZSBjb29raWUgZmlsdGVyaW5n
IGZyb20gdGhlIG5hdGl2ZSBjb2RlIGludG8gdGhlIGZyb250ZW5kIHNvIHRoYXQKKyAgICAgICAg
YWxsIGNvb2tpZXMgY2FuIGJlIHJldHJpZXZlZCByZWdhcmRsZXNzIG9mIHRoZSBhc3NvY2lhdGVk
IGRvbWFpbgorICAgICAgICAocmVxdWlyZWQgZm9yIGNlcnRhaW4gYXVkaXRzIHRvIHJ1bi4pCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjE2MAorCisg
ICAgICAgIFRlc3Q6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2gu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2Nvb2tpZXNGb3JEb21haW4p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdl
dCBkb2N1bWVudFVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
LnNldCBkb2N1bWVudFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UpOgorCiAyMDA5LTEyLTA3
ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHAKaW5kZXggNmIzMjY4ZC4uMTFmNThjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAKQEAgLTM1NywxMSArMzU3LDExIEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6aGlk
ZURPTU5vZGVIaWdobGlnaHQoKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmhpZGVI
aWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDb29raWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0
Q29va2llcyhsb25nIGNhbGxJZCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlcikK
ICAgICAgICAgcmV0dXJuOwotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0Q29va2llcyhj
YWxsSWQsIGRvbWFpbik7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRDb29raWVzKGNh
bGxJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGVsZXRlQ29va2llKGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmgKaW5kZXggODAyNjI5NC4uZDZlODlmYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhp
Z2hsaWdodERPTU5vZGUobG9uZyBub2RlSWQpOwogICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGln
aHQoKTsKIAotICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBk
b21haW4pOworICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7
CiAKICAgICAvLyBHZW5lcmljIGNvZGUgY2FsbGVkIGZyb20gY3VzdG9tIGltcGxlbWVudGF0aW9u
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggZTQzNmU2Yi4uNjFj
NzZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTg3LDcgKzg3
LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9u
ZyBub2RlSWQpOwogICAgICAgICB2b2lkIGhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAKLSAgICAg
ICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgZG9tYWluKTsK
KyAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkKTsKICAgICAgICAgdm9pZCBk
ZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0cmluZyBkb21haW4p
OwogCiAgICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBET01TdHJpbmcg
b2JqZWN0R3JvdXApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBjMjY5ODI1Li5mZDMxOWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtMTE0OSw0NiArMTE0OSw0NCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9t
YQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyhsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBob3N0KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpn
ZXRDb29raWVzKGxvbmcgY2FsbElkKQogewogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBM
aXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwotICAgIAorCiAgICAgLy8gSWYgd2Ug
Y2FuJ3QgZ2V0IHJhdyBjb29raWVzIC0gZmFsbCBiYWNrIHRvIFN0cmluZyByZXByZXNlbnRhdGlv
bgogICAgIFN0cmluZyBzdHJpbmdDb29raWVzTGlzdDsKLSAgICAKKwogICAgIC8vIFJldHVybiB2
YWx1ZSB0byBnZXRSYXdDb29raWVzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgZXZlcnkgY2FsbCBi
ZWNhdXNlCiAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBwbGF0Zm9ybS9uZXR3b3JrIGJhY2tl
bmQgc3BlY2lmaWMsIGFuZCB0aGUgY2FsbCB3aWxsCiAgICAgLy8gYWx3YXlzIHJldHVybiB0aGUg
c2FtZSB0cnVlL2ZhbHNlIHZhbHVlLgogICAgIGJvb2wgcmF3Q29va2llc0ltcGxlbWVudGVkID0g
ZmFsc2U7Ci0gICAgCisKICAgICBSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9
IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkgewogICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBpdC0+c2Vjb25kLT5mcmFtZSgpLT5kb2N1bWVudCgpOwot
ICAgICAgICBpZiAoZG9jdW1lbnQtPnVybCgpLmhvc3QoKSA9PSBob3N0KSB7Ci0gICAgICAgICAg
ICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAgIHJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LT5jb29raWVVUkwo
KSwgZG9jQ29va2llc0xpc3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXJhd0Nv
b2tpZXNJbXBsZW1lbnRlZCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1
cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tp
ZXMuCi0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAg
ICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7Ci0gICAgICAgICAg
ICAgICAgLy8gRXhjZXB0aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGluIHNhbmRib3hlZCBm
cmFtZXMuIFRoYXQgd29uJ3QgaGFwcGVuIGhlcmUKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNl
ICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdl
LgotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFpbnMoZG9jQ29va2ll
c0xpc3RbaV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgcmF3Q29va2llc0xpc3QuYWRkKGRv
Y0Nvb2tpZXNMaXN0W2ldKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIFZlY3RvcjxDb29r
aWU+IGRvY0Nvb2tpZXNMaXN0OworICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRS
YXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0
KTsKKworICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRoZSBTdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgY29va2llcy4KKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7
CisgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2Fu
ZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQorICAgICAgICAgICAgLy8gYmVj
YXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUg
cGFnZS4KKyAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgpOworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCisgICAg
ICAgICAgICAgICAgICAgIHJhd0Nvb2tpZXNMaXN0LmFkZChkb2NDb29raWVzTGlzdFtpXSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAoIXJhd0Nvb2tp
ZXNJbXBsZW1lbnRlZCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0Q29va2llcyhjYWxsSWQs
IG1fZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCksIHN0cmluZ0Nvb2tpZXNMaXN0KTsKICAgICBl
bHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMGRkNmZiMS4u
YmI0ZTFmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTg2
LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmly
ZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIHZv
aWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQg
Z2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgdm9p
ZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggMGNhYTFiNy4uZGQ2OTIxNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCkBA
IC02Nyw3ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB2YXIg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNvb2tpZXMsIGlzQWR2YW5j
ZWQpIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soYWxsQ29va2llcywgaXNBZHZhbmNlZCkg
eworICAgICAgICAgICAgdmFyIGNvb2tpZXMgPSBzZWxmLl9jb29raWVzRm9yRG9tYWluKGFsbENv
b2tpZXMpOwogICAgICAgICAgICAgdmFyIGRhdGFHcmlkID0gKGlzQWR2YW5jZWQgPyBzZWxmLmRh
dGFHcmlkRm9yQ29va2llcyhjb29raWVzKSA6IHNlbGYuc2ltcGxlRGF0YUdyaWRGb3JDb29raWVz
KGNvb2tpZXMpKTsKICAgICAgICAgICAgIGlmIChkYXRhR3JpZCkgewogICAgICAgICAgICAgICAg
IHNlbGYuX2RhdGFHcmlkID0gZGF0YUdyaWQ7CkBAIC04NSw3ICs4NiwzMSBAQCBXZWJJbnNwZWN0
b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyhjYWxsYmFj
aywgdGhpcy5fY29va2llRG9tYWluKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0
Q29va2llc0FzeW5jKGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2Nvb2tpZXNGb3JEb21haW46
IGZ1bmN0aW9uKGFsbENvb2tpZXMpCisgICAgeworICAgICAgICB2YXIgY29va2llc0ZvckRvbWFp
biA9IFtdOworICAgICAgICB2YXIgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwgPSBbXTsKKwor
ICAgICAgICBmb3IgKHZhciBpZCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VzKSB7CisgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VzW2lkXTsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCA9IHJlc291cmNlLmRvY3VtZW50VVJMLm1hdGNoKFdlYkluc3BlY3Rvci5V
UkxSZWdFeHApOworICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzJdID09PSB0aGlzLl9j
b29raWVEb21haW4pCisgICAgICAgICAgICAgICAgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwu
cHVzaChyZXNvdXJjZS51cmwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFsbENvb2tpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwubGVuZ3RoOyArK2opIHsK
KyAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VVUkwgPSByZXNvdXJjZVVSTHNGb3JEb2N1bWVu
dFVSTFtqXTsKKyAgICAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2ll
TWF0Y2hlc1Jlc291cmNlVVJMKGFsbENvb2tpZXNbaV0sIHJlc291cmNlVVJMKSkgeworICAgICAg
ICAgICAgICAgICAgICBjb29raWVzRm9yRG9tYWluLnB1c2goYWxsQ29va2llc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29va2llc0ZvckRvbWFpbjsKICAgICB9LAogCiAg
ICAgZGF0YUdyaWRGb3JDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI4ZGFmZWIuLjJlMGMyYWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQzOSw3ICs0MzksNyBAQCBXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuQ29va2llcyA9IHt9
CiAKLVdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxi
YWNrLCBjb29raWVEb21haW4pCitXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMg
PSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGNvb2tpZXMs
IGNvb2tpZXNTdHJpbmcpIHsKICAgICAgICAgaWYgKGNvb2tpZXNTdHJpbmcpCkBAIC00NDgsNyAr
NDQ4LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jID0gZnVuY3Rpb24o
Y2FsbGJhY2ssIGNvb2tpZURvbWFpbikKICAgICAgICAgICAgIGNhbGxiYWNrKGNvb2tpZXMsIHRy
dWUpOwogICAgIH0KICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAo
bXljYWxsYmFjayk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5nZXRDb29raWVzKGNhbGxJZCwgY29v
a2llRG9tYWluKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvb2tpZXMoY2FsbElkKTsKIH0K
IAogV2ViSW5zcGVjdG9yLkNvb2tpZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9u
KHJhd0Nvb2tpZVN0cmluZykKQEAgLTQ3MCw2ICs0NzAsMjcgQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9uKHJhd0Nvb2tpZVN0cmluZykKICAg
ICByZXR1cm4gY29va2llczsKIH0KIAorV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hl
c1Jlc291cmNlVVJMID0gZnVuY3Rpb24oY29va2llLCByZXNvdXJjZVVSTCkKK3sKKyAgICB2YXIg
bWF0Y2ggPSByZXNvdXJjZVVSTC5tYXRjaChXZWJJbnNwZWN0b3IuVVJMUmVnRXhwKTsKKyAgICBp
ZiAoIW1hdGNoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF0aGlzLmNvb2tpZURv
bWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9tYWluLCBtYXRjaFsyXSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB2YXIgcmVzb3VyY2VQb3J0ID0gbWF0Y2hbM10gPyBtYXRj
aFszXSA6IHVuZGVmaW5lZDsKKyAgICB2YXIgcmVzb3VyY2VQYXRoID0gbWF0Y2hbNF0gPyBtYXRj
aFs0XSA6ICcvJzsKKyAgICByZXR1cm4gKHJlc291cmNlUGF0aC5pbmRleE9mKGNvb2tpZS5wYXRo
KSA9PT0gMAorICAgICAgICAmJiAoIWNvb2tpZS5wb3J0IHx8IHJlc291cmNlUG9ydCA9PSBjb29r
aWUucG9ydCkKKyAgICAgICAgJiYgKCFjb29raWUuc2VjdXJlIHx8IHJlc291cmNlVVJMLnRvTG93
ZXJDYXNlKCkuaW5kZXhPZignaHR0cHMnKSA9PT0gMCkpOworfQorCitXZWJJbnNwZWN0b3IuQ29v
a2llcy5jb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4gPSBmdW5jdGlvbihjb29raWVE
b21haW4sIHJlc291cmNlRG9tYWluKQoreworICAgIGlmIChjb29raWVEb21haW4uY2hhckF0KDAp
ICE9PSAnLicpCisgICAgICAgIHJldHVybiByZXNvdXJjZURvbWFpbiA9PT0gY29va2llRG9tYWlu
OworICAgIHJldHVybiAhIXJlc291cmNlRG9tYWluLm1hdGNoKG5ldyBSZWdFeHAoIl4oW15cXC5d
K1xcLik/IiArIGNvb2tpZURvbWFpbi5zdWJzdHJpbmcoMSkuZXNjYXBlRm9yUmVnRXhwKCkgKyAi
JCIpLCAiaSIpOworfQorCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnMgPSB7fQogCiBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnMuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlQXN5bmMgPSBm
dW5jdGlvbihub2RlLCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcwppbmRleCA3MjhmMmFjLi5kMjNiNWRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlLmpzCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0aW9uKHJlcXVlc3RIZWFkZXJzLCB1cmwsIGRvbWFpbiwg
cGF0aCwgbGFzdFBhdGhDb21wb25lbnQsIGlkZW50aWZpZXIsIG1haW5SZXNvdXJjZSwgY2FjaGVk
LCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Rm9ybURhdGEpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2Ug
PSBmdW5jdGlvbihyZXF1ZXN0SGVhZGVycywgdXJsLCBkb2N1bWVudFVSTCwgZG9tYWluLCBwYXRo
LCBsYXN0UGF0aENvbXBvbmVudCwgaWRlbnRpZmllciwgbWFpblJlc291cmNlLCBjYWNoZWQsIHJl
cXVlc3RNZXRob2QsIHJlcXVlc3RGb3JtRGF0YSkKIHsKICAgICB0aGlzLmlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOwogCkBAIC0zNSw2ICszNSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1
bmN0aW9uKHJlcXVlc3RIZWFkZXJzLCB1cmwsIGRvbWFpbiwgcGF0aCwgbGFzdFBhdGhDb21wCiAg
ICAgdGhpcy5tYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2U7CiAgICAgdGhpcy5yZXF1ZXN0SGVh
ZGVycyA9IHJlcXVlc3RIZWFkZXJzOwogICAgIHRoaXMudXJsID0gdXJsOworICAgIHRoaXMuZG9j
dW1lbnRVUkwgPSBkb2N1bWVudFVSTDsKICAgICB0aGlzLmRvbWFpbiA9IGRvbWFpbjsKICAgICB0
aGlzLnBhdGggPSBwYXRoOwogICAgIHRoaXMubGFzdFBhdGhDb21wb25lbnQgPSBsYXN0UGF0aENv
bXBvbmVudDsKQEAgLTE2Miw2ICsxNjMsMTggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInVybCBjaGFu
Z2VkIik7CiAgICAgfSwKIAorICAgIGdldCBkb2N1bWVudFVSTCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fZG9jdW1lbnRVUkw7CisgICAgfSwKKworICAgIHNldCBkb2N1bWVudFVSTCh4
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50VVJMID09PSB4KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB0aGlzLl9kb2N1bWVudFVSTCA9IHg7CisgICAgfSwKKwogICAg
IGdldCBkb21haW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpbjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDdkNWFkYWYuLjU2ZGIxYTQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNzQsNiArNzQs
MTQgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICBtaXNzaW5nTG9jYWxpemVkU3RyaW5nczog
e30sCiAgICAgcGVuZGluZ0Rpc3BhdGNoZXM6IDAsCiAKKyAgICAvLyBSZWdFeHAgZ3JvdXBzOgor
ICAgIC8vIDEgLSBzY2hlbWUKKyAgICAvLyAyIC0gaG9zdG5hbWUKKyAgICAvLyAzIC0gP3BvcnQK
KyAgICAvLyA0IC0gP3BhdGgKKyAgICAvLyA1IC0gP2ZyYWdtZW50CisgICAgVVJMUmVnRXhwOiAv
XihodHRwW3NdP3xmaWxlKTpcL1wvKFteXC86XSspKD86OihbXGRdKykpPyg/OihcL1teI10qKSg/
OiMoLiopKT8pPyQvaSwKKwogICAgIGdldCBwbGF0Zm9ybSgpCiAgICAgewogICAgICAgICBpZiAo
ISgiX3BsYXRmb3JtIiBpbiB0aGlzKSkKQEAgLTEwMDUsNiArMTAxMyw3IEBAIFdlYkluc3BlY3Rv
ci5hZGRSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiAgICAgdmFyIHJl
c291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZSgKICAgICAgICAgcGF5bG9hZC5yZXF1
ZXN0SGVhZGVycywKICAgICAgICAgcGF5bG9hZC5yZXF1ZXN0VVJMLAorICAgICAgICBwYXlsb2Fk
LmRvY3VtZW50VVJMLAogICAgICAgICBwYXlsb2FkLmhvc3QsCiAgICAgICAgIHBheWxvYWQucGF0
aCwKICAgICAgICAgcGF5bG9hZC5sYXN0UGF0aENvbXBvbmVudCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44421</attachid>
            <date>2009-12-07 10:51:26 -0800</date>
            <delta_ts>2009-12-08 05:02:46 -0800</delta_ts>
            <desc>patch (add comment + use match group)</desc>
            <filename>cookies.patch</filename>
            <type>text/plain</type>
            <size>19030</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRj
aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjMTI5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3Vy
Y2UtbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIHRoYXQgY29va2ll
cyBhcmUgbWF0Y2hlZCB1cCB3aXRoIHJlc291cmNlcyBjb3JyZWN0bHkuCisKK1swLDIsNCw2LDgs
MTAsMTIsMTRdCitbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNV0KK1syLDMs
Niw3LDEwLDExLDE0LDE1XQorWzYsMTRdCitbNCw1LDYsNywxMiwxMywxNCwxNV0KK1s2LDcsMTQs
MTVdCitbOCwxMCwxMiwxNF0KK1s4LDksMTAsMTEsMTIsMTMsMTQsMTVdCitbMTAsMTEsMTQsMTVd
CitbMTRdCitbMTIsMTMsMTQsMTVdCitbMTQsMTVdCitbXQorW10KK1tdCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2guaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGFiZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5odG1sCkBAIC0wLDAgKzEsMTEy
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJjb29raWUtcmVzb3VyY2UtbWF0Y2guanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gZnJvbnRlbmRfZG9pdEFuZER1bXAoKQoreworICAgIHZhciBj
b29raWVzID0gWworICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlT25seVdl
YmtpdCIsICIxMjM0NTY3ODkwIiwgZmFsc2UsICJ3ZWJraXQub3JnIiwgIi8iKSwKKyAgICAgICAg
ZnJvbnRlbmRfY3JlYXRlQ29va2llKCJpbnNlY3VyZUFsbFdlYmtpdCIsICIxMjM0NTY3ODkwMTIz
NDU2IiwgZmFsc2UsICIud2Via2l0Lm9yZyIsICIvIiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0
ZUNvb2tpZSgiaW5zZWN1cmVBbGxXZWJraXRQYXRoIiwgIjEyMzQ1Njc4OTAxMjM0NTYiLCBmYWxz
ZSwgIi53ZWJraXQub3JnIiwgIi9wYXRoIiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tp
ZSgic2VjdXJlT25seVdlYmtpdFBhdGgiLCAiYmFyIiwgdHJ1ZSwgIndlYmtpdC5vcmciLCAiL3Bh
dGgiKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJzZWN1cmVBbGxXZWJraXQiLCAi
Zm9vIiwgdHJ1ZSwgIi53ZWJraXQub3JnIiwgIi8iKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRl
Q29va2llKCJzZWN1cmVBbGxXZWJraXRQYXRoIiwgImZvbyIsIHRydWUsICIud2Via2l0Lm9yZyIs
ICIvcGF0aCIpLAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlT25seVdl
YmtpdFBvcnQiLCAiMTIzNDU2Nzg5MCIsIGZhbHNlLCAid2Via2l0Lm9yZyIsICIvIiwgODApLAor
ICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlQWxsV2Via2l0UG9ydCIsICIx
MjM0NTY3ODkwMTIzNDU2IiwgZmFsc2UsICIud2Via2l0Lm9yZyIsICIvIiwgODApLAorICAgICAg
ICBmcm9udGVuZF9jcmVhdGVDb29raWUoImluc2VjdXJlQWxsV2Via2l0UGF0aFBvcnQiLCAiMTIz
NDU2Nzg5MDEyMzQ1NiIsIGZhbHNlLCAiLndlYmtpdC5vcmciLCAiL3BhdGgiLCA4MCksCisgICAg
ICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgic2VjdXJlT25seVdlYmtpdFBhdGhQb3J0IiwgImJh
ciIsIHRydWUsICJ3ZWJraXQub3JnIiwgIi9wYXRoIiwgODApLAorICAgICAgICBmcm9udGVuZF9j
cmVhdGVDb29raWUoInNlY3VyZUFsbFdlYmtpdFBvcnQiLCAiZm9vIiwgdHJ1ZSwgIi53ZWJraXQu
b3JnIiwgIi8iLCA4MCksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgic2VjdXJlQWxs
V2Via2l0UGF0aFBvcnQiLCAiZm9vIiwgdHJ1ZSwgIi53ZWJraXQub3JnIiwgIi9wYXRoIiwgODAp
LAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoIm5vbk1hdGNoaW5nMSIsICJiYXIiLCBm
YWxzZSwgIndlYmtpdC56b28iLCAiLyIpLAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUo
Im5vbk1hdGNoaW5nMiIsICJiYXIiLCBmYWxzZSwgIndlYmtpdC5vcmciLCAiL2JhZFBhdGgiKSwK
KyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJub25NYXRjaGluZzMiLCAiYmFyIiwgdHJ1
ZSwgIi5tb28uY29tIiwgIi8iKQorICAgIF07CisKKyAgICB2YXIgcmVzb3VyY2VVUkxzID0gWwor
ICAgICAgICAiaHR0cDovL3dlYmtpdC5vcmciLCAvLyAwCisgICAgICAgICJodHRwOi8vd3d3Lndl
YmtpdC5vcmc6ODEiLCAvLyAxCisgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZy9wYXRoIiwgLy8g
MgorICAgICAgICAiaHR0cDovL3d3dy53ZWJraXQub3JnL3BhdGgiLCAvLyAzCisgICAgICAgICJo
dHRwczovL3dlYmtpdC5vcmcvIiwgLy8gNAorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0Lm9y
Zy8iLCAvLyA1CisgICAgICAgICJodHRwczovL3dlYmtpdC5vcmc6ODEvcGF0aCIsIC8vIDYKKyAg
ICAgICAgImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvcGF0aCIsIC8vIDcKKworICAgICAgICAiaHR0
cDovL3dlYmtpdC5vcmc6ODAiLCAvLyA4CisgICAgICAgICJodHRwOi8vd3d3LndlYmtpdC5vcmc6
ODAiLCAvLyA5CisgICAgICAgICJodHRwOi8vd2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTAKKyAg
ICAgICAgImh0dHA6Ly93d3cud2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTEKKyAgICAgICAgImh0
dHBzOi8vd2Via2l0Lm9yZzo4MC8iLCAvLyAxMgorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0
Lm9yZzo4MC8iLCAvLyAxMworICAgICAgICAiaHR0cHM6Ly93ZWJraXQub3JnOjgwL3BhdGgiLCAv
LyAxNAorICAgICAgICAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZzo4MC9wYXRoIiwgLy8gMTUKKwor
ICAgICAgICAiaHR0cDovL3d3dy5ib28uY29tOjgwIiwgLy8gMTYKKyAgICAgICAgImh0dHBzOi8v
d3d3LmJvby5jb206ODAvcGF0aCIsIC8vIDE3CisgICAgICAgICJodHRwOi8vd3d3Lm1vby5jb206
ODAvIiwgLy8gMTgKKyAgICAgICAgImh0dHA6Ly93d3cuYm9vLmNvbTo4MCIsIC8vIDE5CisgICAg
ICAgICJodHRwczovL3d3dy5ib28uY29tOjgwL3BhdGgiLCAvLyAyMAorICAgICAgICAiaHR0cDov
L3d3dy5tb28uY29tOjgwLyIgLy8gMjEKKyAgICBdOworCisgICAgdmFyIHJlc3VsdCA9IFtdOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgY29va2llUmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVzb3Vy
Y2VVUkxzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNvb2tpZXNbaV0sIHJlc291cmNlVVJMc1tqXSkp
CisgICAgICAgICAgICAgICAgY29va2llUmVzdWx0LnB1c2goaik7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzdWx0LnB1c2goY29va2llUmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
KworICAgIC8vIFJlc291cmNlcyBmb3IgY29va2llcworICAgIHZhciBtYXRjaE1hdHJpeCA9IFsK
KyAgICAgICAgWzAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTRdLAorICAgICAgICBbMCwgMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICAgIFsy
LCAzLCA2LCA3LCAxMCwgMTEsIDE0LCAxNV0sCisgICAgICAgIFs2LCAxNF0sCisgICAgICAgIFs0
LCA1LCA2LCA3LCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICAgIFs2LCA3LCAxNCwgMTVdLAorCisg
ICAgICAgIFs4LCAxMCwgMTIsIDE0XSwKKyAgICAgICAgWzgsIDksIDEwLCAxMSwgMTIsIDEzLCAx
NCwgMTVdLAorICAgICAgICBbMTAsIDExLCAxNCwgMTVdLAorICAgICAgICBbMTRdLAorICAgICAg
ICBbMTIsIDEzLCAxNCwgMTVdLAorICAgICAgICBbMTQsIDE1XSwKKworICAgICAgICBbXSwKKyAg
ICAgICAgW10sCisgICAgICAgIFtdCisgICAgXTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfY3Jl
YXRlQ29va2llKG5hbWUsIHZhbHVlLCBzZWN1cmUsIGRvbWFpbiwgcGF0aCwgcG9ydCkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBuYW1lOiBuYW1lLAorICAgICAgICB2YWx1ZTogdmFsdWUsCisg
ICAgICAgIGRvbWFpbjogZG9tYWluLAorICAgICAgICBwb3J0OiBwb3J0LAorICAgICAgICBwYXRo
OiBwYXRoLAorICAgICAgICBleHBpcmVzOiAiVGh1IEphbiAwMSAxOTcwIDAwOjAwOjAwIEdNVCIs
CisgICAgICAgIHNpemU6IG5hbWUubGVuZ3RoICsgdmFsdWUubGVuZ3RoLAorICAgICAgICBodHRw
T25seTogZmFsc2UsCisgICAgICAgIHNlY3VyZTogc2VjdXJlLAorICAgICAgICBzZXNzaW9uOiB0
cnVlCisgICAgfTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25s
b2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG1hdGNoZWQgdXAgd2l0aCByZXNv
dXJjZXMgY29ycmVjdGx5LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29va2llLXJlc291cmNlLW1hdGNoLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMDBiODk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC5qcwpAQCAtMCwwICsxLDExIEBACisvLyBJ
bnNwZWN0ZWQgUGFnZSBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGRvaXQoKSB7CisgICAgZnVuY3Rp
b24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBy
ZXN1bHQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBvdXRwdXQoIlsiICsgcmVzdWx0W2ldICsg
Il0iKTsKKyAgICAgICAgbm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJmcm9udGVuZF9kb2l0QW5kRHVtcCIsIGNhbGxiYWNrKTsKK30KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ0NjY0MS4uYTk5
ODM3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0xMi0wNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0aGUgd2F5IGNvb2tpZXMgYXJlIHJldHJpZXZlZCBpbiB0aGUgV2Vi
SW5zcGVjdG9yIGZyb250ZW5kLgorCisgICAgICAgIE1vdmVkIHRoZSBjb29raWUgZmlsdGVyaW5n
IGZyb20gdGhlIG5hdGl2ZSBjb2RlIGludG8gdGhlIGZyb250ZW5kIHNvIHRoYXQKKyAgICAgICAg
YWxsIGNvb2tpZXMgY2FuIGJlIHJldHJpZXZlZCByZWdhcmRsZXNzIG9mIHRoZSBhc3NvY2lhdGVk
IGRvbWFpbgorICAgICAgICAocmVxdWlyZWQgZm9yIGNlcnRhaW4gYXVkaXRzIHRvIHJ1bi4pCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjE2MAorCisg
ICAgICAgIFRlc3Q6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcmVzb3VyY2UtbWF0Y2gu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2Nvb2tpZXNGb3JEb21haW4p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdl
dCBkb2N1bWVudFVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
LnNldCBkb2N1bWVudFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UpOgorCiAyMDA5LTEyLTA3
ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHAKaW5kZXggNmIzMjY4ZC4uMTFmNThjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAKQEAgLTM1NywxMSArMzU3LDExIEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6aGlk
ZURPTU5vZGVIaWdobGlnaHQoKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmhpZGVI
aWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDb29raWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0
Q29va2llcyhsb25nIGNhbGxJZCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlcikK
ICAgICAgICAgcmV0dXJuOwotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0Q29va2llcyhj
YWxsSWQsIGRvbWFpbik7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRDb29raWVzKGNh
bGxJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGVsZXRlQ29va2llKGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmgKaW5kZXggODAyNjI5NC4uZDZlODlmYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhp
Z2hsaWdodERPTU5vZGUobG9uZyBub2RlSWQpOwogICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGln
aHQoKTsKIAotICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBk
b21haW4pOworICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7
CiAKICAgICAvLyBHZW5lcmljIGNvZGUgY2FsbGVkIGZyb20gY3VzdG9tIGltcGxlbWVudGF0aW9u
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggZTQzNmU2Yi4uNjFj
NzZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTg3LDcgKzg3
LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9u
ZyBub2RlSWQpOwogICAgICAgICB2b2lkIGhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAKLSAgICAg
ICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgZG9tYWluKTsK
KyAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkKTsKICAgICAgICAgdm9pZCBk
ZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0cmluZyBkb21haW4p
OwogCiAgICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBET01TdHJpbmcg
b2JqZWN0R3JvdXApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBjMjY5ODI1Li5mZDMxOWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtMTE0OSw0NiArMTE0OSw0NCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9t
YQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyhsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBob3N0KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpn
ZXRDb29raWVzKGxvbmcgY2FsbElkKQogewogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBM
aXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwotICAgIAorCiAgICAgLy8gSWYgd2Ug
Y2FuJ3QgZ2V0IHJhdyBjb29raWVzIC0gZmFsbCBiYWNrIHRvIFN0cmluZyByZXByZXNlbnRhdGlv
bgogICAgIFN0cmluZyBzdHJpbmdDb29raWVzTGlzdDsKLSAgICAKKwogICAgIC8vIFJldHVybiB2
YWx1ZSB0byBnZXRSYXdDb29raWVzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgZXZlcnkgY2FsbCBi
ZWNhdXNlCiAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBwbGF0Zm9ybS9uZXR3b3JrIGJhY2tl
bmQgc3BlY2lmaWMsIGFuZCB0aGUgY2FsbCB3aWxsCiAgICAgLy8gYWx3YXlzIHJldHVybiB0aGUg
c2FtZSB0cnVlL2ZhbHNlIHZhbHVlLgogICAgIGJvb2wgcmF3Q29va2llc0ltcGxlbWVudGVkID0g
ZmFsc2U7Ci0gICAgCisKICAgICBSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9
IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkgewogICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBpdC0+c2Vjb25kLT5mcmFtZSgpLT5kb2N1bWVudCgpOwot
ICAgICAgICBpZiAoZG9jdW1lbnQtPnVybCgpLmhvc3QoKSA9PSBob3N0KSB7Ci0gICAgICAgICAg
ICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAgIHJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LT5jb29raWVVUkwo
KSwgZG9jQ29va2llc0xpc3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXJhd0Nv
b2tpZXNJbXBsZW1lbnRlZCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1
cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tp
ZXMuCi0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAg
ICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7Ci0gICAgICAgICAg
ICAgICAgLy8gRXhjZXB0aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGluIHNhbmRib3hlZCBm
cmFtZXMuIFRoYXQgd29uJ3QgaGFwcGVuIGhlcmUKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNl
ICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdl
LgotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFpbnMoZG9jQ29va2ll
c0xpc3RbaV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgcmF3Q29va2llc0xpc3QuYWRkKGRv
Y0Nvb2tpZXNMaXN0W2ldKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIFZlY3RvcjxDb29r
aWU+IGRvY0Nvb2tpZXNMaXN0OworICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRS
YXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0
KTsKKworICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRoZSBTdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgY29va2llcy4KKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7
CisgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2Fu
ZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQorICAgICAgICAgICAgLy8gYmVj
YXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUg
cGFnZS4KKyAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgpOworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCisgICAg
ICAgICAgICAgICAgICAgIHJhd0Nvb2tpZXNMaXN0LmFkZChkb2NDb29raWVzTGlzdFtpXSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAoIXJhd0Nvb2tp
ZXNJbXBsZW1lbnRlZCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0Q29va2llcyhjYWxsSWQs
IG1fZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCksIHN0cmluZ0Nvb2tpZXNMaXN0KTsKICAgICBl
bHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMGRkNmZiMS4u
YmI0ZTFmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTg2
LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmly
ZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIHZv
aWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQg
Z2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgdm9p
ZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggMGNhYTFiNy4uZGQ2OTIxNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCkBA
IC02Nyw3ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB2YXIg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNvb2tpZXMsIGlzQWR2YW5j
ZWQpIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soYWxsQ29va2llcywgaXNBZHZhbmNlZCkg
eworICAgICAgICAgICAgdmFyIGNvb2tpZXMgPSBzZWxmLl9jb29raWVzRm9yRG9tYWluKGFsbENv
b2tpZXMpOwogICAgICAgICAgICAgdmFyIGRhdGFHcmlkID0gKGlzQWR2YW5jZWQgPyBzZWxmLmRh
dGFHcmlkRm9yQ29va2llcyhjb29raWVzKSA6IHNlbGYuc2ltcGxlRGF0YUdyaWRGb3JDb29raWVz
KGNvb2tpZXMpKTsKICAgICAgICAgICAgIGlmIChkYXRhR3JpZCkgewogICAgICAgICAgICAgICAg
IHNlbGYuX2RhdGFHcmlkID0gZGF0YUdyaWQ7CkBAIC04NSw3ICs4NiwzMSBAQCBXZWJJbnNwZWN0
b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyhjYWxsYmFj
aywgdGhpcy5fY29va2llRG9tYWluKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0
Q29va2llc0FzeW5jKGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2Nvb2tpZXNGb3JEb21haW46
IGZ1bmN0aW9uKGFsbENvb2tpZXMpCisgICAgeworICAgICAgICB2YXIgY29va2llc0ZvckRvbWFp
biA9IFtdOworICAgICAgICB2YXIgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwgPSBbXTsKKwor
ICAgICAgICBmb3IgKHZhciBpZCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VzKSB7CisgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VzW2lkXTsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCA9IHJlc291cmNlLmRvY3VtZW50VVJMLm1hdGNoKFdlYkluc3BlY3Rvci5V
UkxSZWdFeHApOworICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzJdID09PSB0aGlzLl9j
b29raWVEb21haW4pCisgICAgICAgICAgICAgICAgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwu
cHVzaChyZXNvdXJjZS51cmwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFsbENvb2tpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwubGVuZ3RoOyArK2opIHsK
KyAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VVUkwgPSByZXNvdXJjZVVSTHNGb3JEb2N1bWVu
dFVSTFtqXTsKKyAgICAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2ll
TWF0Y2hlc1Jlc291cmNlVVJMKGFsbENvb2tpZXNbaV0sIHJlc291cmNlVVJMKSkgeworICAgICAg
ICAgICAgICAgICAgICBjb29raWVzRm9yRG9tYWluLnB1c2goYWxsQ29va2llc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29va2llc0ZvckRvbWFpbjsKICAgICB9LAogCiAg
ICAgZGF0YUdyaWRGb3JDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI4ZGFmZWIuLjRjY2Y4NDMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQzOSw3ICs0MzksNyBAQCBXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuQ29va2llcyA9IHt9
CiAKLVdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxi
YWNrLCBjb29raWVEb21haW4pCitXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMg
PSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGNvb2tpZXMs
IGNvb2tpZXNTdHJpbmcpIHsKICAgICAgICAgaWYgKGNvb2tpZXNTdHJpbmcpCkBAIC00NDgsNyAr
NDQ4LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jID0gZnVuY3Rpb24o
Y2FsbGJhY2ssIGNvb2tpZURvbWFpbikKICAgICAgICAgICAgIGNhbGxiYWNrKGNvb2tpZXMsIHRy
dWUpOwogICAgIH0KICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAo
bXljYWxsYmFjayk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5nZXRDb29raWVzKGNhbGxJZCwgY29v
a2llRG9tYWluKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvb2tpZXMoY2FsbElkKTsKIH0K
IAogV2ViSW5zcGVjdG9yLkNvb2tpZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9u
KHJhd0Nvb2tpZVN0cmluZykKQEAgLTQ3MCw2ICs0NzAsMjggQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9uKHJhd0Nvb2tpZVN0cmluZykKICAg
ICByZXR1cm4gY29va2llczsKIH0KIAorV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hl
c1Jlc291cmNlVVJMID0gZnVuY3Rpb24oY29va2llLCByZXNvdXJjZVVSTCkKK3sKKyAgICB2YXIg
bWF0Y2ggPSByZXNvdXJjZVVSTC5tYXRjaChXZWJJbnNwZWN0b3IuVVJMUmVnRXhwKTsKKyAgICBp
ZiAoIW1hdGNoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gU2VlIFdlYkluc3BlY3Rv
ci5VUkxSZWdFeHAgZm9yIGRlZmluaXRpb25zIG9mIHRoZSBncm91cCBpbmRleCBjb25zdGFudHMu
CisgICAgaWYgKCF0aGlzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUu
ZG9tYWluLCBtYXRjaFsyXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YXIgcmVzb3Vy
Y2VQb3J0ID0gbWF0Y2hbM10gPyBtYXRjaFszXSA6IHVuZGVmaW5lZDsKKyAgICB2YXIgcmVzb3Vy
Y2VQYXRoID0gbWF0Y2hbNF0gPyBtYXRjaFs0XSA6ICcvJzsKKyAgICByZXR1cm4gKHJlc291cmNl
UGF0aC5pbmRleE9mKGNvb2tpZS5wYXRoKSA9PT0gMAorICAgICAgICAmJiAoIWNvb2tpZS5wb3J0
IHx8IHJlc291cmNlUG9ydCA9PSBjb29raWUucG9ydCkKKyAgICAgICAgJiYgKCFjb29raWUuc2Vj
dXJlIHx8IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgPT09ICdodHRwcycpKTsKK30KKworV2ViSW5z
cGVjdG9yLkNvb2tpZXMuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rp
b24oY29va2llRG9tYWluLCByZXNvdXJjZURvbWFpbikKK3sKKyAgICBpZiAoY29va2llRG9tYWlu
LmNoYXJBdCgwKSAhPT0gJy4nKQorICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNv
b2tpZURvbWFpbjsKKyAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhw
KCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJl
Z0V4cCgpICsgIiQiKSwgImkiKTsKK30KKwogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzID0g
e30KIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzLmdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZUFzeW5jID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMKaW5kZXggNzI4ZjJhYy4uZDIzYjVkYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbihyZXF1ZXN0SGVhZGVycywgdXJs
LCBkb21haW4sIHBhdGgsIGxhc3RQYXRoQ29tcG9uZW50LCBpZGVudGlmaWVyLCBtYWluUmVzb3Vy
Y2UsIGNhY2hlZCwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEZvcm1EYXRhKQorV2ViSW5zcGVjdG9y
LlJlc291cmNlID0gZnVuY3Rpb24ocmVxdWVzdEhlYWRlcnMsIHVybCwgZG9jdW1lbnRVUkwsIGRv
bWFpbiwgcGF0aCwgbGFzdFBhdGhDb21wb25lbnQsIGlkZW50aWZpZXIsIG1haW5SZXNvdXJjZSwg
Y2FjaGVkLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Rm9ybURhdGEpCiB7CiAgICAgdGhpcy5pZGVu
dGlmaWVyID0gaWRlbnRpZmllcjsKIApAQCAtMzUsNiArMzUsNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UgPSBmdW5jdGlvbihyZXF1ZXN0SGVhZGVycywgdXJsLCBkb21haW4sIHBhdGgsIGxhc3RQ
YXRoQ29tcAogICAgIHRoaXMubWFpblJlc291cmNlID0gbWFpblJlc291cmNlOwogICAgIHRoaXMu
cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVyczsKICAgICB0aGlzLnVybCA9IHVybDsKKyAg
ICB0aGlzLmRvY3VtZW50VVJMID0gZG9jdW1lbnRVUkw7CiAgICAgdGhpcy5kb21haW4gPSBkb21h
aW47CiAgICAgdGhpcy5wYXRoID0gcGF0aDsKICAgICB0aGlzLmxhc3RQYXRoQ29tcG9uZW50ID0g
bGFzdFBhdGhDb21wb25lbnQ7CkBAIC0xNjIsNiArMTYzLDE4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJ1cmwgY2hhbmdlZCIpOwogICAgIH0sCiAKKyAgICBnZXQgZG9jdW1lbnRVUkwoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50VVJMOworICAgIH0sCisKKyAgICBzZXQgZG9j
dW1lbnRVUkwoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFVSTCA9PT0geCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fZG9jdW1lbnRVUkwgPSB4OworICAg
IH0sCisKICAgICBnZXQgZG9tYWluKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21h
aW47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA3ZDVhZGFm
Li41NmRiMWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAg
LTc0LDYgKzc0LDE0IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgbWlzc2luZ0xvY2FsaXpl
ZFN0cmluZ3M6IHt9LAogICAgIHBlbmRpbmdEaXNwYXRjaGVzOiAwLAogCisgICAgLy8gUmVnRXhw
IGdyb3VwczoKKyAgICAvLyAxIC0gc2NoZW1lCisgICAgLy8gMiAtIGhvc3RuYW1lCisgICAgLy8g
MyAtID9wb3J0CisgICAgLy8gNCAtID9wYXRoCisgICAgLy8gNSAtID9mcmFnbWVudAorICAgIFVS
TFJlZ0V4cDogL14oaHR0cFtzXT98ZmlsZSk6XC9cLyhbXlwvOl0rKSg/OjooW1xkXSspKT8oPzoo
XC9bXiNdKikoPzojKC4qKSk/KT8kL2ksCisKICAgICBnZXQgcGxhdGZvcm0oKQogICAgIHsKICAg
ICAgICAgaWYgKCEoIl9wbGF0Zm9ybSIgaW4gdGhpcykpCkBAIC0xMDA1LDYgKzEwMTMsNyBAQCBX
ZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQog
ICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UoCiAgICAgICAgIHBh
eWxvYWQucmVxdWVzdEhlYWRlcnMsCiAgICAgICAgIHBheWxvYWQucmVxdWVzdFVSTCwKKyAgICAg
ICAgcGF5bG9hZC5kb2N1bWVudFVSTCwKICAgICAgICAgcGF5bG9hZC5ob3N0LAogICAgICAgICBw
YXlsb2FkLnBhdGgsCiAgICAgICAgIHBheWxvYWQubGFzdFBhdGhDb21wb25lbnQsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44467</attachid>
            <date>2009-12-08 05:02:46 -0800</date>
            <delta_ts>2009-12-08 05:21:11 -0800</delta_ts>
            <desc>patch (test cleanup)</desc>
            <filename>cookies.patch</filename>
            <type>text/plain</type>
            <size>19028</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYmMxZDFjLi42N2JmNmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTIt
MDggIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhlIHdheSBjb29r
aWVzIGFyZSByZXRyaWV2ZWQgaW4gdGhlIFdlYkluc3BlY3RvciBmcm9udGVuZC4KKworICAgICAg
ICBNb3ZlZCB0aGUgY29va2llIGZpbHRlcmluZyBmcm9tIHRoZSBuYXRpdmUgY29kZSBpbnRvIHRo
ZSBmcm9udGVuZCBzbyB0aGF0CisgICAgICAgIGFsbCBjb29raWVzIGNhbiBiZSByZXRyaWV2ZWQg
cmVnYXJkbGVzcyBvZiB0aGUgYXNzb2NpYXRlZCBkb21haW4KKyAgICAgICAgKHJlcXVpcmVkIGZv
ciBjZXJ0YWluIGF1ZGl0cyB0byBydW4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIxNjAKKworICAgICAgICAqIGluc3BlY3Rvci9jb29raWUtcmVz
b3VyY2UtbWF0Y2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY29v
a2llLXJlc291cmNlLW1hdGNoLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEyLTA4ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29va2llLXJlc291cmNlLW1hdGNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yZGMxMjljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1tYXRjaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OCBAQAorVGVzdHMgdGhhdCBjb29raWVzIGFyZSBtYXRjaGVkIHVwIHdpdGggcmVzb3VyY2VzIGNv
cnJlY3RseS4KKworWzAsMiw0LDYsOCwxMCwxMiwxNF0KK1swLDEsMiwzLDQsNSw2LDcsOCw5LDEw
LDExLDEyLDEzLDE0LDE1XQorWzIsMyw2LDcsMTAsMTEsMTQsMTVdCitbNiwxNF0KK1s0LDUsNiw3
LDEyLDEzLDE0LDE1XQorWzYsNywxNCwxNV0KK1s4LDEwLDEyLDE0XQorWzgsOSwxMCwxMSwxMiwx
MywxNCwxNV0KK1sxMCwxMSwxNCwxNV0KK1sxNF0KK1sxMiwxMywxNCwxNV0KK1sxNCwxNV0KK1td
CitbXQorW10KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNv
dXJjZS1tYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1yZXNvdXJjZS1t
YXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZTA2ZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29va2llLXJlc291cmNlLW1h
dGNoLmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgp
IHsKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG91dHB1dCgiWyIg
KyByZXN1bHRbaV0gKyAiXSIpOworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAgIGV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2RvaXRBbmREdW1wIiwgY2FsbGJhY2spOwor
fQorCitmdW5jdGlvbiBmcm9udGVuZF9kb2l0QW5kRHVtcCgpCit7CisgICAgdmFyIGNvb2tpZXMg
PSBbCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgiaW5zZWN1cmVPbmx5V2Via2l0Iiwg
IjEyMzQ1Njc4OTAiLCBmYWxzZSwgIndlYmtpdC5vcmciLCAiLyIpLAorICAgICAgICBmcm9udGVu
ZF9jcmVhdGVDb29raWUoImluc2VjdXJlQWxsV2Via2l0IiwgIjEyMzQ1Njc4OTAxMjM0NTYiLCBm
YWxzZSwgIi53ZWJraXQub3JnIiwgIi8iKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2ll
KCJpbnNlY3VyZUFsbFdlYmtpdFBhdGgiLCAiMTIzNDU2Nzg5MDEyMzQ1NiIsIGZhbHNlLCAiLndl
YmtpdC5vcmciLCAiL3BhdGgiKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJzZWN1
cmVPbmx5V2Via2l0UGF0aCIsICJiYXIiLCB0cnVlLCAid2Via2l0Lm9yZyIsICIvcGF0aCIpLAor
ICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUoInNlY3VyZUFsbFdlYmtpdCIsICJmb28iLCB0
cnVlLCAiLndlYmtpdC5vcmciLCAiLyIpLAorICAgICAgICBmcm9udGVuZF9jcmVhdGVDb29raWUo
InNlY3VyZUFsbFdlYmtpdFBhdGgiLCAiZm9vIiwgdHJ1ZSwgIi53ZWJraXQub3JnIiwgIi9wYXRo
IiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgiaW5zZWN1cmVPbmx5V2Via2l0UG9y
dCIsICIxMjM0NTY3ODkwIiwgZmFsc2UsICJ3ZWJraXQub3JnIiwgIi8iLCA4MCksCisgICAgICAg
IGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgiaW5zZWN1cmVBbGxXZWJraXRQb3J0IiwgIjEyMzQ1Njc4
OTAxMjM0NTYiLCBmYWxzZSwgIi53ZWJraXQub3JnIiwgIi8iLCA4MCksCisgICAgICAgIGZyb250
ZW5kX2NyZWF0ZUNvb2tpZSgiaW5zZWN1cmVBbGxXZWJraXRQYXRoUG9ydCIsICIxMjM0NTY3ODkw
MTIzNDU2IiwgZmFsc2UsICIud2Via2l0Lm9yZyIsICIvcGF0aCIsIDgwKSwKKyAgICAgICAgZnJv
bnRlbmRfY3JlYXRlQ29va2llKCJzZWN1cmVPbmx5V2Via2l0UGF0aFBvcnQiLCAiYmFyIiwgdHJ1
ZSwgIndlYmtpdC5vcmciLCAiL3BhdGgiLCA4MCksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNv
b2tpZSgic2VjdXJlQWxsV2Via2l0UG9ydCIsICJmb28iLCB0cnVlLCAiLndlYmtpdC5vcmciLCAi
LyIsIDgwKSwKKyAgICAgICAgZnJvbnRlbmRfY3JlYXRlQ29va2llKCJzZWN1cmVBbGxXZWJraXRQ
YXRoUG9ydCIsICJmb28iLCB0cnVlLCAiLndlYmtpdC5vcmciLCAiL3BhdGgiLCA4MCksCisgICAg
ICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgibm9uTWF0Y2hpbmcxIiwgImJhciIsIGZhbHNlLCAi
d2Via2l0LnpvbyIsICIvIiksCisgICAgICAgIGZyb250ZW5kX2NyZWF0ZUNvb2tpZSgibm9uTWF0
Y2hpbmcyIiwgImJhciIsIGZhbHNlLCAid2Via2l0Lm9yZyIsICIvYmFkUGF0aCIpLAorICAgICAg
ICBmcm9udGVuZF9jcmVhdGVDb29raWUoIm5vbk1hdGNoaW5nMyIsICJiYXIiLCB0cnVlLCAiLm1v
by5jb20iLCAiLyIpCisgICAgXTsKKworICAgIHZhciByZXNvdXJjZVVSTHMgPSBbCisgICAgICAg
ICJodHRwOi8vd2Via2l0Lm9yZyIsIC8vIDAKKyAgICAgICAgImh0dHA6Ly93d3cud2Via2l0Lm9y
Zzo4MSIsIC8vIDEKKyAgICAgICAgImh0dHA6Ly93ZWJraXQub3JnL3BhdGgiLCAvLyAyCisgICAg
ICAgICJodHRwOi8vd3d3LndlYmtpdC5vcmcvcGF0aCIsIC8vIDMKKyAgICAgICAgImh0dHBzOi8v
d2Via2l0Lm9yZy8iLCAvLyA0CisgICAgICAgICJodHRwczovL3d3dy53ZWJraXQub3JnLyIsIC8v
IDUKKyAgICAgICAgImh0dHBzOi8vd2Via2l0Lm9yZzo4MS9wYXRoIiwgLy8gNgorICAgICAgICAi
aHR0cHM6Ly93d3cud2Via2l0Lm9yZy9wYXRoIiwgLy8gNworCisgICAgICAgICJodHRwOi8vd2Vi
a2l0Lm9yZzo4MCIsIC8vIDgKKyAgICAgICAgImh0dHA6Ly93d3cud2Via2l0Lm9yZzo4MCIsIC8v
IDkKKyAgICAgICAgImh0dHA6Ly93ZWJraXQub3JnOjgwL3BhdGgiLCAvLyAxMAorICAgICAgICAi
aHR0cDovL3d3dy53ZWJraXQub3JnOjgwL3BhdGgiLCAvLyAxMQorICAgICAgICAiaHR0cHM6Ly93
ZWJraXQub3JnOjgwLyIsIC8vIDEyCisgICAgICAgICJodHRwczovL3d3dy53ZWJraXQub3JnOjgw
LyIsIC8vIDEzCisgICAgICAgICJodHRwczovL3dlYmtpdC5vcmc6ODAvcGF0aCIsIC8vIDE0Cisg
ICAgICAgICJodHRwczovL3d3dy53ZWJraXQub3JnOjgwL3BhdGgiLCAvLyAxNQorCisgICAgICAg
ICJodHRwOi8vd3d3LmJvby5jb206ODAiLCAvLyAxNgorICAgICAgICAiaHR0cHM6Ly93d3cuYm9v
LmNvbTo4MC9wYXRoIiwgLy8gMTcKKyAgICAgICAgImh0dHA6Ly93d3cubW9vLmNvbTo4MC8iLCAv
LyAxOAorICAgICAgICAiaHR0cDovL3d3dy5ib28uY29tOjgwIiwgLy8gMTkKKyAgICAgICAgImh0
dHBzOi8vd3d3LmJvby5jb206ODAvcGF0aCIsIC8vIDIwCisgICAgICAgICJodHRwOi8vd3d3Lm1v
by5jb206ODAvIiAvLyAyMQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBjb29r
aWVSZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXNvdXJjZVVSTHMu
bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuQ29va2llcy5jb29r
aWVNYXRjaGVzUmVzb3VyY2VVUkwoY29va2llc1tpXSwgcmVzb3VyY2VVUkxzW2pdKSkKKyAgICAg
ICAgICAgICAgICBjb29raWVSZXN1bHQucHVzaChqKTsKKyAgICAgICAgfQorICAgICAgICByZXN1
bHQucHVzaChjb29raWVSZXN1bHQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitm
dW5jdGlvbiBmcm9udGVuZF9jcmVhdGVDb29raWUobmFtZSwgdmFsdWUsIHNlY3VyZSwgZG9tYWlu
LCBwYXRoLCBwb3J0KQoreworICAgIHJldHVybiB7CisgICAgICAgIG5hbWU6IG5hbWUsCisgICAg
ICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgZG9tYWluOiBkb21haW4sCisgICAgICAgIHBvcnQ6
IHBvcnQsCisgICAgICAgIHBhdGg6IHBhdGgsCisgICAgICAgIGV4cGlyZXM6ICJUaHUgSmFuIDAx
IDE5NzAgMDA6MDA6MDAgR01UIiwKKyAgICAgICAgc2l6ZTogbmFtZS5sZW5ndGggKyB2YWx1ZS5s
ZW5ndGgsCisgICAgICAgIGh0dHBPbmx5OiBmYWxzZSwKKyAgICAgICAgc2VjdXJlOiBzZWN1cmUs
CisgICAgICAgIHNlc3Npb246IHRydWUKKyAgICB9OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgY29va2llcyBhcmUg
bWF0Y2hlZCB1cCB3aXRoIHJlc291cmNlcyBjb3JyZWN0bHkuCis8L3A+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMzBhYzJjMy4uOTZmZjQ3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0xMi0wOCAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgd2F5IGNvb2tpZXMgYXJlIHJl
dHJpZXZlZCBpbiB0aGUgV2ViSW5zcGVjdG9yIGZyb250ZW5kLgorCisgICAgICAgIE1vdmVkIHRo
ZSBjb29raWUgZmlsdGVyaW5nIGZyb20gdGhlIG5hdGl2ZSBjb2RlIGludG8gdGhlIGZyb250ZW5k
IHNvIHRoYXQKKyAgICAgICAgYWxsIGNvb2tpZXMgY2FuIGJlIHJldHJpZXZlZCByZWdhcmRsZXNz
IG9mIHRoZSBhc3NvY2lhdGVkIGRvbWFpbgorICAgICAgICAocmVxdWlyZWQgZm9yIGNlcnRhaW4g
YXVkaXRzIHRvIHJ1bi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjE2MAorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9jb29raWUtcmVzb3VyY2Ut
bWF0Y2guaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2ll
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2Nvb2tpZXNGb3JE
b21haW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbik6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlLmdldCBkb2N1bWVudFVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlLnNldCBkb2N1bWVudFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UpOgorCiAyMDA5
LTEyLTA2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAKaW5kZXggNmIzMjY4ZC4uMTFmNThjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5jcHAKQEAgLTM1NywxMSArMzU3LDExIEBAIHZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6aGlkZURPTU5vZGVIaWdobGlnaHQoKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmhpZGVIaWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDb29raWVz
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKK3ZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6Z2V0Q29va2llcyhsb25nIGNhbGxJZCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQ29udHJv
bGxlcikKICAgICAgICAgcmV0dXJuOwotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0Q29v
a2llcyhjYWxsSWQsIGRvbWFpbik7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRDb29r
aWVzKGNhbGxJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGVsZXRlQ29va2llKGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggODAyNjI5NC4uZDZlODlmYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGhpZ2hsaWdodERPTU5vZGUobG9uZyBub2RlSWQpOwogICAgIHZvaWQgaGlkZURPTU5vZGVI
aWdobGlnaHQoKTsKIAotICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3Ry
aW5nJiBkb21haW4pOworICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWFpbik7CiAKICAgICAvLyBHZW5lcmljIGNvZGUgY2FsbGVkIGZyb20gY3VzdG9tIGltcGxlbWVu
dGF0aW9ucy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggZTQzNmU2
Yi4uNjFjNzZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTg3
LDcgKzg3LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUo
aW4gbG9uZyBub2RlSWQpOwogICAgICAgICB2b2lkIGhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAK
LSAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgZG9t
YWluKTsKKyAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkKTsKICAgICAgICAg
dm9pZCBkZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0cmluZyBk
b21haW4pOwogCiAgICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBET01T
dHJpbmcgb2JqZWN0R3JvdXApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBjMjY5ODI1Li5mZDMxOWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtMTE0OSw0NiArMTE0OSw0NCBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmlu
ZyYgZG9tYQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2ll
cyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBob3N0KQordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpnZXRDb29raWVzKGxvbmcgY2FsbElkKQogewogICAgIGlmICghbV9mcm9udGVuZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4K
ICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwotICAgIAorCiAgICAgLy8g
SWYgd2UgY2FuJ3QgZ2V0IHJhdyBjb29raWVzIC0gZmFsbCBiYWNrIHRvIFN0cmluZyByZXByZXNl
bnRhdGlvbgogICAgIFN0cmluZyBzdHJpbmdDb29raWVzTGlzdDsKLSAgICAKKwogICAgIC8vIFJl
dHVybiB2YWx1ZSB0byBnZXRSYXdDb29raWVzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgZXZlcnkg
Y2FsbCBiZWNhdXNlCiAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBwbGF0Zm9ybS9uZXR3b3Jr
IGJhY2tlbmQgc3BlY2lmaWMsIGFuZCB0aGUgY2FsbCB3aWxsCiAgICAgLy8gYWx3YXlzIHJldHVy
biB0aGUgc2FtZSB0cnVlL2ZhbHNlIHZhbHVlLgogICAgIGJvb2wgcmF3Q29va2llc0ltcGxlbWVu
dGVkID0gZmFsc2U7Ci0gICAgCisKICAgICBSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNl
c0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRv
ciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkgewog
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpdC0+c2Vjb25kLT5mcmFtZSgpLT5kb2N1bWVu
dCgpOwotICAgICAgICBpZiAoZG9jdW1lbnQtPnVybCgpLmhvc3QoKSA9PSBob3N0KSB7Ci0gICAg
ICAgICAgICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAgIHJhd0Nv
b2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LT5jb29r
aWVVUkwoKSwgZG9jQ29va2llc0xpc3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
IXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IGNvb2tpZXMuCi0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7Ci0gICAg
ICAgICAgICAgICAgLy8gRXhjZXB0aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGluIHNhbmRi
b3hlZCBmcmFtZXMuIFRoYXQgd29uJ3QgaGFwcGVuIGhlcmUKLSAgICAgICAgICAgICAgICAvLyBi
ZWNhdXNlICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRo
ZSBwYWdlLgotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXpl
KCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFpbnMoZG9j
Q29va2llc0xpc3RbaV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgcmF3Q29va2llc0xpc3Qu
YWRkKGRvY0Nvb2tpZXNMaXN0W2ldKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIFZlY3Rv
cjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OworICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQg
PSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tp
ZXNMaXN0KTsKKworICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRoZSBTdHJp
bmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tp
ZShlYyk7CisgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkg
aW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQorICAgICAgICAgICAg
Ly8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBv
ZiB0aGUgcGFnZS4KKyAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgpOworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkp
CisgICAgICAgICAgICAgICAgICAgIHJhd0Nvb2tpZXNMaXN0LmFkZChkb2NDb29raWVzTGlzdFtp
XSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAoIXJh
d0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0Q29va2llcyhj
YWxsSWQsIG1fZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCksIHN0cmluZ0Nvb2tpZXNMaXN0KTsK
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMGRk
NmZiMS4uYmI0ZTFmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9h
ZEV2ZW50KERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291
cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAg
ICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggMGNhYTFiNy4uYjMx
YjdlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1z
Vmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3
LmpzCkBAIC02Nyw3ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAg
ICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNvb2tpZXMsIGlz
QWR2YW5jZWQpIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soYWxsQ29va2llcywgaXNBZHZh
bmNlZCkgeworICAgICAgICAgICAgdmFyIGNvb2tpZXMgPSBzZWxmLl9jb29raWVzRm9yRG9tYWlu
KGFsbENvb2tpZXMpOwogICAgICAgICAgICAgdmFyIGRhdGFHcmlkID0gKGlzQWR2YW5jZWQgPyBz
ZWxmLmRhdGFHcmlkRm9yQ29va2llcyhjb29raWVzKSA6IHNlbGYuc2ltcGxlRGF0YUdyaWRGb3JD
b29raWVzKGNvb2tpZXMpKTsKICAgICAgICAgICAgIGlmIChkYXRhR3JpZCkgewogICAgICAgICAg
ICAgICAgIHNlbGYuX2RhdGFHcmlkID0gZGF0YUdyaWQ7CkBAIC04NSw3ICs4NiwzMSBAQCBXZWJJ
bnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyhj
YWxsYmFjaywgdGhpcy5fY29va2llRG9tYWluKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuZ2V0Q29va2llc0FzeW5jKGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2Nvb2tpZXNGb3JE
b21haW46IGZ1bmN0aW9uKGFsbENvb2tpZXMpCisgICAgeworICAgICAgICB2YXIgY29va2llc0Zv
ckRvbWFpbiA9IFtdOworICAgICAgICB2YXIgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwgPSBb
XTsKKworICAgICAgICBmb3IgKHZhciBpZCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VzKSB7Cisg
ICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VzW2lkXTsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCA9IHJlc291cmNlLmRvY3VtZW50VVJMLm1hdGNoKFdlYkluc3Bl
Y3Rvci5VUkxSZWdFeHApOworICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzJdID09PSB0
aGlzLl9jb29raWVEb21haW4pCisgICAgICAgICAgICAgICAgcmVzb3VyY2VVUkxzRm9yRG9jdW1l
bnRVUkwucHVzaChyZXNvdXJjZS51cmwpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhbGxDb29raWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IHJlc291cmNlVVJMc0ZvckRvY3VtZW50VVJMLmxlbmd0aDsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJlc291cmNlVVJMID0gcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRV
Ukxbal07CisgICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1h
dGNoZXNSZXNvdXJjZVVSTChhbGxDb29raWVzW2ldLCByZXNvdXJjZVVSTCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29va2llc0ZvckRvbWFpbi5wdXNoKGFsbENvb2tpZXNbaV0pOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvb2tpZXNGb3JEb21haW47CiAgICAgfSwKIAogICAg
IGRhdGFHcmlkRm9yQ29va2llczogZnVuY3Rpb24oY29va2llcykKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01BZ2VudC5qcwppbmRleCAyOGRhZmViLi40Y2NmODQzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC00MzksNyArNDM5LDcgQEAgV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNvb2tpZXMgPSB7fQog
Ci1XZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMgPSBmdW5jdGlvbihjYWxsYmFj
aywgY29va2llRG9tYWluKQorV2ViSW5zcGVjdG9yLkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jID0g
ZnVuY3Rpb24oY2FsbGJhY2spCiB7CiAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhjb29raWVzLCBj
b29raWVzU3RyaW5nKSB7CiAgICAgICAgIGlmIChjb29raWVzU3RyaW5nKQpAQCAtNDQ4LDcgKzQ0
OCw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyA9IGZ1bmN0aW9uKGNh
bGxiYWNrLCBjb29raWVEb21haW4pCiAgICAgICAgICAgICBjYWxsYmFjayhjb29raWVzLCB0cnVl
KTsKICAgICB9CiAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKG15
Y2FsbGJhY2spOwotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29va2llcyhjYWxsSWQsIGNvb2tp
ZURvbWFpbik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRDb29raWVzKGNhbGxJZCk7CiB9CiAK
IFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llc0Zyb21TdHJpbmcgPSBmdW5jdGlvbihy
YXdDb29raWVTdHJpbmcpCkBAIC00NzAsNiArNDcwLDI4IEBAIFdlYkluc3BlY3Rvci5Db29raWVz
LmJ1aWxkQ29va2llc0Zyb21TdHJpbmcgPSBmdW5jdGlvbihyYXdDb29raWVTdHJpbmcpCiAgICAg
cmV0dXJuIGNvb2tpZXM7CiB9CiAKK1dlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1hdGNoZXNS
ZXNvdXJjZVVSTCA9IGZ1bmN0aW9uKGNvb2tpZSwgcmVzb3VyY2VVUkwpCit7CisgICAgdmFyIG1h
dGNoID0gcmVzb3VyY2VVUkwubWF0Y2goV2ViSW5zcGVjdG9yLlVSTFJlZ0V4cCk7CisgICAgaWYg
KCFtYXRjaCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFNlZSBXZWJJbnNwZWN0b3Iu
VVJMUmVnRXhwIGZvciBkZWZpbml0aW9ucyBvZiB0aGUgZ3JvdXAgaW5kZXggY29uc3RhbnRzLgor
ICAgIGlmICghdGhpcy5jb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oY29va2llLmRv
bWFpbiwgbWF0Y2hbMl0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFyIHJlc291cmNl
UG9ydCA9IG1hdGNoWzNdID8gbWF0Y2hbM10gOiB1bmRlZmluZWQ7CisgICAgdmFyIHJlc291cmNl
UGF0aCA9IG1hdGNoWzRdID8gbWF0Y2hbNF0gOiAnLyc7CisgICAgcmV0dXJuIChyZXNvdXJjZVBh
dGguaW5kZXhPZihjb29raWUucGF0aCkgPT09IDAKKyAgICAgICAgJiYgKCFjb29raWUucG9ydCB8
fCByZXNvdXJjZVBvcnQgPT0gY29va2llLnBvcnQpCisgICAgICAgICYmICghY29va2llLnNlY3Vy
ZSB8fCBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpID09PSAnaHR0cHMnKSk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbiA9IGZ1bmN0aW9u
KGNvb2tpZURvbWFpbiwgcmVzb3VyY2VEb21haW4pCit7CisgICAgaWYgKGNvb2tpZURvbWFpbi5j
aGFyQXQoMCkgIT09ICcuJykKKyAgICAgICAgcmV0dXJuIHJlc291cmNlRG9tYWluID09PSBjb29r
aWVEb21haW47CisgICAgcmV0dXJuICEhcmVzb3VyY2VEb21haW4ubWF0Y2gobmV3IFJlZ0V4cCgi
XihbXlxcLl0rXFwuKT8iICsgY29va2llRG9tYWluLnN1YnN0cmluZygxKS5lc2NhcGVGb3JSZWdF
eHAoKSArICIkIiksICJpIik7Cit9CisKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVycyA9IHt9
CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVycy5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGVB
c3luYyA9IGZ1bmN0aW9uKG5vZGUsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlLmpzCmluZGV4IDcyOGYyYWMuLmQyM2I1ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24ocmVxdWVzdEhlYWRlcnMsIHVybCwg
ZG9tYWluLCBwYXRoLCBsYXN0UGF0aENvbXBvbmVudCwgaWRlbnRpZmllciwgbWFpblJlc291cmNl
LCBjYWNoZWQsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RGb3JtRGF0YSkKK1dlYkluc3BlY3Rvci5S
ZXNvdXJjZSA9IGZ1bmN0aW9uKHJlcXVlc3RIZWFkZXJzLCB1cmwsIGRvY3VtZW50VVJMLCBkb21h
aW4sIHBhdGgsIGxhc3RQYXRoQ29tcG9uZW50LCBpZGVudGlmaWVyLCBtYWluUmVzb3VyY2UsIGNh
Y2hlZCwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEZvcm1EYXRhKQogewogICAgIHRoaXMuaWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CiAKQEAgLTM1LDYgKzM1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlID0gZnVuY3Rpb24ocmVxdWVzdEhlYWRlcnMsIHVybCwgZG9tYWluLCBwYXRoLCBsYXN0UGF0
aENvbXAKICAgICB0aGlzLm1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZTsKICAgICB0aGlzLnJl
cXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnM7CiAgICAgdGhpcy51cmwgPSB1cmw7CisgICAg
dGhpcy5kb2N1bWVudFVSTCA9IGRvY3VtZW50VVJMOwogICAgIHRoaXMuZG9tYWluID0gZG9tYWlu
OwogICAgIHRoaXMucGF0aCA9IHBhdGg7CiAgICAgdGhpcy5sYXN0UGF0aENvbXBvbmVudCA9IGxh
c3RQYXRoQ29tcG9uZW50OwpAQCAtMTYyLDYgKzE2MywxOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygi
dXJsIGNoYW5nZWQiKTsKICAgICB9LAogCisgICAgZ2V0IGRvY3VtZW50VVJMKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudFVSTDsKKyAgICB9LAorCisgICAgc2V0IGRvY3Vt
ZW50VVJMKHgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRVUkwgPT09IHgpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2RvY3VtZW50VVJMID0geDsKKyAgICB9
LAorCiAgICAgZ2V0IGRvbWFpbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tYWlu
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMmZkMDc2Yy4u
OWZjYzY1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC03
NCw2ICs3NCwxNCBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgIG1pc3NpbmdMb2NhbGl6ZWRT
dHJpbmdzOiB7fSwKICAgICBwZW5kaW5nRGlzcGF0Y2hlczogMCwKIAorICAgIC8vIFJlZ0V4cCBn
cm91cHM6CisgICAgLy8gMSAtIHNjaGVtZQorICAgIC8vIDIgLSBob3N0bmFtZQorICAgIC8vIDMg
LSA/cG9ydAorICAgIC8vIDQgLSA/cGF0aAorICAgIC8vIDUgLSA/ZnJhZ21lbnQKKyAgICBVUkxS
ZWdFeHA6IC9eKGh0dHBbc10/fGZpbGUpOlwvXC8oW15cLzpdKykoPzo6KFtcZF0rKSk/KD86KFwv
W14jXSopKD86IyguKikpPyk/JC9pLAorCiAgICAgZ2V0IHBsYXRmb3JtKCkKICAgICB7CiAgICAg
ICAgIGlmICghKCJfcGxhdGZvcm0iIGluIHRoaXMpKQpAQCAtMTAwOSw2ICsxMDE3LDcgQEAgV2Vi
SW5zcGVjdG9yLmFkZFJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKICAg
ICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKAogICAgICAgICBwYXls
b2FkLnJlcXVlc3RIZWFkZXJzLAogICAgICAgICBwYXlsb2FkLnJlcXVlc3RVUkwsCisgICAgICAg
IHBheWxvYWQuZG9jdW1lbnRVUkwsCiAgICAgICAgIHBheWxvYWQuaG9zdCwKICAgICAgICAgcGF5
bG9hZC5wYXRoLAogICAgICAgICBwYXlsb2FkLmxhc3RQYXRoQ29tcG9uZW50LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>