<?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>33243</bug_id>
          
          <creation_ts>2010-01-05 17:28:29 -0800</creation_ts>
          <short_desc>[v8] Let ScriptController have more than one windowShell</short_desc>
          <delta_ts>2011-10-13 15:36:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>177486</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-05 17:28:29 -0800</bug_when>
    <thetext>[v8] Let ScriptController have more than one windowShell</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177488</commentid>
    <comment_count>1</comment_count>
      <attachid>45948</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-05 17:30:53 -0800</bug_when>
    <thetext>Created attachment 45948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177601</commentid>
    <comment_count>2</comment_count>
      <attachid>45948</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 09:14:57 -0800</bug_when>
    <thetext>Comment on attachment 45948
Patch

ShellMap seems like a slightly lame name.  WindowShellMap might be better.  or WorldToShellMap?

 142         // JSC triggers a GC here, but we haven&apos;t historically.

Do we know why JSC does?  Maybe to make leak detection easier? (which wouldn&apos;t be a good reason, but it&apos;s all I can think of atm)

I might have put this:
// Force the mainWindowShell to exist.
 237     windowShell(mainThreadNormalWorld());
in a function called &quot;ensureMainWindowShell()&quot; (then you wouldn&apos;t need a comment).

Oh.  Why not just call mainWorldWindowShell()?

C++ is really lame about constructs like these:
for (ShellMap::iterator iter = m_windowShells.begin(); iter != m_windowShells.end(); ++iter)
 486         iter-&gt;second-&gt;clearForNavigation();
I guess the best way would be to use a MACRO to save the copy/paste iteration code.  WE could use function pointers, but those are complicated.  I think for now the copy/paste might be OK, but it&apos;s still lame. :(  Especially since we have 4 copy/pastes of that code!

Does the JS version destroy all shells in:
464495 void ScriptController::destroyWindowShell()
?
Seems that method is poorly named if that&apos;s the case.

I&apos;m not sure why:
 67     V8DOMWindowShell* windowShell(DOMWrapperWorld* world)
or
 72     V8DOMWindowShell* existingWindowShell(DOMWrapperWorld* world) const
would be in the header like that.

I wonder if &quot;if (iter)&quot; would function the same as &quot;iter != m_windowShells.end())&quot;

&quot;world&quot; is superfluous:
 197     V8DOMWindowShell* initScript(DOMWrapperWorld* world);

 48     // For some reason JSDOMWindowShell uses the DOMWindow as the first arg...
Sam Weinig would know why.

This seems OK.  See comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177614</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 09:31:54 -0800</bug_when>
    <thetext>Attachment 45948 was posted by a committer and has review+, assigning to Adam Barth for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177685</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-06 12:00:17 -0800</bug_when>
    <thetext>Thanks for the review.  I&apos;m entertained that almost all of your comments are things I copy/pasted from the JSC version.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177845</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-06 16:16:11 -0800</bug_when>
    <thetext>Committed r52877: &lt;http://trac.webkit.org/changeset/52877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177862</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-06 16:47:14 -0800</bug_when>
    <thetext>Committed r52882: &lt;http://trac.webkit.org/changeset/52882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177864</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-06 16:47:53 -0800</bug_when>
    <thetext>I screwed up landing this.  I&apos;ll try again when the world is greener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178036</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 23:44:45 -0800</bug_when>
    <thetext>The world is green!  Finally!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179295</commentid>
    <comment_count>9</comment_count>
      <attachid>45948</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-10 23:05:07 -0800</bug_when>
    <thetext>Comment on attachment 45948
Patch

Clearing the r+ flag for now.  I need to re-do an earlier patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483562</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-13 15:36:52 -0700</bug_when>
    <thetext>If we want to solve this problem, we&apos;ll need to start over.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45948</attachid>
            <date>2010-01-05 17:30:53 -0800</date>
            <delta_ts>2010-06-10 20:13:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33243-20100105173051.patch</filename>
            <type>text/plain</type>
            <size>18163</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2RkMWE4Ny4uMDY1ZmYxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0NyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFt2OF0gTGV0IFNjcmlwdENvbnRyb2xsZXIgaGF2ZSBt
b3JlIHRoYW4gb25lIHdpbmRvd1NoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzI0MworCisgICAgICAgIFRoaXMgcGF0Y2ggbGV0cyBTY3JpcHRD
b250cm9sbGVyIGhhdmUgbW9yZSB0aGFuIG9uZSB3aW5kb3dTaGVsbC4gIFdlJ3JlCisgICAgICAg
IGN1cnJlbnRseSBvbmx5IHVzaW5nIG9uZSBvZiB0aGVtIChmb3IgdGhlIG1haW4gd29ybGQpLCBi
dXQgdGhpcyBwYXRjaAorICAgICAgICBsZXRzIHVzIHVzZSBvdGhlciBvbmVzIGZvciBpc29sYXRl
ZCB3b3JsZHMgc29vbi4KKworICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjp1cGRhdGVTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6bWFpbldvcmxkV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpjbGVhckZvckNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmRlc3Ryb3lXaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2lu
ZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhpc3RpbmdX
aW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cHJveHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2lu
ZG93U2hlbGw6OlY4RE9NV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjb252ZXJ0TmV3Tm9kZVRvVjhPYmplY3Qp
OgorCisyMDEwLTAxLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgW3Y4XSBNb3ZlIFY4RE9N
V2luZG93U2hlbGwgdG8gU2NyaXB0Q29udHJvbGxlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMyMzIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENv
bnRyb2xsZXJCYXNlLmNwcAppbmRleCA3MmM5ZjQ1Li41OWIyYTFiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcApAQCAtNTMsNiArNTMsMjUgQEAgU2NyaXB0VmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1NjcmlwdFZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgU2Ny
aXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwo
KSA6IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CisKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8
IGlzUGF1c2VkKCkpCisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworCisgICAgYm9vbCB3
YXNJbkV4ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0ZVNjcmlwdDsKKyAgICBtX2luRXhlY3V0ZVNj
cmlwdCA9IHRydWU7CisKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZUluV29ybGQo
c291cmNlQ29kZSwgd29ybGQpOworCisgICAgaWYgKCF3YXNJbkV4ZWN1dGVTY3JpcHQpIHsKKyAg
ICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxzZTsKKyAgICAgICAgRG9jdW1lbnQ6OnVwZGF0
ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
IAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCB1c2VyR2VzdHVyZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQpCiB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzYzQ0MGRiLi5kNzc4MTIy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQ0NiwyNCAr
NDQ2LDQgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2Vu
ZGlmCiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpCi17Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7
Ci0KLSAgICBpZiAoIWlzRW5hYmxlZCgpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZSgpOwotCi0gICAgYm9vbCB3YXNJbkV4ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0
ZVNjcmlwdDsKLSAgICBtX2luRXhlY3V0ZVNjcmlwdCA9IHRydWU7Ci0KLSAgICBTY3JpcHRWYWx1
ZSByZXN1bHQgPSBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwotCi0gICAgaWYg
KCF3YXNJbkV4ZWN1dGVTY3JpcHQpIHsKLSAgICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxz
ZTsKLSAgICAgICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDU2YTAzOC4uNjE5MjNi
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02MCw2ICs2
MCwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpCit7CisgICAgcmV0dXJuIElzb2xh
dGVkV29ybGQ6OmNyZWF0ZSgpOworfQorCitWOERPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9s
bGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit7CisgICAgQVNTRVJUKCFt
X3dpbmRvd1NoZWxscy5jb250YWlucyh3b3JsZCkpOworCisgICAgUmVmUHRyPFY4RE9NV2luZG93
U2hlbGw+IHdpbmRvd1NoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUsIHdv
cmxkKTsKKyAgICBtX3dpbmRvd1NoZWxscy5hZGQod29ybGQsIHdpbmRvd1NoZWxsKTsKKyAgICB3
aW5kb3dTaGVsbC0+aW5pdENvbnRleHRJZk5lZWRlZCgpOworICAgIHdpbmRvd1NoZWxsLT51cGRh
dGVEb2N1bWVudCgpOworCisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmRpc3BhdGNoRGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKKworICAgIHJldHVybiB3aW5kb3dTaGVsbC5nZXQo
KTsKK30KKwogdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRocmVhZGluZyA9IGZhbHNlOwpAQCAtMTA2LDcg
KzEyNSw2IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1l
KQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxzZSkKICAgICAsIG1fcGF1c2Vk
KGZhbHNlKQogICAgICwgbV9wcm94eShuZXcgVjhQcm94eShmcmFtZSkpCi0gICAgLCBtX3dpbmRv
d1NoZWxsKFY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZShmcmFtZSkpCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0KDApCiAjZW5kaWYK
QEAgLTExNyw3ICsxMzUsMTIgQEAgU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihG
cmFtZSogZnJhbWUpCiBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcigpCiB7CiAg
ICAgbV9wcm94eS0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgbV93aW5kb3dTaGVsbC5jbGVhcigp
OworCisgICAgaWYgKCFtX3dpbmRvd1NoZWxscy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV93aW5k
b3dTaGVsbHMuY2xlYXIoKTsKKyAgICAgICAgbV9tYWluV29ybGRXaW5kb3dTaGVsbCA9IDA7Cisg
ICAgICAgIC8vIEpTQyB0cmlnZ2VycyBhIEdDIGhlcmUsIGJ1dCB3ZSBoYXZlbid0IGhpc3Rvcmlj
YWxseS4KKyAgICB9CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmpl
Y3RzKCkKQEAgLTE0Miw3ICsxNjUsOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2Ny
aXB0T2JqZWN0cygpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlU2VjdXJpdHlPcmln
aW4oKQogewotICAgIG1fd2luZG93U2hlbGwtPnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCk7CisgICAg
Zm9yIChTaGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0
ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgaXRlci0+c2Vjb25k
LT51cGRhdGVTZWN1cml0eU9yaWdpbigpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpCkBAIC0yMDgsNyArMjMyLDkgQEAgYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjphbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdAogdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3Js
ZElELCBjb25zdCBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4mIHNvdXJjZXMpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgd2lsbCBuZWVkIHRvIGdldCByZW9yZ2FuaXplZCBvbmNlIHdlIGhhdmUgYSB3
aW5kb3dTaGVsbCBmb3IgdGhlIGlzb2xhdGVkIHdvcmxkLgotICAgIG1fd2luZG93U2hlbGwtPmlu
aXRDb250ZXh0SWZOZWVkZWQoKTsKKyAgICAKKyAgICAvLyBGb3JjZSB0aGUgbWFpbldpbmRvd1No
ZWxsIHRvIGV4aXN0LgorICAgIHdpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsK
ICAgICBtX3Byb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh3b3JsZElELCBzb3VyY2VzLCAw
KTsKIH0KIApAQCAtMjQ4LDYgKzI3NCwxMyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIHJldHVy
biBTY3JpcHRWYWx1ZShvYmplY3QpOwogfQogCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCopCit7CisgICAgLy8gRklYTUU6IE1vdmUgaXNvbGF0ZWQgd29ybGQgZXhlY3V0aW9uIHRvIGhl
cmUhCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKK30K
Kwogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBs
aW5lTnVtYmVyKQogewogICAgIG1fcHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGlu
ZU51bWJlcik7CkBAIC0yOTMsMTEgKzMyNiw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG93
TWVtb3J5Tm90aWZpY2F0aW9uKCkKICAgICB2ODo6Vjg6Okxvd01lbW9yeU5vdGlmaWNhdGlvbigp
OwogfQogCi1ib29sIFNjcmlwdENvbnRyb2xsZXI6OmhhdmVJbnRlcnByZXRlcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fd2luZG93U2hlbGwtPmlzQ29udGV4dEluaXRpYWxpemVkKCk7Ci19Ci0K
IGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKCkgY29uc3QKIHsKICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBtX3Byb3h5LT5mcmFtZSgpLT5zZXR0aW5ncygpOwpAQCAtNDM5LDEwICs0
NjcsMTEgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZv
clBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQKICAgICByZXR1cm4gbnBDcmVhdGVWOFNj
cmlwdE9iamVjdCgwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4cGx1Z2luKSwgd2lu
ZG93KTsKIH0KIAotVjhET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6bWFpbldvcmxk
V2luZG93U2hlbGwoKSBjb25zdAorVjhET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6
bWFpbldvcmxkV2luZG93U2hlbGwoKQogewotICAgIG1fd2luZG93U2hlbGwtPmluaXRDb250ZXh0
SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV93aW5kb3dTaGVsbC5nZXQoKTsKKyAgICBpZiAoIW1f
bWFpbldvcmxkV2luZG93U2hlbGwpCisgICAgICAgIG1fbWFpbldvcmxkV2luZG93U2hlbGwgPSB3
aW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIG1fbWFpbldv
cmxkV2luZG93U2hlbGwuZ2V0KCk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJX
aW5kb3dTaGVsbCgpCkBAIC00NTMsMTggKzQ4MiwyMCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmNsZWFyV2luZG93U2hlbGwoKQogICAgIC8vIFY4IGJpbmRpbmcgZXhwZWN0cyBTY3JpcHRDb250
cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsIG9ubHkgYmUgY2FsbGVkCiAgICAgLy8gd2hlbiBhIGZy
YW1lIGlzIGxvYWRpbmcgYSBuZXcgcGFnZS4gVjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZp
Z2F0aW9uCiAgICAgLy8gY3JlYXRlcyBhIG5ldyBjb250ZXh0IGZvciB0aGUgbmV3IHBhZ2UuCi0g
ICAgbV93aW5kb3dTaGVsbC0+Y2xlYXJGb3JOYXZpZ2F0aW9uKCk7CisgICAgZm9yIChTaGVsbE1h
cDo6aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5k
b3dTaGVsbHMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgaXRlci0+c2Vjb25kLT5jbGVhckZvck5h
dmlnYXRpb24oKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhckZvckNsb3NlKCkK
IHsKLSAgICBtX3dpbmRvd1NoZWxsLT5jbGVhckZvckNsb3NlKCk7CisgICAgZm9yIChTaGVsbE1h
cDo6aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5k
b3dTaGVsbHMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgaXRlci0+c2Vjb25kLT5jbGVhckZvckNs
b3NlKCk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1NoZWxsKCkK
IHsKLSAgICBtX3dpbmRvd1NoZWxsLT5jbGVhckZvckNsb3NlKCk7Ci0gICAgbV93aW5kb3dTaGVs
bC0+ZGVzdHJveUdsb2JhbCgpOworICAgIG1fd2luZG93U2hlbGxzLmNsZWFyKCk7CisgICAgbV9t
YWluV29ybGRXaW5kb3dTaGVsbCA9IDA7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0
YWNoRGVidWdnZXIodm9pZCopCkBAIC00NzQsNyArNTA1LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6YXR0YWNoRGVidWdnZXIodm9pZCopCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6dXBk
YXRlRG9jdW1lbnQoKQogewotICAgIG1fd2luZG93U2hlbGwtPnVwZGF0ZURvY3VtZW50KCk7Cisg
ICAgLy8gVGhpcyBzZWVtcyByZWR1ZGFudCwgYnV0IEpTQyBkb2VzIGl0LgorICAgIGlmICghbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChTaGVsbE1hcDo6
aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5kb3dT
aGVsbHMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgaXRlci0+c2Vjb25kLT51cGRhdGVEb2N1bWVu
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IDk1OGViZmIuLjFjM2UwMzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5oCkBAIC01MSwyMiArNTEsNDAgQEAgY2xhc3MgSFRNTFBsdWdJbkVs
ZW1lbnQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2NyaXB0U3RhdGU7CiBjbGFz
cyBTdHJpbmc7CitjbGFzcyBWOERPTVdpbmRvdzsKIGNsYXNzIFdpZGdldDsKIGNsYXNzIFhTU0F1
ZGl0b3I7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgeworICAgIHR5cGVkZWYgV1RGOjpIYXNo
TWFwPCBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgUmVmUHRyPFY4RE9NV2luZG93U2hlbGw+ID4g
U2hlbGxNYXA7CisKIHB1YmxpYzoKICAgICBTY3JpcHRDb250cm9sbGVyKEZyYW1lKik7CiAgICAg
flNjcmlwdENvbnRyb2xsZXIoKTsKIAotICAgIC8vIEZJWE1FOiBWOFByb3h5IHNob3VsZCBlaXRo
ZXIgYmUgZm9sZGVkIGludG8gU2NyaXB0Q29udHJvbGxlcgotICAgIC8vIG9yIHRoaXMgYWNjZXNz
b3Igc2hvdWxkIGJlIG1hZGUgSlNQcm94eSoKLSAgICBWOFByb3h5KiBwcm94eSgpIHsgcmV0dXJu
IG1fcHJveHkuZ2V0KCk7IH0KLQotICAgIFY4RE9NV2luZG93U2hlbGwqIG1haW5Xb3JsZFdpbmRv
d1NoZWxsKCkgY29uc3Q7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBj
cmVhdGVXb3JsZCgpOworCisgICAgVjhET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwoRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCkKKyAgICB7CisgICAgICAgIFNoZWxsTWFwOjppdGVyYXRvciBpdGVy
ID0gbV93aW5kb3dTaGVsbHMuZmluZCh3b3JsZCk7CisgICAgICAgIHJldHVybiAoaXRlciAhPSBt
X3dpbmRvd1NoZWxscy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQuZ2V0KCkgOiBpbml0U2NyaXB0KHdv
cmxkKTsKKyAgICB9CisgICAgVjhET01XaW5kb3dTaGVsbCogZXhpc3RpbmdXaW5kb3dTaGVsbChE
T01XcmFwcGVyV29ybGQqIHdvcmxkKSBjb25zdAorICAgIHsKKyAgICAgICAgU2hlbGxNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5kKHdvcmxkKTsKKyAgICAgICAg
cmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpKSA/IGl0ZXItPnNlY29uZC5nZXQo
KSA6IDA7CisgICAgfQorICAgIFY4RE9NV2luZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKKyAgICB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8RE9N
V3JhcHBlcldvcmxkKj4mKTsKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYpOwogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBTY3Jp
cHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9v
bCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBib29sIHVzZXJHZXN0dXJlID0g
ZmFsc2UsIGJvb2wgcmVwbGFjZURvY3VtZW50ID0gdHJ1ZSk7CkBAIC03NCwxMCArOTIsMTggQEAg
cHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogICAgIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIC8vIEV2YWx1YXRlIGEgc2NyaXB0IGZp
bGUgaW4gdGhlIGVudmlyb25tZW50IG9mIHRoaXMgcHJveHkuCi0gICAgLy8gSWYgc3VjY2VlZGVk
LCAnc3VjYycgaXMgc2V0IHRvIHRydWUgYW5kIHJlc3VsdCBpcyByZXR1cm5lZAotICAgIC8vIGFz
IGEgc3RyaW5nLgogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmKTsKKyAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYsIERPTVdyYXBwZXJXb3JsZCopOworCisgICAgLy8gPT09PSBFbmQgaWRlbnRpY2FsIG1h
dGNoIHdpdGggSlNDJ3MgU2NyaXB0Q29udHJvbGxlciA9PT0gLy8KKworICAgIC8vIEZJWE1FOiBW
OFByb3h5IHNob3VsZCBlaXRoZXIgYmUgZm9sZGVkIGludG8gU2NyaXB0Q29udHJvbGxlcgorICAg
IC8vIG9yIHRoaXMgYWNjZXNzb3Igc2hvdWxkIGJlIG1hZGUgSlNQcm94eSoKKyAgICBWOFByb3h5
KiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZXZlbnR1YWxseSByZW1vdmUgYWxsIGNsaWVudHMgb2YgdGhpcyBtZXRob2QuIFRoZQor
ICAgIC8vIHByb2JsZW0gaXMgdGhhdCBzb21lIG9mIHRoZW0gYXJlIGluIHZlcnkgaG90IGNvZGUg
cGF0aHMuCisgICAgVjhET01XaW5kb3dTaGVsbCogbWFpbldvcmxkV2luZG93U2hlbGwoKTsKIAog
ICAgIHZvaWQgZXZhbHVhdGVJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgY29uc3Qg
VmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+Jik7CiAKQEAgLTkzLDEyICsxMTksNiBAQCBwdWJsaWM6
CiAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgZXh0ZW5zaW9uR3JvdXAgaGVyZS4KICAgICB2b2lk
IGV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxT
Y3JpcHRTb3VyY2VDb2RlPiYsIGludCBleHRlbnNpb25Hcm91cCk7CiAKLSAgICAvLyBNYXNxdWVy
YWRlICd0aGlzJyBhcyB0aGUgd2luZG93U2hlbGwuCi0gICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBh
IGhhY2ssIGJ1dCBwcm92aWRlcyByZWFzb25hYmxlIGNvbXBhdGliaWxpdHkKLSAgICAvLyB3aXRo
IHdoYXQgSlNDIGRvZXMgYXMgd2VsbC4KLSAgICBTY3JpcHRDb250cm9sbGVyKiB3aW5kb3dTaGVs
bChET01XcmFwcGVyV29ybGQqKSB7IHJldHVybiB0aGlzOyB9Ci0gICAgU2NyaXB0Q29udHJvbGxl
ciogZXhpc3RpbmdXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqKSB7IHJldHVybiB0aGlzOyB9
Ci0KICAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgeyByZXR1cm4gbV9YU1NBdWRpdG9yLmdl
dCgpOyB9CiAKICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CkBAIC0xMTEsOSArMTMxLDYgQEAg
cHVibGljOgogCiAgICAgUGFzc1NjcmlwdEluc3RhbmNlIGNyZWF0ZVNjcmlwdEluc3RhbmNlRm9y
V2lkZ2V0KFdpZGdldCopOwogCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGphdmFzY3JpcHQgZW5naW5l
IGhhcyBiZWVuIGluaXRpYWxpemVkLgotICAgIGJvb2wgaGF2ZUludGVycHJldGVyKCkgY29uc3Q7
Ci0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IHZvaWQqIGlz
IGEgY29tcGlsZSBoYWNrLgpAQCAtMTcwLDEwICsxODcsNiBAQCBwdWJsaWM6CiAgICAgTlBPYmpl
Y3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAotICAgIC8vIER1bW15IG1ldGhv
ZCB0byBhdm9pZCBhIGJ1bmNoIG9mIGlmZGVmJ3MgaW4gV2ViQ29yZS4KLSAgICB2b2lkIGV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkKikgeyB9
Ci0gICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiYg
d29ybGRzKTsKLQogICAgIC8vIFNjcmlwdCBzdGF0ZSBmb3IgdGhlIG1haW4gd29ybGQgY29udGV4
dC4KICAgICBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoKTsKIApAQCAtMTgxLDcg
KzE5NCwxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNjcmlwdFN0YXRlKiBjdXJyZW50U2NyaXB0
U3RhdGUoKTsKIAogcHJpdmF0ZToKKyAgICBWOERPTVdpbmRvd1NoZWxsKiBpbml0U2NyaXB0KERP
TVdyYXBwZXJXb3JsZCogd29ybGQpOworCisgICAgU2hlbGxNYXAgbV93aW5kb3dTaGVsbHM7CiAg
ICAgRnJhbWUqIG1fZnJhbWU7CisKKyAgICAvLyBUaGlzIGlzIGEgY2FjaGUgb2YgdGhlIG1haW4g
d29ybGQncyB3aW5kb3dTaGVsbC4gIFdlIGhhdmUgdGhpcworICAgIC8vIGJlY2F1c2Ugd2UgbmVl
ZCBhY2Nlc3MgdG8gaXQgZHVyaW5nIHNvbWUgd3JhcHBlciBvcGVyYXRpb25zIHRoYXQKKyAgICAv
LyBhcmUgcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlLiAgVGhvc2UgY2FsbCBzaXRlcyBhcmUgd3Jvbmcs
IGJ1dCBJJ20KKyAgICAvLyB3YWl0aW5nIHRvIHJlbW92ZSB0aGVtIHVudGlsIHRoZSBuZXh0IHBh
dGNoLgorICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX21haW5Xb3JsZFdpbmRvd1NoZWxs
OworCiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAogICAgIGJvb2wgbV9pbkV4ZWN1
dGVTY3JpcHQ7CkBAIC0xOTIsOSArMjE1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVjhQ
cm94eSBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgogICAgIE93blB0cjxWOFByb3h5PiBt
X3Byb3h5OwogCi0gICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAg
U29vbiB3ZSB3aWxsIGhhdmUgb25lIHBlciBET01XcmFwcGVyV29ybGQuCi0gICAgUmVmUHRyPFY4
RE9NV2luZG93U2hlbGw+IG1fd2luZG93U2hlbGw7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8V2lk
Z2V0KiwgTlBPYmplY3QqPiBQbHVnaW5PYmplY3RNYXA7CiAKICAgICAvLyBBIG1hcHBpbmcgYmV0
d2VlbiBXaWRnZXRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHNjcmlwdCBvYmplY3QuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAwODgzMjlhLi40YjY5ZDg5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJET01PYmplY3RzSW5jbHVkZS5oIgorI2luY2x1ZGUgIkRPTVdyYXBw
ZXJXb3JsZC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTkwLDEzICs5MSwx
NCBAQCBzdGF0aWMgdm9pZCByZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNzKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBob3N0LCB2ODo6QWNjZXNzVAogICAgICAgICBWOFByb3h5OjpyZXBvcnRVbnNh
ZmVBY2Nlc3NUbyh0YXJnZXQsIFY4UHJveHk6OlJlcG9ydExhdGVyKTsKIH0KIAotUGFzc1JlZlB0
cjxWOERPTVdpbmRvd1NoZWxsPiBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGUoRnJhbWUqIGZyYW1l
KQorUGFzc1JlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGUo
RnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVjhET01XaW5kb3dTaGVsbChmcmFtZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVjhET01XaW5kb3dTaGVsbChmcmFtZSwgd29ybGQpKTsKIH0KIAotVjhET01XaW5kb3dTaGVs
bDo6VjhET01XaW5kb3dTaGVsbChGcmFtZSogZnJhbWUpCitWOERPTVdpbmRvd1NoZWxsOjpWOERP
TVdpbmRvd1NoZWxsKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICA6
IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCkBAIC0yNzksMTEg
KzI4MSw4IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAK
ICAgICBzZXRTZWN1cml0eVRva2VuKCk7CiAKKyAgICAvLyBGSVhNRTogSlNDIGRvZXNuJ3Qgc2Vl
bSB0byBtYWtlIHRoaXMgY2FsbGJhY2suCiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5kaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKLQotICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHdyb25nLiBXZSBzaG91bGQgYWN0dWFsbHkgZG8gdGhpcyBmb3IgdGhlIHByb3BlciB3b3Js
ZCBvbmNlCi0gICAgLy8gd2UgZG8gaXNvbGF0ZWQgd29ybGRzIHRoZSBXZWJDb3JlIHdheS4KLSAg
ICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
MCk7CiB9CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBWOERPTVdpbmRvd1NoZWxsOjpj
cmVhdGVOZXdDb250ZXh0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsLCBpbnQgZXh0ZW5z
aW9uR3JvdXApCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCmluZGV4IDNkYjkw
MDAuLmFiM2EzNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCkBAIC0z
OCwxMyArMzgsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRnJhbWU7CiAKIC8vIFY4V2luZG93U2hlbGwg
cmVwcmVzZW50cyBhbGwgdGhlIHBlci1nbG9iYWwgb2JqZWN0IHN0YXRlIGZvciBhIEZyYW1lIHRo
YXQKIC8vIHBlcnNpc3QgYmV0d2VlbiBuYXZpZ2F0aW9ucy4KIGNsYXNzIFY4RE9NV2luZG93U2hl
bGwgOiBwdWJsaWMgUmVmQ291bnRlZDxWOERPTVdpbmRvd1NoZWxsPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8VjhET01XaW5kb3dTaGVsbD4gY3JlYXRlKEZyYW1lKik7CisgICAg
Ly8gRm9yIHNvbWUgcmVhc29uIEpTRE9NV2luZG93U2hlbGwgdXNlcyB0aGUgRE9NV2luZG93IGFz
IHRoZSBmaXJzdCBhcmcuLi4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOERPTVdpbmRvd1NoZWxs
PiBjcmVhdGUoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKIAogICAgIH5WOERPTVdpbmRvd1No
ZWxsKCk7CiAKQEAgLTg3LDcgKzg5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBWOERPTVdpbmRvd1NoZWxsKEZyYW1lKik7CisgICAgVjhET01XaW5kb3dTaGVsbChGcmFtZSos
IERPTVdyYXBwZXJXb3JsZCopOwogCiAgICAgdm9pZCBkaXNwb3NlQ29udGV4dEhhbmRsZXMoKTsK
IApAQCAtMTA0LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5
cGUpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4g
bV93b3JsZDsKIAogICAgIC8vIEZvciBlYWNoIHBvc3NpYmxlIHR5cGUgb2Ygd3JhcHBlciwgd2Ug
a2VlcCBhIGJvaWxlcnBsYXRlIG9iamVjdC4KICAgICAvLyBUaGUgYm9pbGVycGxhdGUgaXMgdXNl
ZCB0byBjcmVhdGUgYWRkaXRpb25hbCB3cmFwcGVycyBvZiB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDg0OGJkMmIuLmEyZTkxMDQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTEyMzgsNyArMTIzOCw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVjdChOb2RlKiBub2RlKQog
ICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQotICAgIAorCiAvLyBDYWxsZXIgY2hlY2tzIG5v
ZGUgaXMgbm90IG51bGwuCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252
ZXJ0TmV3Tm9kZVRvVjhPYmplY3QoTm9kZSogbm9kZSwgVjhQcm94eSogcHJveHksIERPTVdyYXBw
ZXJNYXA8Tm9kZT4mIGRvbU5vZGVNYXApCiB7CkBAIC0xMzAyLDcgKzEzMDIsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0TmV3Tm9kZVRvVjhPYmplY3QoTm9k
ZSogbm9kZSwgVjhQcm94eQogCiAgICAgaWYgKGlzRG9jdW1lbnQpIHsKICAgICAgICAgaWYgKHBy
b3h5KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3Qgd2UgbmVlZCB0byBkbyB0aGlzIGZv
ciBldmVyeSB3b3JsZD8KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3Jvbmcu
ICBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIHRoZSBjdXJyZW50IHdvcmxkLgogICAgICAgICAgICAg
cHJveHktPmZyYW1lKCktPnNjcmlwdCgpLT5tYWluV29ybGRXaW5kb3dTaGVsbCgpLT51cGRhdGVE
b2N1bWVudFdyYXBwZXIocmVzdWx0KTsKICAgICAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>