<?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>30548</bug_id>
          
          <creation_ts>2009-10-19 18:41:46 -0700</creation_ts>
          <short_desc>Remove the dependency on OriginQuotaManager from Database.cpp</short_desc>
          <delta_ts>2009-10-27 13:16:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>156018</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-19 18:41:46 -0700</bug_when>
    <thetext>Chromium needs to manage per-origin quotas in the browser process, and therefore, cannot use the OriginQuotaManager/OriginUsageRecord classes. We need to remove the dependency on those classes from the rest of the database classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156030</commentid>
    <comment_count>1</comment_count>
      <attachid>41471</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-19 19:37:33 -0700</bug_when>
    <thetext>Created attachment 41471
patch

It&apos;s OK to have DatabaseTracker.cpp depend on OriginQuotaManager/OriginUsageRecord since we will have a Chromium-specific implementation for DatabaseTracker.

Also, in order to keep everything thread-safe, we needed to introduce a SecurityOrigin copy for each Database instance, that is safe to use on the DB thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156534</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-21 10:39:32 -0700</bug_when>
    <thetext>We should CC whoever does Database stuff @ Apple on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156537</commentid>
    <comment_count>3</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-21 10:43:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; We should CC whoever does Database stuff @ Apple on this bug.

added aroben, andersca and beidson. haven&apos;t added them initially because they never reply to my patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157449</commentid>
    <comment_count>4</comment_count>
      <attachid>41471</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-24 09:44:48 -0700</bug_when>
    <thetext>Comment on attachment 41471
patch

Looks reasonable.  A few minor points about RefPtrs:

+ PassRefPtr&lt;SecurityOrigin&gt; Database::databaseThreadSecurityOrigin() const
+ PassRefPtr&lt;SecurityOrigin&gt; Database::threadSafeSecurityOrigin() const

No need to use a PassRefPtr here because we&apos;re not transferring ownership.  We can just use a raw ptr.  For more information, please see http://webkit.org/coding/RefPtr.html

+ RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;databaseThreadSecurityOrigin();

No need to churn ref counter here.  |database| will keep origin alive for you during this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158026</commentid>
    <comment_count>5</comment_count>
      <attachid>41917</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-26 17:13:56 -0700</bug_when>
    <thetext>Created attachment 41917
patch

Removed all SecurityOrigin related methods in Database in favor of a single securityOrigin() method that returns a thread-safe SecurityOrigin instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158208</commentid>
    <comment_count>6</comment_count>
      <attachid>41917</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-27 09:04:12 -0700</bug_when>
    <thetext>Comment on attachment 41917
patch

In DatabaseTracker::getMaxSizeForDatabase, do we need to addref the origin?

+ RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;securityOrigin();

It seems like we can use a raw pointer here and avoid the churning the ref count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158296</commentid>
    <comment_count>7</comment_count>
      <attachid>41970</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-27 11:51:36 -0700</bug_when>
    <thetext>Created attachment 41970
patch

Addressed Adam&apos;s comment. Please re-r+ the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158323</commentid>
    <comment_count>8</comment_count>
      <attachid>41970</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-27 12:48:15 -0700</bug_when>
    <thetext>Comment on attachment 41970
patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158329</commentid>
    <comment_count>9</comment_count>
      <attachid>41970</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-27 13:09:31 -0700</bug_when>
    <thetext>Comment on attachment 41970
patch

Rejecting patch 41970 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
xfyyua/WebCorePrefix.h -c /Users/eseidel/Projects/CommitQueue/WebCore/svg/SVGAElement.cpp -o /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/SVGAElement.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/Database.o /Users/eseidel/Projects/CommitQueue/WebCore/storage/Database.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158330</commentid>
    <comment_count>10</comment_count>
      <attachid>41970</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 13:15:03 -0700</bug_when>
    <thetext>Comment on attachment 41970
patch

This appears to be a false rejection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158331</commentid>
    <comment_count>11</comment_count>
      <attachid>41970</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 13:15:29 -0700</bug_when>
    <thetext>Comment on attachment 41970
patch

Actually, this patch will fail due to tabs in the ChangeLog.  so cq-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158332</commentid>
    <comment_count>12</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-10-27 13:16:39 -0700</bug_when>
    <thetext>ChangeLog had some tabs. I fixed that and manually submitted the patch. Landed as r50169.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41471</attachid>
            <date>2009-10-19 19:37:33 -0700</date>
            <delta_ts>2009-10-26 17:13:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10941</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTgzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMDktMTAtMTkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvcmluZyB0aGUgRGF0YWJhc2UgY2xhc3MgdG8gbm90IGRlcGVuZCBvbgorCU9yaWdp
blF1b3RhTWFuYWdlci4gQWxzbywgYWRkaW5nIGEgU2VjdXJpdHlPcmlnaW4gY29weSB0byBlYWNo
CisJRGF0YWJhc2UgaW5zdGFuY2UsIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIGZpbGUKKwl0
aHJlYWQuIEZpbmFsbHksIGFkZGluZyBuZXcgc2ltcGxlIGZpZWxkcyBhbmQgZ2V0dGVycyB0byB0
aGUKKwlEYXRhYmFzZSBvYmplY3QgZm9yIHN0b3JpbmcvZ2V0dGluZyB0aGUgZGlzcGxheSBuYW1l
IGFuZCBlc3RpbWF0ZWQKKwlzaXplIHNwZWNpZmllZCBieSB0aGUgdXNlciBpbiB0aGUgb3BlbkRh
dGFiYXNlKCkgY2FsbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzA1NDgKKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kCisJdGhlIGVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6RGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kIHRoZQorCWVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QsIGFzIHdlbGwgYXMgYSBTZWN1cml0eU9yaWdp
bgorCWluc3RhbmNlIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIERCIHRocmVhZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjptYXhpbXVtU2l6ZSk6IERlbGVnYXRlIHRoZSBjYWxsIHRv
CisJRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKTogUmV0dXJuIHRo
ZQorCVNlY3VyaXR5T3JpZ2luIGluc3RhbmNlIHRoYXQncyBzYWZlIHRvIHVzZSBvbiB0aGUgREIg
dGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRocmVhZFNhZmVTZWN1cml0eU9y
aWdpbik6IFJldHVybiB0aGUKKwlTZWN1cml0eU9yaWdpbiBpbnN0YW5jZSB0aGF0J3Mgc2FmZSB0
byB1c2Ugb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OmRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSBkaXNwbGF5IG5hbWUKKwlzcGVjaWZpZWQgYnkgdGhl
IHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6ZXN0aW1hdGVkU2l6ZSk6IFJldHVybiB0aGUgZXN0aW1hdGVkIHNpemUKKwlzcGVjaWZp
ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWUpOiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hl
cmUKKwl0aGUgY3VycmVudCBEYXRhYmFzZSBpcyB0b3JlZC4KKyAgICAgICAgKiBzdG9yYWdlL0Rh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UpOiBSZXR1
cm5zIHRoZQorCW1heGltdW0gc2l6ZSBmb3IgYSBEQiBmaWxlIGJhc2VkIG9uIHRoZSBjdXJyZW50
IHNpemUgb2YgdGhhdCBmaWxlCisJYW5kIHRoZSBzcGFjZSBhdmFpbGFibGUgZm9yIHRoYXQgb3Jp
Z2luLgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24pOiBVc2UgdGhlCisJY29ycmVjdCBTZWN1cml0eU9yaWdpbiBpbnN0
YW5jZS4KKwogMjAwOS0xMC0xOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cmkgVGl0b3YuCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uaAkocmV2aXNpb24gNDk4MzApCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMTI3LDkgKzEyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gU2VjdXJpdHlPcmlnaW4gaXMgcmVwcmVzZW50ZWQgd2l0aCB0aGUgc3RyaW5nICJu
dWxsIi4KICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKLSAgICAgICAgLy8gU2Vy
aWFsaXplIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHN0b3JhZ2UgaW4gdGhlIGRhdGFiYXNlLiBU
aGlzIGZvcm1hdCBpcwotICAgICAgICAvLyBkZXByZWNhdGVkIGFuZCBzaG91bGQgYmUgdXNlZCBv
bmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGRhdGFiYXNlczsKLSAgICAgICAgLy8gdXNl
IHRvU3RyaW5nKCkgYW5kIGNyZWF0ZUZyb21TdHJpbmcoKSBpbnN0ZWFkLgorICAgICAgICAvLyBT
ZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVz
ZWQgYXMgcGFydCBvZgorICAgICAgICAvLyBmaWxlIG5hbWVzLiBUaGlzIGZvcm1hdCBzaG91bGQg
YmUgdXNlZCBpbiBzdG9yYWdlIEFQSXMgb25seS4KICAgICAgICAgU3RyaW5nIGRhdGFiYXNlSWRl
bnRpZmllcigpIGNvbnN0OwogCiAgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1
YWxpdHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZS5jcHAJKHJldmlzaW9uIDQ5ODMwKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlOjpvcGVuRGF0YWIKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVm
UHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShkb2N1bWVudCwg
bmFtZSwgZXhwZWN0ZWRWZXJzaW9uKSk7CisgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9
IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShkb2N1bWVudCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBk
aXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwogCiAgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFu
ZFZlcmlmeVZlcnNpb24oZSkpIHsKICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkZhaWxlZCB0byBv
cGVuIGFuZCB2ZXJpZnkgdmVyc2lvbiAoZXhwZWN0ZWQgJXMpIG9mIGRhdGFiYXNlICVzIiwgZXhw
ZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZS0+ZGF0YWJhc2VEZWJ1Z05hbWUo
KS5hc2NpaSgpLmRhdGEoKSk7CkBAIC0xNDcsMTggKzE0NywyMSBAQCBQYXNzUmVmUHRyPERhdGFi
YXNlPiBEYXRhYmFzZTo6b3BlbkRhdGFiCiAgICAgcmV0dXJuIGRhdGFiYXNlOwogfQogCi1EYXRh
YmFzZTo6RGF0YWJhc2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uKQorRGF0YWJhc2U6OkRhdGFiYXNlKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQogICAgIDogbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2RvY3Vt
ZW50KGRvY3VtZW50KQogICAgICwgbV9uYW1lKG5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKICAg
ICAsIG1fZ3VpZCgwKQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRWZXJzaW9uKQor
ICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKKyAgICAsIG1fZXN0aW1hdGVkU2l6ZShl
c3RpbWF0ZWRTaXplKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQogICAgICwgbV9zdG9wcGVkKGZh
bHNlKQogICAgICwgbV9vcGVuZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAg
ICBtX3NlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9k
YXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW5Db3B5KCk7CiAKICAg
ICBpZiAobV9uYW1lLmlzTnVsbCgpKQogICAgICAgICBtX25hbWUgPSAiIjsKQEAgLTM2NiwyMCAr
MzY5LDkgQEAgdm9pZCBEYXRhYmFzZTo6c3RvcCgpCiAgICAgfQogfQogCi11bnNpZ25lZCBsb25n
IGxvbmcgRGF0YWJhc2U6OmRhdGFiYXNlU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUobV9maWxlbmFtZSk7Ci19Ci0KIHVuc2ln
bmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUoKSBjb25zdAogewotICAgIC8vIFRo
ZSBtYXhpbXVtIHNpemUgZm9yIHRoaXMgZGF0YWJhc2UgaXMgdGhlIGZ1bGwgcXVvdGEgZm9yIHRo
aXMgb3JpZ2luLCBtaW51cyB0aGUgY3VycmVudCB1c2FnZSB3aXRoaW4gdGhpcyBvcmlnaW4sCi0g
ICAgLy8gZXhjZXB0IGZvciB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGlzIGRhdGFiYXNlCi0KLSAg
ICBPcmlnaW5RdW90YU1hbmFnZXImIG1hbmFnZXIoRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
b3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwotICAgIExvY2tlcjxPcmlnaW5RdW90YU1hbmFnZXI+IGxv
Y2tlcihtYW5hZ2VyKTsKLQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5x
dW90YUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKSAtIG1hbmFnZXIuZGlza1VzYWdl
KG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpICsgZGF0YWJhc2VTaXplKCk7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKIH0K
IAogdm9pZCBEYXRhYmFzZTo6ZGlzYWJsZUF1dGhvcml6ZXIoKQpAQCAtNjUyLDEyICs2NDQsNDMg
QEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gRGF0YWJhc2U6OnNlYwogICAgIHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLT50aHJlYWRzYWZlQ29weSgpOwogfQogCitQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbjsKK30KKworUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gRGF0YWJhc2U6OnRocmVhZFNhZmVTZWN1cml0eU9yaWdp
bigpIGNvbnN0Cit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoY3VycmVudFRocmVhZCgpID09IGRv
Y3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgICAgIHJldHVy
biBkYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIFN0
cmluZyBEYXRhYmFzZTo6c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJu
IGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQogICAgIHJldHVybiBt
X25hbWUudGhyZWFkc2FmZUNvcHkoKTsKIH0KIAorU3RyaW5nIERhdGFiYXNlOjpkaXNwbGF5TmFt
ZSgpIGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcg
dGhyZWFkIHNhZmV0eQorICAgIHJldHVybiBtX2Rpc3BsYXlOYW1lLnRocmVhZHNhZmVDb3B5KCk7
Cit9CisKK3Vuc2lnbmVkIGxvbmcgRGF0YWJhc2U6OmVzdGltYXRlZFNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2VzdGltYXRlZFNpemU7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6ZmlsZU5h
bWUoKSBjb25zdAoreworICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5n
IHRocmVhZCBzYWZldHkKKyAgICByZXR1cm4gbV9maWxlbmFtZS50aHJlYWRzYWZlQ29weSgpOwor
fQorCiAjZW5kaWYKIAogfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgJKHJldmlzaW9uIDQ5ODMwKQorKysg
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDEy
IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbkNvcHkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkYXRh
YmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdGhyZWFkU2FmZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAgICAgU3RyaW5nIHN0
cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUoKSBjb25zdDsKKyAgICBTdHJpbmcgZmls
ZU5hbWUoKSBjb25zdDsKIAogICAgIGJvb2wgZ2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcm
KTsKICAgICBib29sIHNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTIx
LDcgKzEyNiw4IEBAIHB1YmxpYzoKICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRGF0YWJhc2UoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uKTsKKyAgICBEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKIAog
ICAgIGJvb2wgb3BlbkFuZFZlcmlmeVZlcnNpb24oRXhjZXB0aW9uQ29kZSYpOwogCkBAIC0xMzcs
OSArMTQzLDEyIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luOwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgaW50IG1fZ3VpZDsKICAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNp
b247CisgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1f
ZXN0aW1hdGVkU2l6ZTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsKIAogICAgIGJvb2wgbV9kZWxl
dGVkOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDQ5ODMw
KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTE4Miw2ICsxODMsMTYgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0Vu
dHJ5Rm9yRGF0YWJhcwogICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpID09IFNRTFJlc3VsdFJv
dzsKIH0KIAordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZv
ckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGRhdGFiYXNlLT5kb2N1bWVudCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRU
aHJlYWRJRCgpKTsKKyAgICAvLyBUaGUgbWF4aW11bSBzaXplIGZvciBhIGRhdGFiYXNlIGlzIHRo
ZSBmdWxsIHF1b3RhIGZvciBpdHMgb3JpZ2luLCBtaW51cyB0aGUgY3VycmVudCB1c2FnZSB3aXRo
aW4gdGhlIG9yaWdpbiwKKyAgICAvLyBwbHVzIHRoZSBjdXJyZW50IHVzYWdlIG9mIHRoZSBnaXZl
biBkYXRhYmFzZQorICAgIExvY2tlcjxPcmlnaW5RdW90YU1hbmFnZXI+IGxvY2tlcihvcmlnaW5R
dW90YU1hbmFnZXIoKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBkYXRh
YmFzZS0+ZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbigpOworICAgIHJldHVybiBxdW90YUZv
ck9yaWdpbihvcmlnaW4uZ2V0KCkpIC0gb3JpZ2luUXVvdGFNYW5hZ2VyKCkuZGlza1VzYWdlKG9y
aWdpbi5nZXQoKSkgKyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKGRhdGFi
YXNlLT5maWxlTmFtZSgpKTsKK30KKwogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luUGF0
aChTZWN1cml0eU9yaWdpbiogb3JpZ2luKSBjb25zdAogewogICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90aHJlYWQpOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2
aXNpb24gNDk4MzApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNFbnRyeUZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1h
eFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSopOworCiBwcml2YXRlOgogICAgIERhdGFi
YXNlVHJhY2tlcigpOwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlz
aW9uIDQ5ODMwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU1FMRXJyb3IuaCIK
ICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiA0OTgzMCkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0VHJhbgogICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmRvY3VtZW50KCktPmRh
dGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9
IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAotICAgICAgICBkYXRhYmFzZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cisg
ICAgICAgIGRhdGFiYXNlLT5kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGRh
dGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xp
ZW50OjpkaWRFeGVjdXRlU3RhdGVtZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikK
</data>
<flag name="review"
          id="22878"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41917</attachid>
            <date>2009-10-26 17:13:56 -0700</date>
            <delta_ts>2009-10-27 11:51:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14786</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDExMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMDktMTAtMTkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvcmluZyB0aGUgRGF0YWJhc2UgY2xhc3MgdG8gbm90IGRlcGVuZCBvbgorCU9yaWdp
blF1b3RhTWFuYWdlci4gQWxzbywgYWRkaW5nIGEgU2VjdXJpdHlPcmlnaW4gY29weSB0byBlYWNo
CisJRGF0YWJhc2UgaW5zdGFuY2UsIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIGZpbGUKKwl0
aHJlYWQuIEZpbmFsbHksIGFkZGluZyBuZXcgc2ltcGxlIGZpZWxkcyBhbmQgZ2V0dGVycyB0byB0
aGUKKwlEYXRhYmFzZSBvYmplY3QgZm9yIHN0b3JpbmcvZ2V0dGluZyB0aGUgZGlzcGxheSBuYW1l
IGFuZCBlc3RpbWF0ZWQKKwlzaXplIHNwZWNpZmllZCBieSB0aGUgdXNlciBpbiB0aGUgb3BlbkRh
dGFiYXNlKCkgY2FsbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzA1NDgKKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kCisJdGhlIGVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6RGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kIHRoZQorCWVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QsIGFzIHdlbGwgYXMgYSBTZWN1cml0eU9yaWdp
bgorCWluc3RhbmNlIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIERCIHRocmVhZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjptYXhpbXVtU2l6ZSk6IERlbGVnYXRlIHRoZSBjYWxsIHRv
CisJRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKTogUmV0dXJuIHRo
ZQorCVNlY3VyaXR5T3JpZ2luIGluc3RhbmNlIHRoYXQncyBzYWZlIHRvIHVzZSBvbiB0aGUgREIg
dGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRocmVhZFNhZmVTZWN1cml0eU9y
aWdpbik6IFJldHVybiB0aGUKKwlTZWN1cml0eU9yaWdpbiBpbnN0YW5jZSB0aGF0J3Mgc2FmZSB0
byB1c2Ugb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OmRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSBkaXNwbGF5IG5hbWUKKwlzcGVjaWZpZWQgYnkgdGhl
IHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6ZXN0aW1hdGVkU2l6ZSk6IFJldHVybiB0aGUgZXN0aW1hdGVkIHNpemUKKwlzcGVjaWZp
ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWUpOiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hl
cmUKKwl0aGUgY3VycmVudCBEYXRhYmFzZSBpcyB0b3JlZC4KKyAgICAgICAgKiBzdG9yYWdlL0Rh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UpOiBSZXR1
cm5zIHRoZQorCW1heGltdW0gc2l6ZSBmb3IgYSBEQiBmaWxlIGJhc2VkIG9uIHRoZSBjdXJyZW50
IHNpemUgb2YgdGhhdCBmaWxlCisJYW5kIHRoZSBzcGFjZSBhdmFpbGFibGUgZm9yIHRoYXQgb3Jp
Z2luLgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24pOiBVc2UgdGhlCisJY29ycmVjdCBTZWN1cml0eU9yaWdpbiBpbnN0
YW5jZS4KKwogMjAwOS0xMC0yNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCShyZXZpc2lvbiA1MDExMCkKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCB3aXRoIHRoZSBzdHJpbmcgIm51
bGwiLgogICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAotICAgICAgICAvLyBTZXJp
YWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3RvcmFnZSBpbiB0aGUgZGF0YWJhc2UuIFRo
aXMgZm9ybWF0IGlzCi0gICAgICAgIC8vIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBiZSB1c2VkIG9u
bHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGF0YWJhc2VzOwotICAgICAgICAvLyB1c2Ug
dG9TdHJpbmcoKSBhbmQgY3JlYXRlRnJvbVN0cmluZygpIGluc3RlYWQuCisgICAgICAgIC8vIFNl
cmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQgY291bGQgYmUgdXNl
ZCBhcyBwYXJ0IG9mCisgICAgICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBi
ZSB1c2VkIGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVu
dGlmaWVyKCkgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVh
bGl0eSBiZXR3ZWVuIFNlY3VyaXR5T3JpZ2lucywgbm90IHdoZXRoZXIKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gNTAxMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4g
RGF0YWJhc2U6Om9wZW5EYXRhYgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGRvY3VtZW50LCBu
YW1lLCBleHBlY3RlZFZlcnNpb24pKTsKKyAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0g
YWRvcHRSZWYobmV3IERhdGFiYXNlKGRvY3VtZW50LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7CiAKICAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5k
VmVyaWZ5VmVyc2lvbihlKSkgewogICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIG9w
ZW4gYW5kIHZlcmlmeSB2ZXJzaW9uIChleHBlY3RlZCAlcykgb2YgZGF0YWJhc2UgJXMiLCBleHBl
Y3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlLT5kYXRhYmFzZURlYnVnTmFtZSgp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTE0NywxOCArMTQ3LDIxIEBAIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IERhdGFiYXNlOjpvcGVuRGF0YWIKICAgICByZXR1cm4gZGF0YWJhc2U7CiB9CiAKLURhdGFi
YXNlOjpEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24pCitEYXRhYmFzZTo6RGF0YWJhc2UoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJz
aW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUpCiAgICAgOiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiAgICAgLCBtX25hbWUobmFtZS5jcm9zc1RocmVhZFN0cmluZygpKQogICAg
ICwgbV9ndWlkKDApCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24pCisg
ICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQorICAgICwgbV9lc3RpbWF0ZWRTaXplKGVz
dGltYXRlZFNpemUpCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3N0b3BwZWQoZmFs
c2UpCiAgICAgLCBtX29wZW5lZChmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAg
IG1fc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX21h
aW5UaHJlYWRTZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAg
IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fbWFpblRocmVhZFNlY3VyaXR5T3Jp
Z2luLT50aHJlYWRzYWZlQ29weSgpOwogCiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKICAgICAg
ICAgbV9uYW1lID0gIiI7CkBAIC0xNjcsNyArMTcwLDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERv
Y3VtZW50KiBkb2N1bWVudCwgYwogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2Vu
ZGlmCiAKLSAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShtX3NlY3VyaXR5T3JpZ2lu
LT50b1N0cmluZygpLCBuYW1lKTsKKyAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZSht
X21haW5UaHJlYWRTZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSwgbmFtZSk7CiAKICAgICB7CiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CkBAIC0xODMsNyArMTg2LDcg
QEAgRGF0YWJhc2U6OkRhdGFiYXNlKERvY3VtZW50KiBkb2N1bWVudCwgYwogCiAgICAgQVNTRVJU
KG1fZG9jdW1lbnQtPmRhdGFiYXNlVGhyZWFkKCkpOwogCi0gICAgbV9maWxlbmFtZSA9IERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UobV9zZWN1cml0eU9yaWdp
bi5nZXQoKSwgbV9uYW1lKTsKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShtX21haW5UaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQo
KSwgbV9uYW1lKTsKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRh
YmFzZSh0aGlzKTsKICAgICBtX2RvY3VtZW50LT5hZGRPcGVuRGF0YWJhc2UodGhpcyk7CkBAIC0z
NjYsMjAgKzM2OSw5IEBAIHZvaWQgRGF0YWJhc2U6OnN0b3AoKQogICAgIH0KIH0KIAotdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjpkYXRhYmFzZVNpemUoKSBjb25zdAotewotICAgIHJldHVy
biBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKG1fZmlsZW5hbWUpOwotfQot
CiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIHsKLSAg
ICAvLyBUaGUgbWF4aW11bSBzaXplIGZvciB0aGlzIGRhdGFiYXNlIGlzIHRoZSBmdWxsIHF1b3Rh
IGZvciB0aGlzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoaXMgb3Jp
Z2luLAotICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhpcyBkYXRhYmFz
ZQotCi0gICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKLSAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5h
Z2VyPiBsb2NrZXIobWFuYWdlcik7Ci0KLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSkgLSBtYW5hZ2VyLmRp
c2tVc2FnZShtX3NlY3VyaXR5T3JpZ2luLmdldCgpKSArIGRhdGFiYXNlU2l6ZSgpOworICAgIHJl
dHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhp
cyk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkKQEAgLTY0Nyw5ICs2
MzksMTMgQEAgdm9pZCBEYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IAogICAgIHVw
ZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgdmVyc2lvbik7CiB9CiAKLVBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbkNvcHkoKSBjb25zdAorU2VjdXJp
dHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW4tPnRocmVhZHNhZmVDb3B5KCk7CisgICAgaWYgKGlzTWFpblRocmVh
ZCgpKQorICAgICAgICByZXR1cm4gbV9tYWluVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7Cisg
ICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBkb2N1bWVudCgpLT5kYXRhYmFzZVRocmVhZCgpLT5n
ZXRUaHJlYWRJRCgpKQorICAgICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3Jp
Z2luLmdldCgpOworICAgIHJldHVybiAwOwogfQogCiBTdHJpbmcgRGF0YWJhc2U6OnN0cmluZ0lk
ZW50aWZpZXIoKSBjb25zdApAQCAtNjU4LDYgKzY1NCwyMyBAQCBTdHJpbmcgRGF0YWJhc2U6OnN0
cmluZ0lkZW50aWZpZXIoKSBjb25zCiAgICAgcmV0dXJuIG1fbmFtZS50aHJlYWRzYWZlQ29weSgp
OwogfQogCitTdHJpbmcgRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKK3sKKyAgICAvLyBS
ZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CisgICAgcmV0
dXJuIG1fZGlzcGxheU5hbWUudGhyZWFkc2FmZUNvcHkoKTsKK30KKwordW5zaWduZWQgbG9uZyBE
YXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXN0aW1hdGVk
U2l6ZTsKK30KKworU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8g
UmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQorICAgIHJl
dHVybiBtX2ZpbGVuYW1lLnRocmVhZHNhZmVDb3B5KCk7Cit9CisKICNlbmRpZgogCiB9CkluZGV4
OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2UuaAkocmV2aXNpb24gNTAxMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksMTEgQEAgcHVibGljOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHRhYmxlTmFtZXMoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbkNvcHkoKSBjb25zdDsKKyAgICBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBTdHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0
OworICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSgpIGNvbnN0OworICAgIFN0cmluZyBmaWxlTmFtZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYpOwogICAgIGJvb2wgc2V0VmVyc2lv
bkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC0xMjEsNyArMTI0LDggQEAgcHVibGljOgog
ICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24pOworICAgIERhdGFi
YXNlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKKyAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogCiAgICAgYm9vbCBvcGVuQW5kVmVyaWZ5
VmVyc2lvbihFeGNlcHRpb25Db2RlJik7CiAKQEAgLTEzNiwxMCArMTQwLDEzIEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgZGVsaXZlclBlbmRpbmdDYWxsYmFjayh2b2lkKik7CiAKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X3NlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9tYWluVGhyZWFk
U2VjdXJpdHlPcmlnaW47CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2RhdGFiYXNlVGhy
ZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBpbnQgbV9ndWlkOwog
ICAgIFN0cmluZyBtX2V4cGVjdGVkVmVyc2lvbjsKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9lc3RpbWF0ZWRTaXplOwogICAgIFN0cmluZyBtX2Zp
bGVuYW1lOwogCiAgICAgYm9vbCBtX2RlbGV0ZWQ7CkBAIC0xNTIsNyArMTU5LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsK
IAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUoKSBjb25zdCB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1fbmFtZTsgfQor
ICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpblRocmVh
ZFNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1fbmFtZTsgfQogI2VuZGlmCiB9
OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gNTAxMTAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTgyLDYgKzE4MywxNiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50
cnlGb3JEYXRhYmFzCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMUmVzdWx0Um93
OwogfQogCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9y
RGF0YWJhc2UoY29uc3QgRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gZGF0YWJhc2UtPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRo
cmVhZElEKCkpOworICAgIC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGEgZGF0YWJhc2UgaXMgdGhl
IGZ1bGwgcXVvdGEgZm9yIGl0cyBvcmlnaW4sIG1pbnVzIHRoZSBjdXJyZW50IHVzYWdlIHdpdGhp
biB0aGUgb3JpZ2luLAorICAgIC8vIHBsdXMgdGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhlIGdpdmVu
IGRhdGFiYXNlCisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG9yaWdpblF1
b3RhTWFuYWdlcigpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGRhdGFi
YXNlLT5zZWN1cml0eU9yaWdpbigpOworICAgIHJldHVybiBxdW90YUZvck9yaWdpbihvcmlnaW4u
Z2V0KCkpIC0gb3JpZ2luUXVvdGFNYW5hZ2VyKCkuZGlza1VzYWdlKG9yaWdpbi5nZXQoKSkgKyBT
UUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKGRhdGFiYXNlLT5maWxlTmFtZSgp
KTsKK30KKwogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luUGF0aChTZWN1cml0eU9yaWdp
biogb3JpZ2luKSBjb25zdAogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJl
YWQpOwpAQCAtNDA5LDEzICs0MjAsMTEgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZShEYQogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAgIG1fb3BlbkRh
dGFiYXNlTWFwLnNldChuZXcgRGF0YWJhc2VPcmlnaW5NYXApOwogCi0gICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpKTsKICAgICBT
dHJpbmcgbmFtZShkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLQotICAgIERhdGFiYXNl
TmFtZU1hcCogbmFtZU1hcCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luKTsKKyAgICBE
YXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KGRhdGFiYXNl
LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAoIW5hbWVNYXApIHsKICAgICAgICAgbmFtZU1h
cCA9IG5ldyBEYXRhYmFzZU5hbWVNYXA7Ci0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwLT5zZXQo
b3JpZ2luLCBuYW1lTWFwKTsKKyAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAtPnNldChkYXRhYmFz
ZS0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZU1hcCk7CiAgICAgfQogCiAgICAgRGF0YWJhc2VTZXQq
IGRhdGFiYXNlU2V0ID0gbmFtZU1hcC0+Z2V0KG5hbWUpOwpAQCAtNDQxLDEwICs0NTAsOCBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbihkYXRhYmFzZS0+c2Vj
dXJpdHlPcmlnaW5Db3B5KCkpOwogICAgIFN0cmluZyBuYW1lKGRhdGFiYXNlLT5zdHJpbmdJZGVu
dGlmaWVyKCkpOwotCi0gICAgRGF0YWJhc2VOYW1lTWFwKiBuYW1lTWFwID0gbV9vcGVuRGF0YWJh
c2VNYXAtPmdldChvcmlnaW4pOworICAgIERhdGFiYXNlTmFtZU1hcCogbmFtZU1hcCA9IG1fb3Bl
bkRhdGFiYXNlTWFwLT5nZXQoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmICgh
bmFtZU1hcCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDY5LDcgKzQ3Niw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0
YWJhc2UKICAgICBpZiAoIW5hbWVNYXAtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9vcGVuRGF0YWJhc2VNYXAtPnJlbW92ZShvcmlnaW4pOworICAgIG1fb3BlbkRhdGFiYXNl
TWFwLT5yZW1vdmUoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGRlbGV0ZSBuYW1l
TWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiA1MDEx
MCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKik7CiAKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRh
dGFiYXNlKGNvbnN0IERhdGFiYXNlKik7CisKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VUcmFja2Vy
KCk7CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCShyZXZpc2lv
biA1MDExMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDcgQEAgdm9pZCBPcmlnaW5RdW90YU1hbmFnZXI6Om1h
cmtEYXRhYmFzZShEYQogewogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAgICAgQVNTRVJUKG1fdXNh
Z2VSZWNvcmRHdWFyZExvY2tlZCk7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0gICAgT3JpZ2luVXNhZ2VSZWNvcmQq
IHVzYWdlUmVjb3JkID0gbV91c2FnZU1hcC5nZXQob3JpZ2luKTsKKyAgICBPcmlnaW5Vc2FnZVJl
Y29yZCogdXNhZ2VSZWNvcmQgPSBtX3VzYWdlTWFwLmdldChkYXRhYmFzZS0+c2VjdXJpdHlPcmln
aW4oKSk7CiAgICAgQVNTRVJUKHVzYWdlUmVjb3JkKTsKIAogICAgIHVzYWdlUmVjb3JkLT5tYXJr
RGF0YWJhc2UoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7CkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDUwMTEwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU1FMRXJyb3IuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgpJ
bmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiA1
MDExMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlk
Q29tbWl0VHJhbgogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRh
dGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwog
ICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAot
ICAgICAgICBkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2Ut
PnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgICAgIGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigp
LCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlv
bkNsaWVudDo6ZGlkRXhlY3V0ZVN0YXRlbWVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CkBAIC02NSwxMSArNjUsOSBAQCBib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRR
dW90CiAgICAgUGFnZSogcGFnZSA9IGRhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7CiAgICAg
QVNTRVJUKHBhZ2UpOwogCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBkYXRh
YmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3Jp
Z2luLmdldCgpKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3Jp
Z2luKCkpOwogICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKGRhdGFiYXNlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRp
ZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9y
T3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICByZXR1cm4gKG5ld1F1b3Rh
ID4gY3VycmVudFF1b3RhKTsKIH0KIAo=
</data>
<flag name="review"
          id="23389"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41970</attachid>
            <date>2009-10-27 11:51:36 -0700</date>
            <delta_ts>2009-10-27 13:15:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14767</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDExMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMDktMTAtMTkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvcmluZyB0aGUgRGF0YWJhc2UgY2xhc3MgdG8gbm90IGRlcGVuZCBvbgorCU9yaWdp
blF1b3RhTWFuYWdlci4gQWxzbywgYWRkaW5nIGEgU2VjdXJpdHlPcmlnaW4gY29weSB0byBlYWNo
CisJRGF0YWJhc2UgaW5zdGFuY2UsIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIGZpbGUKKwl0
aHJlYWQuIEZpbmFsbHksIGFkZGluZyBuZXcgc2ltcGxlIGZpZWxkcyBhbmQgZ2V0dGVycyB0byB0
aGUKKwlEYXRhYmFzZSBvYmplY3QgZm9yIHN0b3JpbmcvZ2V0dGluZyB0aGUgZGlzcGxheSBuYW1l
IGFuZCBlc3RpbWF0ZWQKKwlzaXplIHNwZWNpZmllZCBieSB0aGUgdXNlciBpbiB0aGUgb3BlbkRh
dGFiYXNlKCkgY2FsbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzA1NDgKKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kCisJdGhlIGVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6RGF0YWJhc2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kIHRoZQorCWVzdGltYXRl
ZCBzaXplIGluIHRoZSBEYXRhYmFzZSBvYmplY3QsIGFzIHdlbGwgYXMgYSBTZWN1cml0eU9yaWdp
bgorCWluc3RhbmNlIHRoYXQgaXMgc2FmZSB0byB1c2Ugb24gdGhlIERCIHRocmVhZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjptYXhpbXVtU2l6ZSk6IERlbGVnYXRlIHRoZSBjYWxsIHRv
CisJRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luKTogUmV0dXJuIHRo
ZQorCVNlY3VyaXR5T3JpZ2luIGluc3RhbmNlIHRoYXQncyBzYWZlIHRvIHVzZSBvbiB0aGUgREIg
dGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRocmVhZFNhZmVTZWN1cml0eU9y
aWdpbik6IFJldHVybiB0aGUKKwlTZWN1cml0eU9yaWdpbiBpbnN0YW5jZSB0aGF0J3Mgc2FmZSB0
byB1c2Ugb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OmRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSBkaXNwbGF5IG5hbWUKKwlzcGVjaWZpZWQgYnkgdGhl
IHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6ZXN0aW1hdGVkU2l6ZSk6IFJldHVybiB0aGUgZXN0aW1hdGVkIHNpemUKKwlzcGVjaWZp
ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFzZSgpIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWUpOiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hl
cmUKKwl0aGUgY3VycmVudCBEYXRhYmFzZSBpcyB0b3JlZC4KKyAgICAgICAgKiBzdG9yYWdlL0Rh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UpOiBSZXR1
cm5zIHRoZQorCW1heGltdW0gc2l6ZSBmb3IgYSBEQiBmaWxlIGJhc2VkIG9uIHRoZSBjdXJyZW50
IHNpemUgb2YgdGhhdCBmaWxlCisJYW5kIHRoZSBzcGFjZSBhdmFpbGFibGUgZm9yIHRoYXQgb3Jp
Z2luLgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24pOiBVc2UgdGhlCisJY29ycmVjdCBTZWN1cml0eU9yaWdpbiBpbnN0
YW5jZS4KKwogMjAwOS0xMC0yNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCShyZXZpc2lvbiA1MDExMCkKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCB3aXRoIHRoZSBzdHJpbmcgIm51
bGwiLgogICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAotICAgICAgICAvLyBTZXJp
YWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3RvcmFnZSBpbiB0aGUgZGF0YWJhc2UuIFRo
aXMgZm9ybWF0IGlzCi0gICAgICAgIC8vIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBiZSB1c2VkIG9u
bHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGF0YWJhc2VzOwotICAgICAgICAvLyB1c2Ug
dG9TdHJpbmcoKSBhbmQgY3JlYXRlRnJvbVN0cmluZygpIGluc3RlYWQuCisgICAgICAgIC8vIFNl
cmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQgY291bGQgYmUgdXNl
ZCBhcyBwYXJ0IG9mCisgICAgICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBi
ZSB1c2VkIGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVu
dGlmaWVyKCkgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVh
bGl0eSBiZXR3ZWVuIFNlY3VyaXR5T3JpZ2lucywgbm90IHdoZXRoZXIKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gNTAxMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4g
RGF0YWJhc2U6Om9wZW5EYXRhYgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGRvY3VtZW50LCBu
YW1lLCBleHBlY3RlZFZlcnNpb24pKTsKKyAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0g
YWRvcHRSZWYobmV3IERhdGFiYXNlKGRvY3VtZW50LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7CiAKICAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5k
VmVyaWZ5VmVyc2lvbihlKSkgewogICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIG9w
ZW4gYW5kIHZlcmlmeSB2ZXJzaW9uIChleHBlY3RlZCAlcykgb2YgZGF0YWJhc2UgJXMiLCBleHBl
Y3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlLT5kYXRhYmFzZURlYnVnTmFtZSgp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTE0NywxOCArMTQ3LDIxIEBAIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IERhdGFiYXNlOjpvcGVuRGF0YWIKICAgICByZXR1cm4gZGF0YWJhc2U7CiB9CiAKLURhdGFi
YXNlOjpEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24pCitEYXRhYmFzZTo6RGF0YWJhc2UoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJz
aW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUpCiAgICAgOiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiAgICAgLCBtX25hbWUobmFtZS5jcm9zc1RocmVhZFN0cmluZygpKQogICAg
ICwgbV9ndWlkKDApCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24pCisg
ICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQorICAgICwgbV9lc3RpbWF0ZWRTaXplKGVz
dGltYXRlZFNpemUpCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3N0b3BwZWQoZmFs
c2UpCiAgICAgLCBtX29wZW5lZChmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAg
IG1fc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX21h
aW5UaHJlYWRTZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAg
IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fbWFpblRocmVhZFNlY3VyaXR5T3Jp
Z2luLT50aHJlYWRzYWZlQ29weSgpOwogCiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKICAgICAg
ICAgbV9uYW1lID0gIiI7CkBAIC0xNjcsNyArMTcwLDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERv
Y3VtZW50KiBkb2N1bWVudCwgYwogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2Vu
ZGlmCiAKLSAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShtX3NlY3VyaXR5T3JpZ2lu
LT50b1N0cmluZygpLCBuYW1lKTsKKyAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZSht
X21haW5UaHJlYWRTZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSwgbmFtZSk7CiAKICAgICB7CiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CkBAIC0xODMsNyArMTg2LDcg
QEAgRGF0YWJhc2U6OkRhdGFiYXNlKERvY3VtZW50KiBkb2N1bWVudCwgYwogCiAgICAgQVNTRVJU
KG1fZG9jdW1lbnQtPmRhdGFiYXNlVGhyZWFkKCkpOwogCi0gICAgbV9maWxlbmFtZSA9IERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UobV9zZWN1cml0eU9yaWdp
bi5nZXQoKSwgbV9uYW1lKTsKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShtX21haW5UaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQo
KSwgbV9uYW1lKTsKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRh
YmFzZSh0aGlzKTsKICAgICBtX2RvY3VtZW50LT5hZGRPcGVuRGF0YWJhc2UodGhpcyk7CkBAIC0z
NjYsMjAgKzM2OSw5IEBAIHZvaWQgRGF0YWJhc2U6OnN0b3AoKQogICAgIH0KIH0KIAotdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjpkYXRhYmFzZVNpemUoKSBjb25zdAotewotICAgIHJldHVy
biBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKG1fZmlsZW5hbWUpOwotfQot
CiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIHsKLSAg
ICAvLyBUaGUgbWF4aW11bSBzaXplIGZvciB0aGlzIGRhdGFiYXNlIGlzIHRoZSBmdWxsIHF1b3Rh
IGZvciB0aGlzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoaXMgb3Jp
Z2luLAotICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhpcyBkYXRhYmFz
ZQotCi0gICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKLSAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5h
Z2VyPiBsb2NrZXIobWFuYWdlcik7Ci0KLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSkgLSBtYW5hZ2VyLmRp
c2tVc2FnZShtX3NlY3VyaXR5T3JpZ2luLmdldCgpKSArIGRhdGFiYXNlU2l6ZSgpOworICAgIHJl
dHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhp
cyk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkKQEAgLTY0Nyw5ICs2
MzksMTMgQEAgdm9pZCBEYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IAogICAgIHVw
ZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgdmVyc2lvbik7CiB9CiAKLVBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbkNvcHkoKSBjb25zdAorU2VjdXJp
dHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW4tPnRocmVhZHNhZmVDb3B5KCk7CisgICAgaWYgKGlzTWFpblRocmVh
ZCgpKQorICAgICAgICByZXR1cm4gbV9tYWluVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7Cisg
ICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBkb2N1bWVudCgpLT5kYXRhYmFzZVRocmVhZCgpLT5n
ZXRUaHJlYWRJRCgpKQorICAgICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3Jp
Z2luLmdldCgpOworICAgIHJldHVybiAwOwogfQogCiBTdHJpbmcgRGF0YWJhc2U6OnN0cmluZ0lk
ZW50aWZpZXIoKSBjb25zdApAQCAtNjU4LDYgKzY1NCwyMyBAQCBTdHJpbmcgRGF0YWJhc2U6OnN0
cmluZ0lkZW50aWZpZXIoKSBjb25zCiAgICAgcmV0dXJuIG1fbmFtZS50aHJlYWRzYWZlQ29weSgp
OwogfQogCitTdHJpbmcgRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKK3sKKyAgICAvLyBS
ZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CisgICAgcmV0
dXJuIG1fZGlzcGxheU5hbWUudGhyZWFkc2FmZUNvcHkoKTsKK30KKwordW5zaWduZWQgbG9uZyBE
YXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXN0aW1hdGVk
U2l6ZTsKK30KKworU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0Cit7CisgICAgLy8g
UmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQorICAgIHJl
dHVybiBtX2ZpbGVuYW1lLnRocmVhZHNhZmVDb3B5KCk7Cit9CisKICNlbmRpZgogCiB9CkluZGV4
OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2UuaAkocmV2aXNpb24gNTAxMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksMTEgQEAgcHVibGljOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHRhYmxlTmFtZXMoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbkNvcHkoKSBjb25zdDsKKyAgICBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBTdHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0
OworICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSgpIGNvbnN0OworICAgIFN0cmluZyBmaWxlTmFtZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYpOwogICAgIGJvb2wgc2V0VmVyc2lv
bkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC0xMjEsNyArMTI0LDggQEAgcHVibGljOgog
ICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24pOworICAgIERhdGFi
YXNlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKKyAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogCiAgICAgYm9vbCBvcGVuQW5kVmVyaWZ5
VmVyc2lvbihFeGNlcHRpb25Db2RlJik7CiAKQEAgLTEzNiwxMCArMTQwLDEzIEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgZGVsaXZlclBlbmRpbmdDYWxsYmFjayh2b2lkKik7CiAKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X3NlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9tYWluVGhyZWFk
U2VjdXJpdHlPcmlnaW47CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2RhdGFiYXNlVGhy
ZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBpbnQgbV9ndWlkOwog
ICAgIFN0cmluZyBtX2V4cGVjdGVkVmVyc2lvbjsKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9lc3RpbWF0ZWRTaXplOwogICAgIFN0cmluZyBtX2Zp
bGVuYW1lOwogCiAgICAgYm9vbCBtX2RlbGV0ZWQ7CkBAIC0xNTIsNyArMTU5LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsK
IAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUoKSBjb25zdCB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1fbmFtZTsgfQor
ICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpblRocmVh
ZFNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1fbmFtZTsgfQogI2VuZGlmCiB9
OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gNTAxMTAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTgyLDYgKzE4MywxNiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50
cnlGb3JEYXRhYmFzCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMUmVzdWx0Um93
OwogfQogCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9y
RGF0YWJhc2UoY29uc3QgRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gZGF0YWJhc2UtPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRo
cmVhZElEKCkpOworICAgIC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGEgZGF0YWJhc2UgaXMgdGhl
IGZ1bGwgcXVvdGEgZm9yIGl0cyBvcmlnaW4sIG1pbnVzIHRoZSBjdXJyZW50IHVzYWdlIHdpdGhp
biB0aGUgb3JpZ2luLAorICAgIC8vIHBsdXMgdGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhlIGdpdmVu
IGRhdGFiYXNlCisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG9yaWdpblF1
b3RhTWFuYWdlcigpKTsKKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgcmV0dXJuIHF1b3RhRm9yT3JpZ2luKG9yaWdpbikgLSBvcmln
aW5RdW90YU1hbmFnZXIoKS5kaXNrVXNhZ2Uob3JpZ2luKSArIFNRTGl0ZUZpbGVTeXN0ZW06Omdl
dERhdGFiYXNlRmlsZVNpemUoZGF0YWJhc2UtPmZpbGVOYW1lKCkpOworfQorCiBTdHJpbmcgRGF0
YWJhc2VUcmFja2VyOjpvcmlnaW5QYXRoKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZCk7CkBAIC00MDksMTMgKzQy
MCwxMSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhCiAgICAgaWYg
KCFtX29wZW5EYXRhYmFzZU1hcCkKICAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAuc2V0KG5ldyBE
YXRhYmFzZU9yaWdpbk1hcCk7CiAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbihk
YXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCkpOwogICAgIFN0cmluZyBuYW1lKGRhdGFiYXNl
LT5zdHJpbmdJZGVudGlmaWVyKCkpOwotCi0gICAgRGF0YWJhc2VOYW1lTWFwKiBuYW1lTWFwID0g
bV9vcGVuRGF0YWJhc2VNYXAtPmdldChvcmlnaW4pOworICAgIERhdGFiYXNlTmFtZU1hcCogbmFt
ZU1hcCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgIGlmICghbmFtZU1hcCkgewogICAgICAgICBuYW1lTWFwID0gbmV3IERhdGFiYXNlTmFt
ZU1hcDsKLSAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAtPnNldChvcmlnaW4sIG5hbWVNYXApOwor
ICAgICAgICBtX29wZW5EYXRhYmFzZU1hcC0+c2V0KGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigp
LCBuYW1lTWFwKTsKICAgICB9CiAKICAgICBEYXRhYmFzZVNldCogZGF0YWJhc2VTZXQgPSBuYW1l
TWFwLT5nZXQobmFtZSk7CkBAIC00NDEsMTAgKzQ1MCw4IEBAIHZvaWQgRGF0YWJhc2VUcmFja2Vy
OjpyZW1vdmVPcGVuRGF0YWJhc2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHkoKSk7
CiAgICAgU3RyaW5nIG5hbWUoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0KLSAgICBE
YXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7
CisgICAgRGF0YWJhc2VOYW1lTWFwKiBuYW1lTWFwID0gbV9vcGVuRGF0YWJhc2VNYXAtPmdldChk
YXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKCFuYW1lTWFwKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC00NjksNyArNDc2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQogICAgIGlmICghbmFt
ZU1hcC0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX29wZW5EYXRhYmFzZU1h
cC0+cmVtb3ZlKG9yaWdpbik7CisgICAgbV9vcGVuRGF0YWJhc2VNYXAtPnJlbW92ZShkYXRhYmFz
ZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZGVsZXRlIG5hbWVNYXA7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDUwMTEwKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKIAor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJh
c2UqKTsKKwogcHJpdmF0ZToKICAgICBEYXRhYmFzZVRyYWNrZXIoKTsKIApJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAJKHJldmlzaW9uIDUwMTEwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw4
ICsxMDQsNyBAQCB2b2lkIE9yaWdpblF1b3RhTWFuYWdlcjo6bWFya0RhdGFiYXNlKERhCiB7CiAg
ICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICBBU1NFUlQobV91c2FnZVJlY29yZEd1YXJkTG9ja2Vk
KTsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0
eU9yaWdpbkNvcHkoKTsKLSAgICBPcmlnaW5Vc2FnZVJlY29yZCogdXNhZ2VSZWNvcmQgPSBtX3Vz
YWdlTWFwLmdldChvcmlnaW4pOworICAgIE9yaWdpblVzYWdlUmVjb3JkKiB1c2FnZVJlY29yZCA9
IG1fdXNhZ2VNYXAuZ2V0KGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBBU1NFUlQo
dXNhZ2VSZWNvcmQpOwogCiAgICAgdXNhZ2VSZWNvcmQtPm1hcmtEYXRhYmFzZShkYXRhYmFzZS0+
c3RyaW5nSWRlbnRpZmllcigpKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAko
cmV2aXNpb24gNTAxMTApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTUUxFcnJv
ci5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDUwMTEwKQorKysgV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRUcmFuCiAgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+ZG9jdW1lbnQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAgICAgRGF0YWJhc2UqIGRhdGFi
YXNlID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoCi0gICAgICAgIGRhdGFiYXNlLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigp
KTsKKyAgICAgICAgZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlLT5zdHJpbmdJ
ZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGVjdXRl
U3RhdGVtZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTY1LDExICs2NSw5IEBA
IGJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3QKICAgICBQYWdlKiBwYWdl
ID0gZGF0YWJhc2UtPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdp
bkNvcHkoKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZGF0YWJhc2UtPmRvY3Vt
ZW50KCktPmZyYW1lKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwotICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3Rh
Rm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3Rh
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNl
Y3VyaXR5T3JpZ2luKCkpOwogICAgIHJldHVybiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpOwog
fQogCg==
</data>
<flag name="review"
          id="23452"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="23460"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>