<?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>11904</bug_id>
          
          <creation_ts>2006-12-21 04:03:54 -0800</creation_ts>
          <short_desc>SVGPaintServerPatternCg should cache CGPatternRef (m_pattern) for speed</short_desc>
          <delta_ts>2006-12-27 12:38:40 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>40961</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-21 04:03:54 -0800</bug_when>
    <thetext>SVGPaintServerPatternCg should cache CGPatternRef (m_pattern) for speed

Right now m_pattern is destroyed in teardown.  Causing the first CGFillPath call which uses the pattern to rebuild the pattern caches on every draw (since every draw is the first draw with that pattern).

This accounts for over 50% of the time spent drawing plan.svg (a 30MB SVG file).

I did a quick hack to test this.  I only created m_pattern if it had not been created before, and I destroyed m_pattern only when destroying SVGPaintServerPatternCg, or when the tile was set.  That didn&apos;t seem to fix the problem though.  So either the tile is being set more often than I thought, the paintserver itself is being regenerated a bunch, or something else is wrong.  Either way, caching the CGPattern instance longer is the right direction to move in.

It might be advisable to talk with one of the CG guys however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40962</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-21 04:04:17 -0800</bug_when>
    <thetext>This is a continuation from bug 10817.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39508</commentid>
    <comment_count>2</comment_count>
      <attachid>12058</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 06:23:59 -0800</bug_when>
    <thetext>Created attachment 12058
Initial patch

No new regressions -&gt; CGPatternRef&apos;s are properly cached now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39509</commentid>
    <comment_count>3</comment_count>
      <attachid>12058</attachid>
    <who name="">mitz</who>
    <bug_when>2006-12-27 06:47:23 -0800</bug_when>
    <thetext>Comment on attachment 12058
Initial patch

Looks like it&apos;s leaking the last pattern and space used when the SVGPaintServerPattern is destroyed. Also, isn&apos;t it possible for an ImageBuffer to be shared by two SVGPaintServerPatterns?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39485</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-27 07:05:37 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 12058 [edit])
&gt; Also, isn&apos;t it possible for an ImageBuffer
&gt; to be shared by two SVGPaintServerPatterns?
&gt; 

Looking at the current code, it does indeed seem impossible, so keeping the flag on the ImageBuffer should work. However, having the &quot;contents changed&quot; flag on the ImageBuffer still doesn&apos;t feel right for a general ImageBuffer object. As far as I can see, the current code always creates the ImageBuffer, renders into it and then calls setTile, and never draws to the ImageBuffer afterwards, let alone does that without calling setTile again. In this case, it is sufficient (as far as image buffer contents are concerned; see below) for the paint server to invalidate its cache only in setTile().

I noticed that the cached CGPattern depends on the bbox and the tile&apos;s size, but you don&apos;t invalidate the cache in setBBox(). Is that (also) guaranteed not to be called after setTile()? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39475</commentid>
    <comment_count>5</comment_count>
      <attachid>12062</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 09:13:55 -0800</bug_when>
    <thetext>Created attachment 12062
Updated patch

Mitz is correct, fixed the issues he mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39474</commentid>
    <comment_count>6</comment_count>
      <attachid>12063</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 09:34:56 -0800</bug_when>
    <thetext>Created attachment 12063
Final patch

Seperating the alpha handling changes, as they don&apos;t belong in this patchset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39472</commentid>
    <comment_count>7</comment_count>
      <attachid>12064</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 09:51:58 -0800</bug_when>
    <thetext>Created attachment 12064
Final patch (II)

Eric mentioned some more optimizations. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39471</commentid>
    <comment_count>8</comment_count>
      <attachid>12064</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-27 09:56:43 -0800</bug_when>
    <thetext>Comment on attachment 12064
Final patch (II)

We discussed a couple further optimizations.  Wow what a pretty patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39469</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 10:00:01 -0800</bug_when>
    <thetext>Landed in r18433.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39415</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-27 12:38:40 -0800</bug_when>
    <thetext>Will revert this patch again, as it broke pattern zooming. Either we need a more clever logic for the caching or just don&apos;t cache. Needs to be sharked to actually decide it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12058</attachid>
            <date>2006-12-27 06:23:59 -0800</date>
            <delta_ts>2006-12-27 09:13:55 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>CachePatterns.diff</filename>
            <type>text/plain</type>
            <size>7064</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDYtMTItMjcgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlczogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDQK
KworICAgICAgICBXZSBuZWVkIHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgKG1fcGF0dGVybikg
Zm9yIGVmZmljaWVuY3kKKyAgICAgICAgaW4gU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2csIGFuZCBr
ZWVwIHRyYWNrIHdoZXRlciB0aGUgdW5kZXJseWluZworICAgICAgICBJbWFnZUJ1ZmZlciBoYXMg
Y2hhbmdlZCwgYW5kIG9ubHkgdXBkYXRlIHRoZSBwYXR0ZXJuIGluIHRoYXQgY2FzZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpyZW5kZXJTdWJ0cmVlVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udGVudHNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzZXRDb250ZW50c0NoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZl
clBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNl
cnZlclBhdHRlcm5DZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVybjo6dGVh
cmRvd24pOgorCiAyMDA2LTEyLTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMTg0MzIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpyZW5kZXJTdWJ0cmVlVG9JbWFnZShJCiAjZW5k
aWYKIAogICAgIGl0ZW0tPnBhaW50KGluZm8sIDAsIDApOworICAgIGltYWdlLT5zZXRDb250ZW50
c0NoYW5nZWQodHJ1ZSk7CiAKICNpZmRlZiBTVkdfU1VQUE9SVAogICAgIGlmIChzdmdDb250YWlu
ZXIgJiYgIWRyYXdzQ29udGVudHMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShDRykKICAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdl
KCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBjb250ZW50c0NoYW5nZWQoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRDb250ZW50c0NoYW5nZWQoYm9vbCk7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6
CkBAIC01OCw2ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKENH
KSAKICAgICAgICAgSW50U2l6ZSBtX3NpemU7CisgICAgICAgIGJvb2wgbV9jb250ZW50c0NoYW5n
ZWQ7CiAgICAgICAgIG11dGFibGUgQ0dJbWFnZVJlZiBtX2NnSW1hZ2U7CiAjZW5kaWYKICAgICB9
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9zaXplKHNpemUpCisgICAgLCBtX2NvbnRlbnRzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1f
Y2dJbWFnZSgwKQogewogfQpAQCAtNjgsNCArNjksMTQgQEAgQ0dJbWFnZVJlZiBJbWFnZUJ1ZmZl
cjo6Y2dJbWFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2dJbWFnZTsKIH0KIAorYm9vbCBJbWFn
ZUJ1ZmZlcjo6Y29udGVudHNDaGFuZ2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
c0NoYW5nZWQ7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6OnNldENvbnRlbnRzQ2hhbmdlZChib29s
IGNoYW5nZWQpCit7CisgICAgbV9jb250ZW50c0NoYW5nZWQgPSBjaGFuZ2VkOworfQorCiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1BhaW50
U2VydmVyUGF0dGVybi5jcHAJKHJldmlzaW9uIDE4NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJu
OjpTVkdQYWludFNlcnZlclBhdHRlcm4oKQogICAgIDogbV9ib3VuZGluZ0JveE1vZGUodHJ1ZSkK
ICAgICAsIG1fbGlzdGVuZXIoMCkKKworI2lmIFBMQVRGT1JNKENHKQorICAgICwgbV9wYXR0ZXJu
U3BhY2UoMCkKKyAgICAsIG1fcGF0dGVybigwKSAKKyNlbmRpZgogewogfQogCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuQ2cuY3BwCShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL2NnL1NWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMTYgKzQwLDIwIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkKiBp
bmZvLCAKIAogYm9vbCBTVkdQYWludFNlcnZlclBhdHRlcm46OnNldHVwKEdyYXBoaWNzQ29udGV4
dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBTVkdQYWludFRhcmdldFR5
cGUgdHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3QKIHsKLSAgICBpZihsaXN0ZW5lcigp
KSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29t
bW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQorICAgIGlmIChsaXN0ZW5lcigpKSAvLyB0aGlz
IHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29tbW9uIGJhc2Vj
bGFzcy4gLS0gZWNzIDgvNi8wNQogICAgICAgICBsaXN0ZW5lcigpLT5yZXNvdXJjZU5vdGlmaWNh
dGlvbigpOwogCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5zdHlsZSgpOwotCi0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
LQogICAgIGlmICghdGlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV9w
YXR0ZXJuICYmIHRpbGUoKS0+Y29udGVudHNDaGFuZ2VkKCkpIHsKKyAgICAgICAgQ0dQYXR0ZXJu
UmVsZWFzZShtX3BhdHRlcm4pOworICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKG1fcGF0dGVy
blNwYWNlKTsKKyAgICB9CisKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxl
KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKTsKKwogICAgIGNvbnRleHQtPnNhdmUoKTsKIAogICAgIENHU2l6ZSBjZWxsU2l6ZSA9IENH
U2l6ZSh0aWxlKCktPnNpemUoKSk7CkBAIC03MywxOSArNzcsMjAgQEAgYm9vbCBTVkdQYWludFNl
cnZlclBhdHRlcm46OnNldHVwKEdyYXBoaQogICAgIENHU2l6ZSBwaGFzZSA9IENHU2l6ZU1ha2Uo
YmJveCgpLngoKSwgLWJib3goKS55KCkpOyAvLyBQYXR0ZXJuIHNwYWNlIHNlZW1zIHRvIHN0YXJ0
IGluIHRoZSBsb3dlci1sZWZ0LCBzbyB3ZSBmbGlwIHRoZSBZIGhlcmUuCiAgICAgQ0dDb250ZXh0
U2V0UGF0dGVyblBoYXNlKGNvbnRleHRSZWYsIHBoYXNlKTsKIAotICAgIENHUGF0dGVybkNhbGxi
YWNrcyBjYWxsYmFja3MgPSB7MCwgcGF0dGVybkNhbGxiYWNrLCBOVUxMfTsKLSAgICBtX3BhdHRl
cm4gPSBDR1BhdHRlcm5DcmVhdGUodGlsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDR1JlY3RNYWtlKDAsIDAsIGNlbGxTaXplLndpZHRoLCBjZWxsU2l6ZS5oZWlnaHQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRHZXRDVE0oY29udGV4dFJl
ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3goKS53aWR0aCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94KCkuaGVpZ2h0KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIC8v
IEZJWE1FOiBzaG91bGQgYXNrIENHIGd1eXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUsIC8vIGhhcyBjb2xvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Y2FsbGJhY2tzKTsKKyAgICBpZiAodGlsZSgpLT5jb250ZW50c0NoYW5nZWQoKSkgeworICAgICAg
ICBDR1BhdHRlcm5DYWxsYmFja3MgY2FsbGJhY2tzID0gezAsIHBhdHRlcm5DYWxsYmFjaywgTlVM
TH07CisgICAgICAgIG1fcGF0dGVybiA9IENHUGF0dGVybkNyZWF0ZSh0aWxlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR1JlY3RNYWtlKDAsIDAsIGNlbGxTaXplLndp
ZHRoLCBjZWxsU2l6ZS5oZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHRSZWYpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmJveCgpLndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYm94KCkuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCAvLyBGSVhNRTogc2hvdWxkIGFz
ayBDRyBndXlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgLy8g
aGFzIGNvbG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FsbGJhY2tz
KTsKIAotICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHRSZWYsIHN0eWxlLT5vcGFjaXR5KCkp
OyAvLyBvciBkbyBJIHNldCB0aGUgYWxwaGEgYWJvdmU/Ci0KLSAgICBtX3BhdHRlcm5TcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCk7CisgICAgICAgIG1fcGF0dGVyblNwYWNlID0g
Q0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKTsKKyAgICAgICAgdGlsZSgpLT5zZXRDb250ZW50
c0NoYW5nZWQoZmFsc2UpOworICAgIH0KIAogICAgIGlmICgodHlwZSAmIEFwcGx5VG9GaWxsVGFy
Z2V0VHlwZSkgJiYgc3R5bGUtPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkgewogICAgICAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0UmVmLCBtX3BhdHRlcm5TcGFjZSk7CkBAIC0x
MDcsMTAgKzExMiw4IEBAIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1cChHcmFwaGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTVkdQYWludFNlcnZlclBhdHRlcm46OnRlYXJk
b3duKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0
LCBTVkdQYWludFRhcmdldFR5cGUgdHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3QKK3Zv
aWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0ZWFyZG93bihHcmFwaGljc0NvbnRleHQqJiBjb250
ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdQYWludFRhcmdldFR5cGUsIGJvb2wpIGNvbnN0
CiB7Ci0gICAgQ0dQYXR0ZXJuUmVsZWFzZShtX3BhdHRlcm4pOwotICAgIENHQ29sb3JTcGFjZVJl
bGVhc2UobV9wYXR0ZXJuU3BhY2UpOwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12062</attachid>
            <date>2006-12-27 09:13:55 -0800</date>
            <delta_ts>2006-12-27 09:34:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>CachePatterns.diff</filename>
            <type>text/plain</type>
            <size>6959</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDYtMTItMjcgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlczogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDQK
KworICAgICAgICBXZSBuZWVkIHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgKG1fcGF0dGVybikg
Zm9yIGVmZmljaWVuY3kKKyAgICAgICAgaW4gU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2csIGFuZCBr
ZWVwIHRyYWNrIHdoZXRlciB0aGUgdW5kZXJseWluZworICAgICAgICBJbWFnZUJ1ZmZlciBoYXMg
Y2hhbmdlZCwgYW5kIG9ubHkgdXBkYXRlIHRoZSBwYXR0ZXJuIGluIHRoYXQgY2FzZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZlclBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp+U1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVy
bjo6dGlsZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJu
OjpzZXRUaWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldFRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNl
cnZlclBhdHRlcm4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuQ2cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQ
YXR0ZXJuOjpzZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlclBhdHRlcm46
OnRlYXJkb3duKToKKwogMjAwNi0xMi0yNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4u
Y3BwCShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NW
R1BhaW50U2VydmVyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywyNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1BhaW50U2VydmVyUGF0dGVybjo6U1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuKCkKICAgICA6IG1fYm91bmRpbmdCb3hNb2RlKHRydWUpCisgICAgLCBtX3Rp
bGVDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9saXN0ZW5lcigwKQorCisjaWYgUExBVEZPUk0oQ0cp
CisgICAgLCBtX3BhdHRlcm5TcGFjZSgwKQorICAgICwgbV9wYXR0ZXJuKDApCisjZW5kaWYKIHsK
IH0KIAogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp+U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuKCkKIHsK
KyNpZiBQTEFURk9STShDRykKKyAgICBpZiAobV9wYXR0ZXJuKSB7CisgICAgICAgIENHUGF0dGVy
blJlbGVhc2UobV9wYXR0ZXJuKTsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShtX3BhdHRl
cm5TcGFjZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIEZsb2F0UmVjdCBTVkdQYWludFNlcnZlclBh
dHRlcm46OmJib3goKSBjb25zdApAQCAtNTEsNiArNjMsMTYgQEAgdm9pZCBTVkdQYWludFNlcnZl
clBhdHRlcm46OnNldEJib3goY29ucwogICAgIG1fYmJveCA9IHJlY3Q7CiB9CiAKK2Jvb2wgU1ZH
UGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0aWxlQ2hhbmdlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dGlsZUNoYW5nZWQ7Cit9CisKK3ZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRUaWxlQ2hh
bmdlZChib29sIGNoYW5nZWQpCit7CisgICAgbV90aWxlQ2hhbmdlZCA9IGNoYW5nZWQ7Cit9CisK
IGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpib3VuZGluZ0JveE1vZGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2JvdW5kaW5nQm94TW9kZTsKQEAgLTY5LDYgKzkxLDcgQEAgSW1hZ2VCdWZm
ZXIqIFNWR1BhaW50U2VydmVyUGF0dGVybjo6dGlsZQogdm9pZCBTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldFRpbGUoSW1hZ2VCdWZmZXIqIHRpbGUpCiB7CiAgICAgbV90aWxlLnNldCh0aWxlKTsK
KyAgICBtX3RpbGVDaGFuZ2VkID0gdHJ1ZTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFNWR1BhaW50
U2VydmVyUGF0dGVybjo6cGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uaAko
cmV2aXNpb24gMTg0MzIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWlu
dFNlcnZlclBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0QmJveChjb25zdCBGbG9hdFJlY3QmKTsKICAg
ICAgICAgRmxvYXRSZWN0IGJib3goKSBjb25zdDsKIAorICAgICAgICBib29sIHRpbGVDaGFuZ2Vk
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGlsZUNoYW5nZWQoYm9vbCk7CisKICAgICAgICAg
Ly8gUGF0dGVybiB4LCB5IHBoYXNlIHBvaW50cyBhcmUgcmVsYXRpdmUgd2hlbiBpbiBib3VuZGlu
Z0JveE1vZGUKICAgICAgICAgLy8gQm91bmRpbmdCb3ggbW9kZSBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQuCiAgICAgICAgIGJvb2wgYm91bmRpbmdCb3hNb2RlKCkgY29uc3Q7CkBAIC03OCw2ICs4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVy
blRyYW5zZm9ybTsKICAgICAgICAgRmxvYXRSZWN0IG1fYmJveDsKICAgICAgICAgYm9vbCBtX2Jv
dW5kaW5nQm94TW9kZTsKKyAgICAgICAgYm9vbCBtX3RpbGVDaGFuZ2VkOwogICAgICAgICBTVkdS
ZXNvdXJjZUxpc3RlbmVyKiBtX2xpc3RlbmVyOwogCiAjaWYgUExBVEZPUk0oQ0cpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNlcnZlclBhdHRlcm5DZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuQ2cuY3BwCShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3ZnL2NnL1NWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTYgKzQwLDIwIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lk
KiBpbmZvLCAKIAogYm9vbCBTVkdQYWludFNlcnZlclBhdHRlcm46OnNldHVwKEdyYXBoaWNzQ29u
dGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBTVkdQYWludFRhcmdl
dFR5cGUgdHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3QKIHsKLSAgICBpZihsaXN0ZW5l
cigpKSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEg
Y29tbW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQorICAgIGlmIChsaXN0ZW5lcigpKSAvLyB0
aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29tbW9uIGJh
c2VjbGFzcy4gLS0gZWNzIDgvNi8wNQogICAgICAgICBsaXN0ZW5lcigpLT5yZXNvdXJjZU5vdGlm
aWNhdGlvbigpOwogCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5zdHlsZSgpOwot
Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKLQogICAgIGlmICghdGlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAo
bV9wYXR0ZXJuICYmIHRpbGVDaGFuZ2VkKCkpIHsKKyAgICAgICAgQ0dQYXR0ZXJuUmVsZWFzZSht
X3BhdHRlcm4pOworICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKG1fcGF0dGVyblNwYWNlKTsK
KyAgICB9CisKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7CisgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKwog
ICAgIGNvbnRleHQtPnNhdmUoKTsKIAogICAgIENHU2l6ZSBjZWxsU2l6ZSA9IENHU2l6ZSh0aWxl
KCktPnNpemUoKSk7CkBAIC03MywxOSArNzcsMjAgQEAgYm9vbCBTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldHVwKEdyYXBoaQogICAgIENHU2l6ZSBwaGFzZSA9IENHU2l6ZU1ha2UoYmJveCgpLngo
KSwgLWJib3goKS55KCkpOyAvLyBQYXR0ZXJuIHNwYWNlIHNlZW1zIHRvIHN0YXJ0IGluIHRoZSBs
b3dlci1sZWZ0LCBzbyB3ZSBmbGlwIHRoZSBZIGhlcmUuCiAgICAgQ0dDb250ZXh0U2V0UGF0dGVy
blBoYXNlKGNvbnRleHRSZWYsIHBoYXNlKTsKIAotICAgIENHUGF0dGVybkNhbGxiYWNrcyBjYWxs
YmFja3MgPSB7MCwgcGF0dGVybkNhbGxiYWNrLCBOVUxMfTsKLSAgICBtX3BhdHRlcm4gPSBDR1Bh
dHRlcm5DcmVhdGUodGlsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR1Jl
Y3RNYWtlKDAsIDAsIGNlbGxTaXplLndpZHRoLCBjZWxsU2l6ZS5oZWlnaHQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRHZXRDVE0oY29udGV4dFJlZiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3goKS53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYm94KCkuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIC8vIEZJWE1FOiBz
aG91bGQgYXNrIENHIGd1eXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUs
IC8vIGhhcyBjb2xvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FsbGJhY2tz
KTsKKyAgICBpZiAodGlsZUNoYW5nZWQoKSkgeworICAgICAgICBDR1BhdHRlcm5DYWxsYmFja3Mg
Y2FsbGJhY2tzID0gezAsIHBhdHRlcm5DYWxsYmFjaywgTlVMTH07CisgICAgICAgIG1fcGF0dGVy
biA9IENHUGF0dGVybkNyZWF0ZSh0aWxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDR1JlY3RNYWtlKDAsIDAsIGNlbGxTaXplLndpZHRoLCBjZWxsU2l6ZS5oZWlnaHQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dDb250ZXh0R2V0Q1RNKGNv
bnRleHRSZWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveCgpLndp
ZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94KCkuaGVpZ2h0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dQYXR0ZXJuVGlsaW5n
Q29uc3RhbnRTcGFjaW5nLCAvLyBGSVhNRTogc2hvdWxkIGFzayBDRyBndXlzLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgLy8gaGFzIGNvbG9yCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FsbGJhY2tzKTsKIAotICAgIENHQ29udGV4dFNl
dEFscGhhKGNvbnRleHRSZWYsIHN0eWxlLT5vcGFjaXR5KCkpOyAvLyBvciBkbyBJIHNldCB0aGUg
YWxwaGEgYWJvdmU/Ci0KLSAgICBtX3BhdHRlcm5TcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVBh
dHRlcm4oMCk7CisgICAgICAgIG1fcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0
dGVybigwKTsKKyAgICAgICAgY29uc3RfY2FzdDxTVkdQYWludFNlcnZlclBhdHRlcm4qPih0aGlz
KS0+c2V0VGlsZUNoYW5nZWQoZmFsc2UpOworICAgIH0KIAogICAgIGlmICgodHlwZSAmIEFwcGx5
VG9GaWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkgewogICAg
ICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0UmVmLCBtX3BhdHRlcm5TcGFj
ZSk7CkBAIC0xMDcsMTAgKzExMiw4IEBAIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1
cChHcmFwaGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTVkdQYWludFNlcnZlclBhdHRl
cm46OnRlYXJkb3duKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0LCBTVkdQYWludFRhcmdldFR5cGUgdHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkg
Y29uc3QKK3ZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0ZWFyZG93bihHcmFwaGljc0NvbnRl
eHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdQYWludFRhcmdldFR5cGUsIGJv
b2wpIGNvbnN0CiB7Ci0gICAgQ0dQYXR0ZXJuUmVsZWFzZShtX3BhdHRlcm4pOwotICAgIENHQ29s
b3JTcGFjZVJlbGVhc2UobV9wYXR0ZXJuU3BhY2UpOwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12063</attachid>
            <date>2006-12-27 09:34:56 -0800</date>
            <delta_ts>2006-12-27 09:51:58 -0800</delta_ts>
            <desc>Final patch</desc>
            <filename>CachePatterns.diff</filename>
            <type>text/plain</type>
            <size>6104</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDYtMTItMjcgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNaXR6ICYgRXJpYy4KKworICAgICAg
ICBGaXhlczogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDQKKwor
ICAgICAgICBXZSBuZWVkIHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgKG1fcGF0dGVybikgZm9y
IGVmZmljaWVuY3kKKyAgICAgICAgaW4gU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2csIGFuZCBrZWVw
IHRyYWNrIHdoZXRlciB0aGUgdW5kZXJseWluZworICAgICAgICBJbWFnZUJ1ZmZlciBoYXMgY2hh
bmdlZCwgYW5kIG9ubHkgdXBkYXRlIHRoZSBwYXR0ZXJuIGluIHRoYXQgY2FzZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZlclBhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp+U1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVybjo6
c2V0VGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1BhaW50U2VydmVy
UGF0dGVybi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNl
cnZlclBhdHRlcm5DZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVybjo6dGVh
cmRvd24pOgorCiAyMDA2LTEyLTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1BhaW50U2VydmVyUGF0dGVybi5jcHAJ
KHJldmlzaW9uIDE4NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDI0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZl
clBhdHRlcm4oKQogICAgIDogbV9ib3VuZGluZ0JveE1vZGUodHJ1ZSkKKyAgICAsIG1fdGlsZUNo
YW5nZWQoZmFsc2UpCiAgICAgLCBtX2xpc3RlbmVyKDApCisKKyNpZiBQTEFURk9STShDRykKKyAg
ICAsIG1fcGF0dGVyblNwYWNlKDApCisgICAgLCBtX3BhdHRlcm4oMCkKKyNlbmRpZgogewogfQog
CiBTVkdQYWludFNlcnZlclBhdHRlcm46On5TVkdQYWludFNlcnZlclBhdHRlcm4oKQogeworI2lm
IFBMQVRGT1JNKENHKQorICAgIGlmIChtX3BhdHRlcm4pIHsKKyAgICAgICAgQ0dQYXR0ZXJuUmVs
ZWFzZShtX3BhdHRlcm4pOworICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKG1fcGF0dGVyblNw
YWNlKTsKKyAgICB9CisjZW5kaWYKIH0KIAogRmxvYXRSZWN0IFNWR1BhaW50U2VydmVyUGF0dGVy
bjo6YmJveCgpIGNvbnN0CkBAIC02OSw2ICs4MSw3IEBAIEltYWdlQnVmZmVyKiBTVkdQYWludFNl
cnZlclBhdHRlcm46OnRpbGUKIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRUaWxlKElt
YWdlQnVmZmVyKiB0aWxlKQogewogICAgIG1fdGlsZS5zZXQodGlsZSk7CisgICAgbV90aWxlQ2hh
bmdlZCA9IHRydWU7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBTVkdQYWludFNlcnZlclBhdHRlcm46
OnBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJKHJldmlzaW9uIDE4NDMy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNmb3JtOwogICAgICAgICBGbG9h
dFJlY3QgbV9iYm94OwogICAgICAgICBib29sIG1fYm91bmRpbmdCb3hNb2RlOworICAgICAgICBt
dXRhYmxlIGJvb2wgbV90aWxlQ2hhbmdlZDsKICAgICAgICAgU1ZHUmVzb3VyY2VMaXN0ZW5lciog
bV9saXN0ZW5lcjsKIAogI2lmIFBMQVRGT1JNKENHKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdmcvY2cvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2NnL1NWR1BhaW50U2VydmVyUGF0dGVybkNn
LmNwcAkocmV2aXNpb24gMTg0MzIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9j
Zy9TVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE2ICs0
MCwyMCBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgCiAKIGJvb2wg
U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1cChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRUYXJnZXRUeXBlIHR5cGUsIGJvb2wg
aXNQYWludGluZ1RleHQpIGNvbnN0CiB7Ci0gICAgaWYobGlzdGVuZXIoKSkgLy8gdGhpcyBzZWVt
cyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBiYXNlY2xhc3Mu
IC0tIGVjcyA4LzYvMDUKKyAgICBpZiAobGlzdGVuZXIoKSkgLy8gdGhpcyBzZWVtcyBsaWtlIGJh
ZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBiYXNlY2xhc3MuIC0tIGVjcyA4
LzYvMDUKICAgICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3RpZmljYXRpb24oKTsKIAotICAg
IFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+c3R5bGUoKTsKLQotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0UmVmID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0KICAgICBpZiAoIXRp
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG1fcGF0dGVybiAmJiBtX3Rp
bGVDaGFuZ2VkKSB7CisgICAgICAgIENHUGF0dGVyblJlbGVhc2UobV9wYXR0ZXJuKTsKKyAgICAg
ICAgQ0dDb2xvclNwYWNlUmVsZWFzZShtX3BhdHRlcm5TcGFjZSk7CisgICAgfQorCisgICAgUmVu
ZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5zdHlsZSgpOworICAgIENHQ29udGV4dFJlZiBjb250
ZXh0UmVmID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisKICAgICBjb250ZXh0LT5zYXZl
KCk7CiAKICAgICBDR1NpemUgY2VsbFNpemUgPSBDR1NpemUodGlsZSgpLT5zaXplKCkpOwpAQCAt
NzMsMTkgKzc3LDIyIEBAIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1cChHcmFwaGkK
ICAgICBDR1NpemUgcGhhc2UgPSBDR1NpemVNYWtlKGJib3goKS54KCksIC1iYm94KCkueSgpKTsg
Ly8gUGF0dGVybiBzcGFjZSBzZWVtcyB0byBzdGFydCBpbiB0aGUgbG93ZXItbGVmdCwgc28gd2Ug
ZmxpcCB0aGUgWSBoZXJlLgogICAgIENHQ29udGV4dFNldFBhdHRlcm5QaGFzZShjb250ZXh0UmVm
LCBwaGFzZSk7CiAKLSAgICBDR1BhdHRlcm5DYWxsYmFja3MgY2FsbGJhY2tzID0gezAsIHBhdHRl
cm5DYWxsYmFjaywgTlVMTH07Ci0gICAgbV9wYXR0ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRlKHRpbGUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dSZWN0TWFrZSgwLCAwLCBjZWxs
U2l6ZS53aWR0aCwgY2VsbFNpemUuaGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHRSZWYpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYm94KCkud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmJveCgpLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dQ
YXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCAvLyBGSVhNRTogc2hvdWxkIGFzayBDRyBndXlz
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAvLyBoYXMgY29sb3IKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhbGxiYWNrcyk7Ci0KICAgICBDR0NvbnRl
eHRTZXRBbHBoYShjb250ZXh0UmVmLCBzdHlsZS0+b3BhY2l0eSgpKTsgLy8gb3IgZG8gSSBzZXQg
dGhlIGFscGhhIGFib3ZlPwogCi0gICAgbV9wYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVQYXR0ZXJuKDApOworICAgIGlmIChtX3RpbGVDaGFuZ2VkKSB7CisgICAgICAgIENHUGF0dGVy
bkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7MCwgcGF0dGVybkNhbGxiYWNrLCBOVUxMfTsKKyAgICAg
ICAgbV9wYXR0ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRlKHRpbGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENHUmVjdE1ha2UoMCwgMCwgY2VsbFNpemUud2lkdGgsIGNlbGxT
aXplLmhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0NvbnRl
eHRHZXRDVE0oY29udGV4dFJlZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYm94KCkud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJi
b3goKS5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIC8vIEZJWE1FOiBzaG91bGQgYXNrIENHIGd1eXMu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAvLyBoYXMgY29sb3IK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWxsYmFja3MpOworCisgICAg
ICAgIG1fcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKTsKKyAgICAg
ICAgbV90aWxlQ2hhbmdlZCA9IGZhbHNlOworICAgIH0KIAogICAgIGlmICgodHlwZSAmIEFwcGx5
VG9GaWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkgewogICAg
ICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0UmVmLCBtX3BhdHRlcm5TcGFj
ZSk7CkBAIC0xMDcsMTAgKzExNCw4IEBAIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1
cChHcmFwaGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTVkdQYWludFNlcnZlclBhdHRl
cm46OnRlYXJkb3duKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0LCBTVkdQYWludFRhcmdldFR5cGUgdHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkg
Y29uc3QKK3ZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0ZWFyZG93bihHcmFwaGljc0NvbnRl
eHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdQYWludFRhcmdldFR5cGUsIGJv
b2wpIGNvbnN0CiB7Ci0gICAgQ0dQYXR0ZXJuUmVsZWFzZShtX3BhdHRlcm4pOwotICAgIENHQ29s
b3JTcGFjZVJlbGVhc2UobV9wYXR0ZXJuU3BhY2UpOwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12064</attachid>
            <date>2006-12-27 09:51:58 -0800</date>
            <delta_ts>2006-12-27 09:56:43 -0800</delta_ts>
            <desc>Final patch (II)</desc>
            <filename>CachePatterns.diff</filename>
            <type>text/plain</type>
            <size>5979</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDYtMTItMjcgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNaXR6ICYgRXJpYy4KKworICAgICAg
ICBGaXhlczogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDQKKwor
ICAgICAgICBXZSBuZWVkIHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgKG1fcGF0dGVybikgZm9y
IGVmZmljaWVuY3kKKyAgICAgICAgaW4gU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2csIGFuZCBrZWVw
IHRyYWNrIHdoZXRlciB0aGUgdW5kZXJseWluZworICAgICAgICBJbWFnZUJ1ZmZlciBoYXMgY2hh
bmdlZCwgYW5kIG9ubHkgdXBkYXRlIHRoZSBwYXR0ZXJuIGluIHRoYXQgY2FzZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZlclBhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp+U1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVybjo6
c2V0VGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1BhaW50U2VydmVy
UGF0dGVybi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNl
cnZlclBhdHRlcm5DZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlclBhdHRl
cm46OnNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyUGF0dGVybjo6dGVh
cmRvd24pOgorCiAyMDA2LTEyLTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N2Zy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1BhaW50U2VydmVyUGF0dGVybi5jcHAJ
KHJldmlzaW9uIDE4NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDI1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpTVkdQYWludFNlcnZl
clBhdHRlcm4oKQogICAgIDogbV9ib3VuZGluZ0JveE1vZGUodHJ1ZSkKKyAgICAsIG1fdGlsZUNo
YW5nZWQoZmFsc2UpCiAgICAgLCBtX2xpc3RlbmVyKDApCisKKyNpZiBQTEFURk9STShDRykKKyAg
ICAsIG1fcGF0dGVyblNwYWNlKDApCisgICAgLCBtX3BhdHRlcm4oMCkKKyNlbmRpZgogewogfQog
CiBTVkdQYWludFNlcnZlclBhdHRlcm46On5TVkdQYWludFNlcnZlclBhdHRlcm4oKQogeworI2lm
IFBMQVRGT1JNKENHKQorICAgIGlmIChtX3BhdHRlcm4pCisgICAgICAgIENHUGF0dGVyblJlbGVh
c2UobV9wYXR0ZXJuKTsKKworICAgIGlmIChtX3BhdHRlcm5TcGFjZSkKKyAgICAgICAgQ0dDb2xv
clNwYWNlUmVsZWFzZShtX3BhdHRlcm5TcGFjZSk7CisjZW5kaWYKIH0KIAogRmxvYXRSZWN0IFNW
R1BhaW50U2VydmVyUGF0dGVybjo6YmJveCgpIGNvbnN0CkBAIC02OSw2ICs4Miw3IEBAIEltYWdl
QnVmZmVyKiBTVkdQYWludFNlcnZlclBhdHRlcm46OnRpbGUKIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJQ
YXR0ZXJuOjpzZXRUaWxlKEltYWdlQnVmZmVyKiB0aWxlKQogewogICAgIG1fdGlsZS5zZXQodGls
ZSk7CisgICAgbV90aWxlQ2hhbmdlZCA9IHRydWU7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBTVkdQ
YWludFNlcnZlclBhdHRlcm46OnBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJu
LmgJKHJldmlzaW9uIDE4NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZH
UGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNm
b3JtOwogICAgICAgICBGbG9hdFJlY3QgbV9iYm94OwogICAgICAgICBib29sIG1fYm91bmRpbmdC
b3hNb2RlOworICAgICAgICBtdXRhYmxlIGJvb2wgbV90aWxlQ2hhbmdlZDsKICAgICAgICAgU1ZH
UmVzb3VyY2VMaXN0ZW5lciogbV9saXN0ZW5lcjsKIAogI2lmIFBMQVRGT1JNKENHKQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2NnL1NWR1Bh
aW50U2VydmVyUGF0dGVybkNnLmNwcAkocmV2aXNpb24gMTg0MzIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDE2ICs0MCwyMiBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuQ2FsbGJhY2sodm9p
ZCogaW5mbywgCiAKIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1cChHcmFwaGljc0Nv
bnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRUYXJn
ZXRUeXBlIHR5cGUsIGJvb2wgaXNQYWludGluZ1RleHQpIGNvbnN0CiB7Ci0gICAgaWYobGlzdGVu
ZXIoKSkgLy8gdGhpcyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBh
IGNvbW1vbiBiYXNlY2xhc3MuIC0tIGVjcyA4LzYvMDUKKyAgICBpZiAobGlzdGVuZXIoKSkgLy8g
dGhpcyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBi
YXNlY2xhc3MuIC0tIGVjcyA4LzYvMDUKICAgICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3Rp
ZmljYXRpb24oKTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+c3R5bGUoKTsK
LQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0UmVmID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0KICAgICBpZiAoIXRpbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYg
KG1fcGF0dGVybiAmJiBtX3RpbGVDaGFuZ2VkKSB7CisgICAgICAgIG1fdGlsZUNoYW5nZWQgPSBm
YWxzZTsKKyAKKyAgICAgICAgQ0dQYXR0ZXJuUmVsZWFzZShtX3BhdHRlcm4pOworICAgICAgICBt
X3BhdHRlcm4gPSAwOworICAgIH0KKworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+
c3R5bGUoKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dFJlZiA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOworCiAgICAgY29udGV4dC0+c2F2ZSgpOwogCiAgICAgQ0dTaXplIGNlbGxTaXpl
ID0gQ0dTaXplKHRpbGUoKS0+c2l6ZSgpKTsKQEAgLTczLDE4ICs3OSwyMCBAQCBib29sIFNWR1Bh
aW50U2VydmVyUGF0dGVybjo6c2V0dXAoR3JhcGhpCiAgICAgQ0dTaXplIHBoYXNlID0gQ0dTaXpl
TWFrZShiYm94KCkueCgpLCAtYmJveCgpLnkoKSk7IC8vIFBhdHRlcm4gc3BhY2Ugc2VlbXMgdG8g
c3RhcnQgaW4gdGhlIGxvd2VyLWxlZnQsIHNvIHdlIGZsaXAgdGhlIFkgaGVyZS4KICAgICBDR0Nv
bnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dFJlZiwgcGhhc2UpOwogCi0gICAgQ0dQYXR0ZXJu
Q2FsbGJhY2tzIGNhbGxiYWNrcyA9IHswLCBwYXR0ZXJuQ2FsbGJhY2ssIE5VTEx9OwotICAgIG1f
cGF0dGVybiA9IENHUGF0dGVybkNyZWF0ZSh0aWxlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENHUmVjdE1ha2UoMCwgMCwgY2VsbFNpemUud2lkdGgsIGNlbGxTaXplLmhlaWdo
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHQ29udGV4dEdldENUTShjb250
ZXh0UmVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveCgpLndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3goKS5oZWlnaHQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgLy8gRklYTUU6IHNob3VsZCBhc2sgQ0cgZ3V5cy4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSwgLy8gaGFzIGNvbG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZjYWxsYmFja3MpOwotCiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dFJlZiwgc3R5
bGUtPm9wYWNpdHkoKSk7IC8vIG9yIGRvIEkgc2V0IHRoZSBhbHBoYSBhYm92ZT8KIAorICAgIGlm
ICghbV9wYXR0ZXJuKSB7CisgICAgICAgIENHUGF0dGVybkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7
MCwgcGF0dGVybkNhbGxiYWNrLCBOVUxMfTsKKyAgICAgICAgbV9wYXR0ZXJuID0gQ0dQYXR0ZXJu
Q3JlYXRlKHRpbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHUmVj
dE1ha2UoMCwgMCwgY2VsbFNpemUud2lkdGgsIGNlbGxTaXplLmhlaWdodCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRHZXRDVE0oY29udGV4dFJlZiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYm94KCkud2lkdGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJib3goKS5oZWlnaHQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNp
bmcsIC8vIEZJWE1FOiBzaG91bGQgYXNrIENHIGd1eXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnVlLCAvLyBoYXMgY29sb3IKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZjYWxsYmFja3MpOworICAgIH0KKwogICAgIG1fcGF0dGVyblNwYWNlID0g
Q0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKTsKIAogICAgIGlmICgodHlwZSAmIEFwcGx5VG9G
aWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkgewpAQCAtMTA3
LDEwICsxMTUsOCBAQCBib29sIFNWR1BhaW50U2VydmVyUGF0dGVybjo6c2V0dXAoR3JhcGhpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0ZWFyZG93
bihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
U1ZHUGFpbnRUYXJnZXRUeXBlIHR5cGUsIGJvb2wgaXNQYWludGluZ1RleHQpIGNvbnN0Cit2b2lk
IFNWR1BhaW50U2VydmVyUGF0dGVybjo6dGVhcmRvd24oR3JhcGhpY3NDb250ZXh0KiYgY29udGV4
dCwgY29uc3QgUmVuZGVyT2JqZWN0KiwgU1ZHUGFpbnRUYXJnZXRUeXBlLCBib29sKSBjb25zdAog
ewotICAgIENHUGF0dGVyblJlbGVhc2UobV9wYXR0ZXJuKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxl
YXNlKG1fcGF0dGVyblNwYWNlKTsKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAK
</data>
<flag name="review"
          id="4443"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>