<?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>22345</bug_id>
          
          <creation_ts>2008-11-18 15:23:15 -0800</creation_ts>
          <short_desc>Abstract away JSC:: usage in WebCore/loader</short_desc>
          <delta_ts>2008-11-19 18:26:55 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99230</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 15:23:15 -0800</bug_when>
    <thetext>Abstract away JSC:: usage in WebCore/loader

There is just a small bit of code in FrameLoader that uses JSC::Value* directly.  Most of the rest of the code just uses the ScriptController to abstract away the details of JSC.  With a small change, we can go the rest of the way.

This is a proposal to define a ScriptValue class that acts like a holder for a JSC::JSValue*.  ScriptController::evaluate is modified to return a ScriptValue instead of a JSC::JSValue*.  Consumer can either convert the ScriptValue to a String or get the underlying JSValue if they need to further inspect the value.

This change avoids forking WebCore/loader to support V8, and it also seems like a reasonable cleanup change consistent with the work that has already been done for ScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99235</commentid>
    <comment_count>1</comment_count>
      <attachid>25250</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 15:33:30 -0800</bug_when>
    <thetext>Created attachment 25250
webcore changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99236</commentid>
    <comment_count>2</comment_count>
      <attachid>25251</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 15:36:36 -0800</bug_when>
    <thetext>Created attachment 25251
webkit changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99238</commentid>
    <comment_count>3</comment_count>
      <attachid>25250</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 15:46:01 -0800</bug_when>
    <thetext>Comment on attachment 25250
webcore changes

Seems sane enough to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99239</commentid>
    <comment_count>4</comment_count>
      <attachid>25251</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 15:47:03 -0800</bug_when>
    <thetext>Comment on attachment 25251
webkit changes

Makes sense given the other patch.  It&apos;s really the first one which needs a comment from one of the JSC folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99242</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 16:08:37 -0800</bug_when>
    <thetext>The question came up in #webkit about why we don&apos;t just create a fake JSC::JSValue struct to hold the underlying V8 object.  The reason lies with the fact that V8 has a handle-based GC.  It is necessary for us to dispose of the handle when it is no longer needed.  This means that we need to track references to the V8 object.  Because JSValue pointers are copied around, it is not possible to know how many references exist to a particular JSValue object.  For this reason, the current patch proposes replacing raw JSValue pointers with a &quot;smart&quot; pointer class, named ScriptValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99244</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-11-18 16:28:09 -0800</bug_when>
    <thetext>To match the WebKit coding style, let&apos;s put ScriptValue in its own file.

In JavaScriptCore, it&apos;s important to distinguish between temporary stack data and heap data. Heap data must be protected from GC explicitly, using a JSC::ProtectedPtr. Since ScriptValue is an abstraction that allows the programmer to forget about JSValue*, I think it needs to be robust in both situations. So, please use JSC::ProtectedPtr.

Minor nit: I would name &quot;toJSValue&quot; just plain &quot;jsValue&quot;, since it doesn&apos;t perform a conversion.

It&apos;s really hard to see how this abstraction works, since the code that uses it isn&apos;t in the WebKit tree. Do you plan to commit the Chrome code that uses ScriptValue?

r- because of ProtectedPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99247</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 16:45:55 -0800</bug_when>
    <thetext>&gt; To match the WebKit coding style, let&apos;s put ScriptValue in its own file.

Sure thing!


&gt; In JavaScriptCore, it&apos;s important to distinguish between temporary stack data
&gt; and heap data. Heap data must be protected from GC explicitly, using a
&gt; JSC::ProtectedPtr. Since ScriptValue is an abstraction that allows the
&gt; programmer to forget about JSValue*, I think it needs to be robust in both
&gt; situations. So, please use JSC::ProtectedPtr.

OK.


&gt; Minor nit: I would name &quot;toJSValue&quot; just plain &quot;jsValue&quot;, since it doesn&apos;t
&gt; perform a conversion.

OK.


&gt; It&apos;s really hard to see how this abstraction works, since the code that uses 
&gt; it isn&apos;t in the WebKit tree. Do you plan to commit the Chrome code that uses
&gt; ScriptValue?

Yes, definitely.  We are in the process of cleaning up our port so that it can be upstreamed.  Presently, it has too many ties back to our source tree, which makes it not yet ready to upstream.

You can see what we did locally to FrameLoader.cpp in the V8 case here:
http://build.chromium.org/merge/WebCore-loader-FrameLoader.cpp-before.html
(that is a slightly old representation of our mods to that file.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99267</commentid>
    <comment_count>8</comment_count>
      <attachid>25256</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 18:29:54 -0800</bug_when>
    <thetext>Created attachment 25256
webcore changes - v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99268</commentid>
    <comment_count>9</comment_count>
      <attachid>25257</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-18 18:31:26 -0800</bug_when>
    <thetext>Created attachment 25257
webkit changes - v2

trivial:  toJSValue -&gt; jsValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99382</commentid>
    <comment_count>10</comment_count>
      <attachid>25256</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-11-19 15:34:03 -0800</bug_when>
    <thetext>Comment on attachment 25256
webcore changes - v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99383</commentid>
    <comment_count>11</comment_count>
      <attachid>25257</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-11-19 15:34:09 -0800</bug_when>
    <thetext>Comment on attachment 25257
webkit changes - v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99405</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-19 18:06:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99410</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-19 18:26:55 -0800</bug_when>
    <thetext>FYI, this caused some bustage for the ports.  I filed bug 22373 for the fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25250</attachid>
            <date>2008-11-18 15:33:30 -0800</date>
            <delta_ts>2008-11-18 18:29:54 -0800</delta_ts>
            <desc>webcore changes</desc>
            <filename>script_value_webcore_1.diff</filename>
            <type>text/plain</type>
            <size>6362</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4NTc4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDgtMTEt
MTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZhbHVlIGFzIGEgdGhp
biBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpnZXRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFZhbHVlOjpTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRW
YWx1ZTo6dG9KU1ZhbHVlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorCiAyMDA4LTExLTE4ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5k
ZXg6IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODU3MykKKysrIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxOCBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgU2Ny
aXB0VmFsdWU6OmdldFN0cmluZyhTdHJpbmcmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBKU0xvY2sgbG9jayhmYWxzZSk7Cisg
ICAgVVN0cmluZyB1c3RyaW5nOworICAgIGlmICghbV92YWx1ZS0+Z2V0U3RyaW5nKHVzdHJpbmcp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gdXN0cmluZzsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSog
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9oYW5kbGVyTGluZW5vKDApCkBA
IC04Nyw3ICs5OSw3IEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAg
ICBkaXNjb25uZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiB9CiAKLUpTVmFsdWUqIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgYmFzZUxp
bmUsIGNvbnN0IFN0cmluZyYgc3RyKSAKK1NjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmlu
ZyYgc3RyKSAKIHsKICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRoZSBKUyByZXR1cm4g
dmFsdWUgb3IgMAogICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJvciBvY2N1cmVkIG9y
IHRoZSB0eXBlIGNvdWxkbid0IGJlIGNvbnZlcnRlZC4KSW5kZXg6IGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgJKHJldmlzaW9uIDM4NTczKQorKysgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxNSBAQCBjbGFzcyBXaWRnZXQ7CiAKIHR5cGVkZWYg
SGFzaE1hcDx2b2lkKiwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+ID4gUm9vdE9i
amVjdE1hcDsKIAorY2xhc3MgU2NyaXB0VmFsdWUgeworcHVibGljOgorICAgIFNjcmlwdFZhbHVl
KEpTQzo6SlNWYWx1ZSogdmFsdWUgPSBKU0M6Om5vVmFsdWUoKSkgOiBtX3ZhbHVlKHZhbHVlKSB7
fQorICAgIEpTQzo6SlNWYWx1ZSogdG9KU1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorICAgIGJvb2wgZ2V0U3RyaW5nKFN0cmluZyYgcmVzdWx0KSBjb25zdDsKK3ByaXZhdGU6Cisg
ICAgSlNDOjpKU1ZhbHVlKiBtX3ZhbHVlOworfTsKKwogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7
CiBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSopOwpAQCAtNzcsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dpbmRvd1NoZWxsLT53aW5kb3coKTsKICAgICB9
CiAKLSAgICBKU0M6OkpTVmFsdWUqIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBp
bnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgY29kZSk7CisgICAgU2NyaXB0VmFsdWUgZXZhbHVh
dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBj
b2RlKTsKIAogICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSW5saW5lRXZlbnRM
aXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBO
b2RlKik7CiAjaWYgRU5BQkxFKFNWRykKSW5kZXg6IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzg1NzMpCisrKyBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3LDYgQEAK
ICNpbmNsdWRlICJTVkdWaWV3U3BlYy5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShTVkcpCkBAIC0xOTAsMTggKzE4
OCw2IEBAIHN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlvbiB7CiBzdGF0aWMgZG91YmxlIHN0b3Jl
ZFRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkOwogc3RhdGljIEZyYW1lTG9hZGVyOjpMb2NhbExvYWRQ
b2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gRnJhbWVMb2FkZXI6OkFsbG93TG9jYWxMb2Fkc0Zvckxv
Y2FsT25seTsKIAotc3RhdGljIGJvb2wgZ2V0U3RyaW5nKEpTVmFsdWUqIHJlc3VsdCwgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0gICAgVVN0cmluZyB1c3RyaW5nOwotICAgIGlmICghcmVz
dWx0LT5nZXRTdHJpbmcodXN0cmluZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdHJp
bmcgPSB1c3RyaW5nOwotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIGlzQmFja0ZvcndhcmRM
b2FkVHlwZShGcmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC03
NjIsMTAgKzc0OCwxMCBAQCBib29sIEZyYW1lTG9hZGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygpLnN1YnN0cmluZyhzdHJsZW4oImphdmFzY3JpcHQ6
IikpKTsKLSAgICBKU1ZhbHVlKiByZXN1bHQgPSBleGVjdXRlU2NyaXB0KHNjcmlwdCwgdXNlckdl
c3R1cmUpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB1
c2VyR2VzdHVyZSk7CiAKICAgICBTdHJpbmcgc2NyaXB0UmVzdWx0OwotICAgIGlmICghZ2V0U3Ry
aW5nKHJlc3VsdCwgc2NyaXB0UmVzdWx0KSkKKyAgICBpZiAoIXJlc3VsdC5nZXRTdHJpbmcoc2Ny
aXB0UmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTZWN1cml0eU9yaWdpbiog
Y3VycmVudFNlY3VyaXR5T3JpZ2luID0gMDsKQEAgLTc4NCwyMCArNzcwLDIwIEBAIGJvb2wgRnJh
bWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
SlNWYWx1ZSogRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK1NjcmlwdFZhbHVlIEZyYW1lTG9hZGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAg
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoZm9yY2VVc2VyR2VzdHVyZSA/IFN0cmluZygpIDogbV9V
Ukwuc3RyaW5nKCksIDEsIHNjcmlwdCk7CiB9CiAKLUpTVmFsdWUqIEZyYW1lTG9hZGVyOjpleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYg
c2NyaXB0KQorU2NyaXB0VmFsdWUgRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7CiAgICAgaWYg
KCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkgfHwgbV9mcmFtZS0+c2NyaXB0KCktPmlz
UGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBub1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBTY3Jp
cHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNSdW5uaW5nU2NyaXB0ID0gbV9pc1J1bm5pbmdTY3Jp
cHQ7CiAgICAgbV9pc1J1bm5pbmdTY3JpcHQgPSB0cnVlOwogCi0gICAgSlNWYWx1ZSogcmVzdWx0
ID0gbV9mcmFtZS0+c2NyaXB0KCktPmV2YWx1YXRlKHVybCwgYmFzZUxpbmUsIHNjcmlwdCk7Cisg
ICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmV2YWx1YXRlKHVybCwg
YmFzZUxpbmUsIHNjcmlwdCk7CiAKICAgICBpZiAoIXdhc1J1bm5pbmdTY3JpcHQpIHsKICAgICAg
ICAgbV9pc1J1bm5pbmdTY3JpcHQgPSBmYWxzZTsKSW5kZXg6IGxvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGxvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAzODU3MykKKysr
IGxvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKICAgICBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKKyAgICBjbGFzcyBT
Y3JpcHRWYWx1ZTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CkBAIC0zMzQsOCArMzM1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdXJsIGlzIGEgSmF2
YVNjcmlwdCBVUkwuCiAgICAgICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBL
VVJMJiB1cmwsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQg
PSB0cnVlKTsKIAotICAgICAgICBKU0M6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwotICAgICAgICBK
U0M6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIHVybCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7
CisgICAgICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAgICAgICB2b2lkIGdvdG9BbmNo
b3IoKTsKICAgICAgICAgYm9vbCBnb3RvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSk7IC8vIHJl
dHVybnMgdHJ1ZSBpZiB0aGUgYW5jaG9yIHdhcyBmb3VuZAo=
</data>
<flag name="review"
          id="11674"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25251</attachid>
            <date>2008-11-18 15:36:36 -0800</date>
            <delta_ts>2008-11-18 18:31:26 -0800</delta_ts>
            <desc>webkit changes</desc>
            <filename>script_value_webkit_1.diff</filename>
            <type>text/plain</type>
            <size>4330</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IG1hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMzg1NzkpCisrKyBtYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDgtMTEtMTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZh
bHVlIGFzIGEgdGhpbiBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgYWVEZXNjQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisKIDIwMDgtMTEtMTcgIEJldGggRGFraW4gIDxiZGFr
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRl
eDogbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHJldmlzaW9uIDM4NTczKQorKysgbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoCiB7CiAgICAgQVNTRVJUKF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3Vt
ZW50KCkpOwogICAgIAotICAgIEpTVmFsdWUqIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSk7CisgICAg
SlNWYWx1ZSogcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVT
Y3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKS50b0pTVmFsdWUoKTsKIAogICAgIGlmICgh
X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZy
YW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7CkluZGV4OiBtYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDM4NTczKQorKysgbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzY0OSw3ICszNjQ5LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zy
bwogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIEpTVmFsdWUqIHJlc3VsdCA9IGNvcmVGcmFtZS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKTsKKyAgICBKU1ZhbHVlKiByZXN1bHQg
PSBjb3JlRnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSkudG9KU1Zh
bHVlKCk7CiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICBy
ZXR1cm4gMDsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7CkluZGV4OiB3aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHdpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4NTc5KQorKysgd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTExLTE4ICBEYXJpbiBG
aXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzQ1CisgICAgICAgIERlZmluZSBTY3JpcHRWYWx1ZSBhcyBhIHRoaW4gY29udGFpbmVy
IGZvciBhIEpTQzo6VmFsdWUqLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyk6CisKIDIwMDgt
MTEtMTggIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAK
ICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZC4gSXQgaXMgdmlldyBhbmQgbm90
IHdlYlZpZXcuCkluZGV4OiB3aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAzODU3MykKKysrIHdpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjY2Miw4ICsyNjYyLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpzdHJpbgogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgSlNDOjpKU1ZhbHVlKiBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPmxvYWRl
cigpLT5leGVjdXRlU2NyaXB0KFdlYkNvcmU6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKLSAgICBp
Zighc2NyaXB0RXhlY3V0aW9uUmVzdWx0KQorICAgIEpTQzo6SlNWYWx1ZSogc2NyaXB0RXhlY3V0
aW9uUmVzdWx0ID0gY29yZUZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpT
dHJpbmcoc2NyaXB0KSwgdHJ1ZSkudG9KU1ZhbHVlKCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhl
Y3V0aW9uUmVzdWx0LT5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTTG9jayBsb2NrKGZhbHNlKTsK
SW5kZXg6IHd4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3eC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDM4NTc5KQorKysgd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMDgtMTEtMTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZhbHVl
IGFzIGEgdGhpbiBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgorCiAyMDA4LTExLTE3
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IHd4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3eC9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDM4NTczKQorKysgd3gvV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgd3hTdHJpbmcgd3hXZWJGcmFtZTo6UnVuU2NyaXB0
KGNvbnN0IHd4UwogewogICAgIHd4U3RyaW5nIHJldHVyblZhbHVlID0gd3hFbXB0eVN0cmluZzsK
ICAgICBpZiAobV9pbXBsLT5mcmFtZSkgewotICAgICAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9
IG1faW1wbC0+ZnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KGphdmFzY3JpcHQsIHRydWUp
OworICAgICAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9IG1faW1wbC0+ZnJhbWUtPmxvYWRlcigp
LT5leGVjdXRlU2NyaXB0KGphdmFzY3JpcHQsIHRydWUpLnRvSlNWYWx1ZSgpOwogICAgICAgICBp
ZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB3eFN0cmluZyhyZXN1bHQtPnRv
U3RyaW5nKG1faW1wbC0+ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpKS5VVEY4U3RyaW5nKCkuY19zdHIoKSwgd3hDb252VVRGOCk7ICAgICAgICAKICAgICB9Cg==
</data>
<flag name="review"
          id="11675"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25256</attachid>
            <date>2008-11-18 18:29:54 -0800</date>
            <delta_ts>2008-11-19 15:34:03 -0800</delta_ts>
            <desc>webcore changes - v2</desc>
            <filename>script_value_webcore_2.diff</filename>
            <type>text/plain</type>
            <size>17868</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4NTg5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDgtMTEt
MTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZhbHVlIGFzIGEgdGhp
biBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0VmFsdWU6OlNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVl
Ojpqc1ZhbHVlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgICogZG9tL1hNTFRva2VuaXplckxpYnhtbDIu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpleGVjdXRl
SWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpleGVjdXRl
U2NyaXB0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKwogMjAwOC0xMS0xOCAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM4
NTczKQorKysgV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEzODY5LDYgKzEzODY5LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0VmFsdWUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8Rmls
ZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTdHJpbmdTb3VyY2VQcm92aWRl
ci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMzg1NzMpCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NzgsNiArMTc3OCw4IEBACiAJCTkzM0ExNEI5MEI3RDFE
NTIwMEE1M0ZGRCAvKiBKU1RleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzQTE0QjcwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50
LmggKi87IH07CiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi87
IH07CiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0
MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwICovOyB9
OworCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwREYwRUQzOUQ2RjAw
QTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKKwkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1
OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzREOUJBNTBC
OEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5
IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJOTM0RDlCQTcwQjhDMTE3NTAw
N0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNv
cmVOU1N0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZS5jcHAgKi87IH07CkBAIC02NTMzLDYgKzY1MzUsOCBAQAogCQk5MzNBMTRCNzBCN0QxRDUy
MDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNUZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0NDJDOUQw
RDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNDBCOEMxMTZCMDA3QjQyQTkgLyogV2Vi
Q29yZU5TU3RyaW5nRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEY3MTM3MEQ1QTZFRkYwMDAxOEQ2
OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Miw2ICsxMjk5Niw4IEBACiAJCQkJOTNCNzBE
NTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUE4M0Ux
QzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTkz
QjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250cm9sbGVyLmggKi8sCisJCQkJOTM0
Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKKwkJCQk5MzRDQzBF
MDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQk2NTQ4OEQ2QTBERDVB
ODNEMDA5RDgzQjIgLyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlCQzYwOTAxRDBF
OTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldC5oICovLAogCQkJCUJDNjA5MDFFMEU5MUI4
RUMwMDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0LmNwcCAqLywKQEAgLTE2Mjk2LDYgKzE2MzAyLDcg
QEAKIAkJCQlFMTA4MjI0QjBFQzMxNTNBMDBFOTM5NTMgLyogV29ya2VyVGFzay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZENzIzODIwRUM4QkQ5MzAwQ0E1REQ3IC8qIEZsb2F0UXVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTE0Nzk5QTcwRUNERTNBNDAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyog
U2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTgyMTYsNiArMTgyMjMsNyBAQAogCQkJ
CTBGRDcyMzgzMEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE0Nzk5QjQwRUNERTlEODAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxODI1MDRGMEVEMkYyMDIwMDQ5OUE4RiAvKiBGcmFtZUxv
YWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4
RjIgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBiaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAJKHJldmlzaW9uIDM4NTczKQorKysgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDM4NTczKQorKysgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJQYXVzZWRUaW1lb3V0cy5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgor
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdHJpbmdTb3VyY2VQcm92aWRlci5oIgogCkBAIC04Nyw3ICs4OCw3IEBAIFNjcmlwdENvbnRy
b2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAgICBkaXNjb25uZWN0UGxhdGZvcm1TY3JpcHRP
YmplY3RzKCk7CiB9CiAKLUpTVmFsdWUqIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc3RyKSAKK1Nj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc3RyKSAKIHsKICAgICAvLyBldmFsdWF0
ZSBjb2RlLiBSZXR1cm5zIHRoZSBKUyByZXR1cm4gdmFsdWUgb3IgMAogICAgIC8vIGlmIHRoZXJl
IHdhcyBub25lLCBhbiBlcnJvciBvY2N1cmVkIG9yIHRoZSB0eXBlIGNvdWxkbid0IGJlIGNvbnZl
cnRlZC4KSW5kZXg6IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDM4NTczKQorKysgYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3
IEBAIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgTm9kZTsKK2NsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU3RyaW5nOwog
Y2xhc3MgV2lkZ2V0OwogCkBAIC03Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fd2luZG93U2hlbGwtPndpbmRvdygpOwogICAgIH0KIAotICAgIEpTQzo6SlNWYWx1ZSogZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5n
JiBjb2RlKTsKKyAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIGNvZGUpOwogCiAgICAgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBjcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUqKTsKICNpZiBFTkFCTEUoU1ZHKQpJ
bmRleDogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIGJpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8
cnVudGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBTY3JpcHRWYWx1
ZTo6Z2V0U3RyaW5nKFN0cmluZyYgcmVzdWx0KSBjb25zdAoreworICAgIGlmICghbV92YWx1ZS5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKKyAg
ICBVU3RyaW5nIHVzdHJpbmc7CisgICAgaWYgKCFtX3ZhbHVlLT5nZXRTdHJpbmcodXN0cmluZykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSB1c3RyaW5nOworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBiaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgJKHJl
dmlzaW9uIDApCisrKyBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdFZhbHVlX2gKKyNkZWZpbmUgU2NyaXB0
VmFsdWVfaAorCisjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU3RyaW5nOworCitjbGFzcyBTY3JpcHRWYWx1ZSB7CitwdWJsaWM6Cisg
ICAgU2NyaXB0VmFsdWUoSlNDOjpKU1ZhbHVlKiB2YWx1ZSA9IEpTQzo6bm9WYWx1ZSgpKSA6IG1f
dmFsdWUodmFsdWUpIHt9CisKKyAgICBKU0M6OkpTVmFsdWUqIGpzVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlLmdldCgpOyB9CisgICAgYm9vbCBnZXRTdHJpbmcoU3RyaW5nJiByZXN1bHQp
IGNvbnN0OworCitwcml2YXRlOgorICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNWYWx1ZT4g
bV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlw
dFZhbHVlX2gKSW5kZXg6IGRvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20v
U2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4NTczKQorKysgZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cklu
ZGV4OiBkb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vWE1MVG9rZW5pemVy
LmNwcAkocmV2aXNpb24gMzg1NzMpCisrKyBkb20vWE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgpJbmRleDogZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGRvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gMzg1NzMpCisrKyBkb20vWE1M
VG9rZW5pemVyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIiAv
LyBmb3IgZGVjb2RlTmFtZWRFbnRpdHkKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKSW5kZXg6IGh0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1M
VG9rZW5pemVyLmNwcAkocmV2aXNpb24gMzg1NzMpCisrKyBodG1sL0hUTUxUb2tlbml6ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKSW5kZXg6IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzg1NzMpCisrKyBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBACiAj
aW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTA3LDggKzEwOCw2IEBACiAjaW5jbHVk
ZSAiU1ZHVmlld1NwZWMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtMTkwLDE4ICsxODksNiBAQCBz
dHJ1Y3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24gewogc3RhdGljIGRvdWJsZSBzdG9yZWRUaW1lT2ZM
YXN0Q29tcGxldGVkTG9hZDsKIHN0YXRpYyBGcmFtZUxvYWRlcjo6TG9jYWxMb2FkUG9saWN5IGxv
Y2FsTG9hZFBvbGljeSA9IEZyYW1lTG9hZGVyOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7
CiAKLXN0YXRpYyBib29sIGdldFN0cmluZyhKU1ZhbHVlKiByZXN1bHQsIFN0cmluZyYgc3RyaW5n
KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSlNMb2Nr
IGxvY2soZmFsc2UpOwotICAgIFVTdHJpbmcgdXN0cmluZzsKLSAgICBpZiAoIXJlc3VsdC0+Z2V0
U3RyaW5nKHVzdHJpbmcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3RyaW5nID0gdXN0
cmluZzsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUo
RnJhbWVMb2FkVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNzYyLDEwICs3
NDksMTAgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgc2NyaXB0ID0gZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSk7Ci0g
ICAgSlNWYWx1ZSogcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHVzZXJHZXN0dXJlKTsK
KyAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBleGVjdXRlU2NyaXB0KHNjcmlwdCwgdXNlckdlc3R1
cmUpOwogCiAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKLSAgICBpZiAoIWdldFN0cmluZyhyZXN1
bHQsIHNjcmlwdFJlc3VsdCkpCisgICAgaWYgKCFyZXN1bHQuZ2V0U3RyaW5nKHNjcmlwdFJlc3Vs
dCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgU2VjdXJpdHlPcmlnaW4qIGN1cnJlbnRT
ZWN1cml0eU9yaWdpbiA9IDA7CkBAIC03ODQsMjAgKzc3MSwyMCBAQCBib29sIEZyYW1lTG9hZGVy
OjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTVmFsdWUq
IEZyYW1lTG9hZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUpCitTY3JpcHRWYWx1ZSBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlwdChj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIHJldHVy
biBleGVjdXRlU2NyaXB0KGZvcmNlVXNlckdlc3R1cmUgPyBTdHJpbmcoKSA6IG1fVVJMLnN0cmlu
ZygpLCAxLCBzY3JpcHQpOwogfQogCi1KU1ZhbHVlKiBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIHVybCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkK
K1NjcmlwdFZhbHVlIEZyYW1lTG9hZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewogICAgIGlmICghbV9mcmFt
ZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpIHx8IG1fZnJhbWUtPnNjcmlwdCgpLT5pc1BhdXNlZCgp
KQotICAgICAgICByZXR1cm4gbm9WYWx1ZSgpOworICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUo
KTsKIAogICAgIGJvb2wgd2FzUnVubmluZ1NjcmlwdCA9IG1faXNSdW5uaW5nU2NyaXB0OwogICAg
IG1faXNSdW5uaW5nU2NyaXB0ID0gdHJ1ZTsKIAotICAgIEpTVmFsdWUqIHJlc3VsdCA9IG1fZnJh
bWUtPnNjcmlwdCgpLT5ldmFsdWF0ZSh1cmwsIGJhc2VMaW5lLCBzY3JpcHQpOworICAgIFNjcmlw
dFZhbHVlIHJlc3VsdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5ldmFsdWF0ZSh1cmwsIGJhc2VMaW5l
LCBzY3JpcHQpOwogCiAgICAgaWYgKCF3YXNSdW5uaW5nU2NyaXB0KSB7CiAgICAgICAgIG1faXNS
dW5uaW5nU2NyaXB0ID0gZmFsc2U7CkluZGV4OiBsb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBsb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMzg1NzMpCisrKyBsb2FkZXIv
RnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CisgICAgY2xhc3MgU2NyaXB0VmFs
dWU7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwog
ICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwpAQCAtMzM0LDggKzMzNSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVybCBpcyBhIEphdmFTY3JpcHQg
VVJMLgogICAgICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJs
LCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UsIGJvb2wgcmVwbGFjZURvY3VtZW50ID0gdHJ1ZSk7
CiAKLSAgICAgICAgSlNDOjpKU1ZhbHVlKiBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKLSAgICAgICAgSlNDOjpKU1Zh
bHVlKiBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3Qg
U3RyaW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOworICAgICAg
ICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBnb3RvQW5jaG9yKCk7CiAg
ICAgICAgIGJvb2wgZ290b0FuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpOyAvLyByZXR1cm5zIHRy
dWUgaWYgdGhlIGFuY2hvciB3YXMgZm91bmQK
</data>
<flag name="review"
          id="11677"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25257</attachid>
            <date>2008-11-18 18:31:26 -0800</date>
            <delta_ts>2008-11-19 15:34:09 -0800</delta_ts>
            <desc>webkit changes - v2</desc>
            <filename>script_value_webkit_2.diff</filename>
            <type>text/plain</type>
            <size>5324</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IG1hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMzg1NzkpCisrKyBtYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDgtMTEtMTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZh
bHVlIGFzIGEgdGhpbiBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgYWVEZXNjQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisKIDIwMDgtMTEtMTcgIEJldGggRGFraW4gIDxiZGFr
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRl
eDogbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHJldmlzaW9uIDM4NTczKQorKysgbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVHlwaW5nQ29t
bWFuZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS92aXNpYmxlX3VuaXRz
Lmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgpAQCAtNjU0LDcgKzY1NSw3IEBAIHN0YXRp
YyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSgKIHsKICAgICBBU1NFUlQoX3ByaXZh
dGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgCi0gICAgSlNWYWx1ZSogcmVzdWx0ID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3Jj
ZVVzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlKiByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpLmpzVmFs
dWUoKTsKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4gY2FzZSB0aGUgc2Ny
aXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVybiBAIiI7
CkluZGV4OiBtYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDM4NTczKQorKysgbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3Jp
cHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWxlY3Rpb25Db250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURl
Y29kZXIuaD4KQEAgLTM2NDksNyArMzY1MCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlw
dG9yKiBhZURlc2NGcm8KICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFtZS0+
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU1ZhbHVlKiByZXN1bHQgPSBj
b3JlRnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisgICAgSlNW
YWx1ZSogcmVzdWx0ID0gY29yZUZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQs
IHRydWUpLmpzVmFsdWUoKTsKICAgICBpZiAoIXJlc3VsdCkgLy8gRklYTUU6IHBhc3MgZXJyb3Jz
CiAgICAgICAgIHJldHVybiAwOwogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKSW5kZXg6IHdpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMzg1NzkpCisr
KyB3aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTEt
MTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZhbHVlIGFzIGEgdGhp
biBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5n
KToKKwogMjAwOC0xMS0xOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxm
aXNoLm9yZz4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLiBJdCBpcyB2
aWV3IGFuZCBub3Qgd2ViVmlldy4KSW5kZXg6IHdpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB3aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDM4NTczKQorKysgd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJU
aGVtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRW
YWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlbGVjdGlvbkNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+CkBAIC0yNjYyLDggKzI2NjMsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OnN0cmluCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBKU0M6OkpTVmFsdWUqIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQoV2ViQ29yZTo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwotICAg
IGlmKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCisgICAgSlNDOjpKU1ZhbHVlKiBzY3JpcHRFeGVj
dXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KFdlYkNvcmU6
OlN0cmluZyhzY3JpcHQpLCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhl
Y3V0aW9uUmVzdWx0LT5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTTG9jayBsb2NrKGZhbHNlKTsK
SW5kZXg6IHd4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3eC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDM4NTc5KQorKysgd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMDgtMTEtMTggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDUKKyAgICAgICAgRGVmaW5lIFNjcmlwdFZhbHVl
IGFzIGEgdGhpbiBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCisKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgorCiAyMDA4LTExLTE3
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IHd4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3eC9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDM4NTczKQorKysgd3gvV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5o
IgogCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CkBAIC0xNzIsNyArMTczLDcgQEAgd3hT
dHJpbmcgd3hXZWJGcmFtZTo6UnVuU2NyaXB0KGNvbnN0IHd4UwogewogICAgIHd4U3RyaW5nIHJl
dHVyblZhbHVlID0gd3hFbXB0eVN0cmluZzsKICAgICBpZiAobV9pbXBsLT5mcmFtZSkgewotICAg
ICAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9IG1faW1wbC0+ZnJhbWUtPmxvYWRlcigpLT5leGVj
dXRlU2NyaXB0KGphdmFzY3JpcHQsIHRydWUpOworICAgICAgICBKU0M6OkpTVmFsdWUqIHJlc3Vs
dCA9IG1faW1wbC0+ZnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KGphdmFzY3JpcHQsIHRy
dWUpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVyblZh
bHVlID0gd3hTdHJpbmcocmVzdWx0LT50b1N0cmluZyhtX2ltcGwtPmZyYW1lLT5zY3JpcHQoKS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkuVVRGOFN0cmluZygpLmNfc3RyKCksIHd4Q29u
dlVURjgpOyAgICAgICAgCiAgICAgfQo=
</data>
<flag name="review"
          id="11678"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>