<?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>24359</bug_id>
          
          <creation_ts>2009-03-04 10:28:23 -0800</creation_ts>
          <short_desc>Repaint throttling mechanism</short_desc>
          <delta_ts>2009-03-04 14:01:59 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>manyoso</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112224</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2009-03-04 10:28:23 -0800</bug_when>
    <thetext>Excessive repainting can slow down page loading/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112229</commentid>
    <comment_count>1</comment_count>
      <attachid>28273</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2009-03-04 10:36:11 -0800</bug_when>
    <thetext>Created attachment 28273
patch

This patch has the feature enabled and bunch of debugging printfs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112246</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-04 11:37:52 -0800</bug_when>
    <thetext>This looks pretty cool.  The biggest issue is just catching all of the things that should not be throttled.  You caught user events, but I think you need to catch all the ways a page can animate on its own as well.  These include:

setTimeout
marquees
CSS Animations and Transitions
Animated GIFs

We have to make sure none of the situations where a page paints itself because of animations end up getting throttled.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112247</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-04 11:38:44 -0800</bug_when>
    <thetext>Oh, &lt;video&gt; also.  &lt;video&gt; shouldn&apos;t be throttled while painting either.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112248</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-04 11:40:02 -0800</bug_when>
    <thetext>SMIL.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112270</commentid>
    <comment_count>5</comment_count>
      <attachid>28281</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2009-03-04 13:20:44 -0800</bug_when>
    <thetext>Created attachment 28281
some cleanups

I agree that a desktop targeted version of this should prefer smooth animations over reduces repaints. On slower CPUs the balance is different.

This patch does not enable the delays by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112272</commentid>
    <comment_count>6</comment_count>
      <attachid>28281</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-04 13:29:00 -0800</bug_when>
    <thetext>Comment on attachment 28281
some cleanups

This looks fine to me.  Can you maybe add a FIXME comment (similar to what you said in the bug) to the place where the constants are defined that this is primarily for mobile devices now, and that we might want to consider a version for the desktop that doesn&apos;t throttle animations?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112282</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2009-03-04 14:01:59 -0800</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/wtf/Platform.h
Sending        WebCore/ChangeLog
Sending        WebCore/loader/FrameLoader.cpp
Sending        WebCore/page/EventHandler.cpp
Sending        WebCore/page/FrameView.cpp
Sending        WebCore/page/FrameView.h
Transmitting file data .......
Committed revision 41431.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28273</attachid>
            <date>2009-03-04 10:36:11 -0800</date>
            <delta_ts>2009-03-04 13:21:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>repaint-throttling.patch</filename>
            <type>text/plain</type>
            <size>13137</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDMtMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1OQorICAgICAgICBSZXBh
aW50IHRocm90dGxpbmcgbWVjaGFuaXNtCisgICAgICAgIAorICAgICAgICBFeGNlc3NpdmUgcmVw
YWludGluZyBjYW4gc2xvdyBkb3duIHBhZ2UgbG9hZGluZC4gVGhpcyBpbXBsZW1lbnRzIGEgdGlt
ZXIKKyAgICAgICAgYmFzZWQgdGhyb3R0bGluZyBtZWNoYW5pc20uIEl0IGlzIGJlaGluZCBFTkFC
TEUoUkVQQUlOVF9USFJPVFRMSU5HKSBhbmQgbm90IAorICAgICAgICBlbmFibGVkIGJ5IGRlZmF1
bHQuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6YmVnaW5EZWZlcnJlZFJlcGFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6ZW5kRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmRvRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnVwZGF0ZURlZmVycmVkUmVwYWludERlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKwogMjAwOS0wMy0wNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+
CiAKICAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6IFVwZGF0ZSBz
dHJpbmdzIHRvIGluY2x1ZGUgIkRBVEFCQVNFUyIsCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiA0MTQwMykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI2MSw2ICsxMjYxLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERv
bmUoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiB7CisgICAgaWYgKG1f
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5jaGVja1N0b3BEZWxheWlu
Z0RlZmVycmVkUmVwYWludHMoKTsKKwogICAgIC8vIEFueSBmcmFtZSB0aGF0IGhhc24ndCBjb21w
bGV0ZWQgeWV0PwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCiAg
ICAgICAgIGlmICghY2hpbGQtPmxvYWRlcigpLT5tX2lzQ29tcGxldGUpCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAkocmV2aXNpb24gNDE0MDMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzMyw2ICsxMzMzLDggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQogCiBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hE
cmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIGRyYWdUYXJnZXQs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQog
eworICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOworCiAg
ICAgSW50UG9pbnQgY29udGVudHNQb3MgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQucG9zKCkpOwogICAgIAogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtZSA9IE1vdXNl
RXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsCkBAIC0xNTQwLDYgKzE1NDIsOCBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdlCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNw
YXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdl
dE5vZGUsIGJvb2wgLypjYW5jZWxhYmxlKi8sIGludCBjbGlja0NvdW50LCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIGJvb2wgc2V0VW5kZXIpCiB7CisgICAgbV9mcmFtZS0+
dmlldygpLT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CisKICAgICB1cGRhdGVNb3VzZUV2
ZW50VGFyZ2V0Tm9kZSh0YXJnZXROb2RlLCBtb3VzZUV2ZW50LCBzZXRVbmRlcik7CiAKICAgICBi
b29sIHN3YWxsb3dFdmVudCA9IGZhbHNlOwpAQCAtMTc5Niw2ICsxODAwLDggQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
ZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbV9mcmFtZS0+dmlldygp
LT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CiAKICAgICAvLyBGSVhNRTogd2hhdCBpcyB0
aGlzIGRvaW5nIGhlcmUsIGluIGtleWJvYXJkIGV2ZW50IGhhbmRsZXI/CiAgICAgbV9mcmFtZS0+
bG9hZGVyKCktPnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKTsKQEAgLTIx
MzAsNiArMjEzNiw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudCgK
ICAgICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKSk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBtX2ZyYW1lLT52aWV3KCktPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAogICAg
IFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS0+ZG9t
V2luZG93KCksIHRleHQpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWlu
Z0V2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA0MTQwMykKKysrIFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb2N1
c0NvbnRyb2xsZXIuaCIKQEAgLTYwLDYgKzYxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGRvdWJsZSBGcmFtZVZpZXc6OnNDdXJyZW50UGFp
bnRUaW1lU3RhbXAgPSAwLjA7CisgICAgCisjZGVmaW5lIEVOQUJMRV9SRVBBSU5UX1RIUk9UVExJ
TkcgMQorICAgIAorI2lmIEVOQUJMRShSRVBBSU5UX1RIUk9UVExJTkcpCisvLyBDb250cm9sIHRo
ZSByZXBhaW50IHRocm90dGxpbmcgZHVyaW5nIGxvYWRpbmcKK3N0YXRpYyBjb25zdCBkb3VibGUg
ZGVmZXJyZWRSZXBhaW50RGVsYXkgPSAwLjAyNTsKKy8vIE5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRo
YXQgZmlyc3QgZmV3IHJlcGFpbnRzIGhhcHBlbiB3aXRob3V0IGEgZGVsYXkKK3N0YXRpYyBjb25z
dCBkb3VibGUgaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IDA7Cisv
LyBUaGUgZGVsYXkgZ3Jvd3Mgb24gZWFjaCByZXBhaW50IHRvIHRoaXMgbWF4aW11bSB2YWx1ZQor
c3RhdGljIGNvbnN0IGRvdWJsZSBtYXhEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcg
PSAyLjU7CisvLyBPbiBlYWNoIHJlcGFpbnQgdGhlIGRlbGF5IGluY3Jlc2VzIGJ5IHRoaXMgYW1v
dW50CitzdGF0aWMgY29uc3QgZG91YmxlIGRlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVy
aW5nTG9hZGluZyA9IDAuNTsKKyNlbHNlCitzdGF0aWMgY29uc3QgZG91YmxlIGRlZmVycmVkUmVw
YWludERlbGF5ID0gMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgaW5pdGlhbERlZmVycmVkUmVwYWlu
dERlbGF5RHVyaW5nTG9hZGluZyA9IDA7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heERlZmVycmVk
UmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IDA7CitzdGF0aWMgY29uc3QgZG91YmxlIGRlZmVy
cmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyA9IDA7CisjZW5kaWYKKyAgICAg
ICAgCiAKIHN0cnVjdCBTY2hlZHVsZWRFdmVudCB7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50
OwpAQCAtODQsNiArMTA0LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQog
ICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKDApCiAgICAgLCBtX3dhc1Njcm9sbGVkQnlVc2VyKGZh
bHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKKyAgICAsIG1fZGVmZXJy
ZWRSZXBhaW50VGltZXIodGhpcywgJkZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJl
ZCkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkKIHsKICAgICBpbml0
KCk7CkBAIC0xMDgsNiArMTI5LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1l
LCBjb25zdAogICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKDApCiAgICAgLCBtX3dhc1Njcm9sbGVk
QnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKKyAgICAs
IG1fZGVmZXJyZWRSZXBhaW50VGltZXIodGhpcywgJkZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50
VGltZXJGaXJlZCkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkKIHsK
ICAgICBpbml0KCk7CkBAIC0xNjAsOCArMTgyLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgp
CiAgICAgbV9sYXN0Wm9vbUZhY3RvciA9IDEuMGY7CiAgICAgbV9kZWZlcnJpbmdSZXBhaW50cyA9
IDA7CiAgICAgbV9yZXBhaW50Q291bnQgPSAwOwotICAgIG1fcmVwYWludFJlY3QgPSBJbnRSZWN0
KCk7CiAgICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKKyAgICBtX2RlZmVycmVkUmVwYWludERl
bGF5ID0gaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKKyAgICBtX2Rl
ZmVycmVkUmVwYWludFRpbWVyLnN0b3AoKTsKKyAgICBtX2xhc3RQYWludFRpbWUgPSAwOwogICAg
IG1fcGFpbnRSZXN0cmljdGlvbiA9IFBhaW50UmVzdHJpY3Rpb25Ob25lOwogICAgIG1faXNQYWlu
dGluZyA9IGZhbHNlOwogICAgIG1faXNWaXN1YWxseU5vbkVtcHR5ID0gZmFsc2U7CkBAIC03MDMs
MTcgKzcyNywyNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUoCiB7
CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSk7CiAKLSAg
ICBpZiAobV9kZWZlcnJpbmdSZXBhaW50cyAmJiAhaW1tZWRpYXRlKSB7CisgICAgZG91YmxlIGRl
bGF5ID0gYWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpOworICAgIGlmICgobV9kZWZlcnJp
bmdSZXBhaW50cyB8fCBtX2RlZmVycmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkgfHwgZGVsYXkp
ICYmICFpbW1lZGlhdGUpIHsKICAgICAgICAgSW50UmVjdCB2aXNpYmxlQ29udGVudCA9IHZpc2li
bGVDb250ZW50UmVjdCgpOwogICAgICAgICB2aXNpYmxlQ29udGVudC5pbnRlcnNlY3Qocik7Ci0g
ICAgICAgIGlmICghdmlzaWJsZUNvbnRlbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3Jl
cGFpbnRDb3VudCsrOwotICAgICAgICAgICAgbV9yZXBhaW50UmVjdC51bml0ZShyKTsKLSAgICAg
ICAgICAgIGlmIChtX3JlcGFpbnRDb3VudCA9PSBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCkK
LSAgICAgICAgICAgICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwotICAgICAgICAgICAgZWxz
ZSBpZiAobV9yZXBhaW50Q291bnQgPCBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCkKLSAgICAg
ICAgICAgICAgICBtX3JlcGFpbnRSZWN0cy5hcHBlbmQocik7CisgICAgICAgIGlmICh2aXNpYmxl
Q29udGVudC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3Jl
cGFpbnRDb3VudCA9PSBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCkgeworICAgICAgICAgICAg
SW50UmVjdCB1bmlvbmVkUmVjdDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZDsgKytpKQorICAgICAgICAgICAgICAgIHVuaW9u
ZWRSZWN0LnVuaXRlKG1fcmVwYWludFJlY3RzW2ldKTsKKyAgICAgICAgICAgIG1fcmVwYWludFJl
Y3RzLmNsZWFyKCk7CisgICAgICAgICAgICBtX3JlcGFpbnRSZWN0cy5hcHBlbmQodW5pb25lZFJl
Y3QpOwogICAgICAgICB9CisgICAgICAgIGlmIChtX3JlcGFpbnRDb3VudCA8IGNSZXBhaW50UmVj
dFVuaW9uVGhyZXNob2xkKQorICAgICAgICAgICAgbV9yZXBhaW50UmVjdHMuYXBwZW5kKHIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlcGFpbnRSZWN0c1swXS51bml0ZShyKTsKKyAg
ICAgICAgbV9yZXBhaW50Q291bnQrKzsKKyAgICAKKyAgICAgICAgaWYgKCFtX2RlZmVycmluZ1Jl
cGFpbnRzICYmICFtX2RlZmVycmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICAgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtNzMwLDMxICs3NjQsOTkgQEAgdm9pZCBGcmFtZVZpZXc6
OmJlZ2luRGVmZXJyZWRSZXBhaW50cygpCiAgICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT5iZWdpbkRlZmVycmVkUmVwYWludHMoKTsKIAogICAgIG1fZGVmZXJyaW5nUmVw
YWludHMrKzsKLSAgICBtX3JlcGFpbnRDb3VudCA9IDA7Ci0gICAgbV9yZXBhaW50UmVjdCA9IElu
dFJlY3QoKTsKLSAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwogfQogCiAKIHZvaWQgRnJhbWVW
aWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKCkKIHsKKyAgICAKICAgICBQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKSAhPSBtX2ZyYW1lKQogICAg
ICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+ZW5kRGVmZXJyZWRSZXBhaW50
cygpOwogCiAgICAgQVNTRVJUKG1fZGVmZXJyaW5nUmVwYWludHMgPiAwKTsKLSAgICBpZiAoLS1t
X2RlZmVycmluZ1JlcGFpbnRzID09IDApIHsKLSAgICAgICAgaWYgKG1fcmVwYWludENvdW50ID49
IGNSZXBhaW50UmVjdFVuaW9uVGhyZXNob2xkKQotICAgICAgICAgICAgcmVwYWludENvbnRlbnRS
ZWN0YW5nbGUobV9yZXBhaW50UmVjdCwgZmFsc2UpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBtX3JlcGFpbnRSZWN0cy5zaXplKCk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHJlcGFp
bnRDb250ZW50UmVjdGFuZ2xlKG1fcmVwYWludFJlY3RzW2ldLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwotICAgICAgICB9CisKKyAgICBpZiAoLS1tX2RlZmVy
cmluZ1JlcGFpbnRzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKG1fZGVmZXJyZWRS
ZXBhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvdWJs
ZSBkZWxheSA9IGFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkoKSkgeworICAgICAgICBtX2Rl
ZmVycmVkUmVwYWludFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgCisgICAgcHJpbnRmKCJyZWd1bGFyIGRlZmVycmVkIHJlcGFpbnQgJWYgJWZc
biIsIGN1cnJlbnRUaW1lKCksIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkpOworICAgIGRvRGVmZXJy
ZWRSZXBhaW50cygpOwogfQogCit2b2lkIEZyYW1lVmlldzo6Y2hlY2tTdG9wRGVsYXlpbmdEZWZl
cnJlZFJlcGFpbnRzKCkKK3sKKyAgICBpZiAoIW1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnQgJiYgKGRvY3VtZW50LT5wYXJzaW5nKCkg
fHwgZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBtX2RlZmVycmVkUmVwYWludFRpbWVyLnN0b3AoKTsKKyAgICBwcmludGYo
ImRlbGF5ZWQgcmVwYWludCBhdCBlbmQgJWYgJWZcbiIsIGN1cnJlbnRUaW1lKCksIG1fZGVmZXJy
ZWRSZXBhaW50RGVsYXkpOworICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOworfQorICAgIAordm9p
ZCBGcmFtZVZpZXc6OmRvRGVmZXJyZWRSZXBhaW50cygpCit7CisgICAgQVNTRVJUKCFtX2RlZmVy
cmluZ1JlcGFpbnRzKTsKKyAgICBpZiAoaXNPZmZzY3JlZW4oKSAmJiAhc2hvdWxkVXBkYXRlV2hp
bGVPZmZzY3JlZW4oKSkgeworICAgICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOworICAgICAg
ICBtX3JlcGFpbnRDb3VudCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdW5zaWdu
ZWQgc2l6ZSA9IG1fcmVwYWludFJlY3RzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICBTY3JvbGxWaWV3OjpyZXBhaW50Q29udGVudFJlY3Rh
bmdsZShtX3JlcGFpbnRSZWN0c1tpXSwgZmFsc2UpOworICAgIG1fcmVwYWludFJlY3RzLmNsZWFy
KCk7CisgICAgbV9yZXBhaW50Q291bnQgPSAwOworICAgIAorICAgIHVwZGF0ZURlZmVycmVkUmVw
YWludERlbGF5KCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVEZWZlcnJlZFJlcGFpbnRE
ZWxheSgpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50IHx8ICghZG9jdW1lbnQtPnBhcnNpbmcoKSAmJiAhZG9jdW1lbnQt
PmRvY0xvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkpIHsKKyAgICAgICAgbV9kZWZlcnJlZFJlcGFp
bnREZWxheSA9IGRlZmVycmVkUmVwYWludERlbGF5OworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChtX2RlZmVycmVkUmVwYWludERlbGF5IDwgbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlE
dXJpbmdMb2FkaW5nKSB7CisgICAgICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgKz0gZGVmZXJy
ZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nOworICAgICAgICBpZiAobV9kZWZl
cnJlZFJlcGFpbnREZWxheSA+IG1heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZykK
KyAgICAgICAgICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgPSBtYXhEZWZlcnJlZFJlcGFpbnRE
ZWxheUR1cmluZ0xvYWRpbmc7CisgICAgfQorfQorCit2b2lkIEZyYW1lVmlldzo6cmVzZXREZWZl
cnJlZFJlcGFpbnREZWxheSgpCit7CisgICAgbV9kZWZlcnJlZFJlcGFpbnREZWxheSA9IDA7Cisg
ICAgaWYgKG1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9kZWZl
cnJlZFJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK2RvdWJsZSBGcmFtZVZpZXc6
OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkoKSBjb25zdAoreworICAgIGlmICghbV9kZWZl
cnJlZFJlcGFpbnREZWxheSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZG91YmxlIHRpbWVTaW5j
ZUxhc3RQYWludCA9IGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RQYWludFRpbWU7CisgICAgcmV0dXJu
IG1heCgwLiwgbV9kZWZlcnJlZFJlcGFpbnREZWxheSAtIHRpbWVTaW5jZUxhc3RQYWludCk7Cit9
CisgICAgCit2b2lkIEZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxG
cmFtZVZpZXc+KikKK3sKKyAgICBkb0RlZmVycmVkUmVwYWludHMoKTsKKyAgICBwcmludGYoImRl
bGF5ZWQgcmVwYWludCAlZiAlZlxuIiwgY3VycmVudFRpbWUoKSwgbV9kZWZlcnJlZFJlcGFpbnRE
ZWxheSk7Cit9ICAgIAorCiB2b2lkIEZyYW1lVmlldzo6bGF5b3V0VGltZXJGaXJlZChUaW1lcjxG
cmFtZVZpZXc+KikKIHsKICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCkBAIC0x
MjI0LDggKzEzMjYsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
CiAgICAgaWYgKG1fcGFpbnRSZXN0cmljdGlvbiA9PSBQYWludFJlc3RyaWN0aW9uTm9uZSkKICAg
ICAgICAgZG9jdW1lbnQtPmludmFsaWRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2Vyc0luUmVjdChy
ZWN0KTsKICAgICBjb250ZW50UmVuZGVyZXItPmxheWVyKCktPnBhaW50KHAsIHJlY3QsIG1fcGFp
bnRSZXN0cmljdGlvbiwgZWx0UmVuZGVyZXIpOwotICAgICAgICAKKyAgICAKICAgICBtX2lzUGFp
bnRpbmcgPSBmYWxzZTsKKyAgICBtX2xhc3RQYWludFRpbWUgPSBjdXJyZW50VGltZSgpOwogCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIC8vIFJlZ2lvbnMgbWF5IGhhdmUgY2hh
bmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgdmlzaWJpbGl0eS96LWluZGV4IG9mIGVsZW1lbnQgY2hh
bmdpbmcuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiA0MTQwMykKKysrIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJl
cGFpbnRzKCk7CisgICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsK
KyAgICB2b2lkIHJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICAgICB2b2lkIHVwZGF0ZURhc2hib2FyZFJlZ2lvbnMoKTsKQEAgLTIw
Myw2ICsyMDUsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludENvbnRlbnRS
ZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlKTsKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudHNSZXNpemVkKCkgeyBzZXROZWVkc0xheW91dCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHZpc2libGVDb250ZW50c1Jlc2l6ZWQoKSB7IGxheW91dCgpOyB9CisgICAgCisgICAgdm9p
ZCBkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKTsKKyAgICB2b2lk
IGRvRGVmZXJyZWRSZXBhaW50cygpOworICAgIHZvaWQgdXBkYXRlRGVmZXJyZWRSZXBhaW50RGVs
YXkoKTsKKyAgICBkb3VibGUgYWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0Owog
CiAgICAgc3RhdGljIGRvdWJsZSBzQ3VycmVudFBhaW50VGltZVN0YW1wOyAvLyB1c2VkIGZvciBk
ZXRlY3RpbmcgZGVjb2RlZCByZXNvdXJjZSB0aHJhc2ggaW4gdGhlIGNhY2hlCiAKQEAgLTI1NCw4
ICsyNjEsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB1bnNpZ25lZCBtX2RlZmVycmluZ1JlcGFp
bnRzOwogICAgIHVuc2lnbmVkIG1fcmVwYWludENvdW50OwotICAgIEludFJlY3QgbV9yZXBhaW50
UmVjdDsKICAgICBWZWN0b3I8SW50UmVjdD4gbV9yZXBhaW50UmVjdHM7CisgICAgVGltZXI8RnJh
bWVWaWV3PiBtX2RlZmVycmVkUmVwYWludFRpbWVyOworICAgIGRvdWJsZSBtX2RlZmVycmVkUmVw
YWludERlbGF5OworICAgIGRvdWJsZSBtX2xhc3RQYWludFRpbWU7CiAKICAgICBib29sIG1fc2hv
dWxkVXBkYXRlV2hpbGVPZmZzY3JlZW47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28281</attachid>
            <date>2009-03-04 13:20:44 -0800</date>
            <delta_ts>2009-03-04 13:29:00 -0800</delta_ts>
            <desc>some cleanups</desc>
            <filename>repaint-throttling-2.patch</filename>
            <type>text/plain</type>
            <size>13292</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0MTQwMykKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDEwIEBACiAj
ZGVmaW5lIFdURl9VU0VfQUxURVJOQVRFX0pTSU1NRURJQVRFIDEKICNlbmRpZgogCisjaWYgIWRl
ZmluZWQoRU5BQkxFX1JFUEFJTlRfVEhST1RUTElORykKKyNkZWZpbmUgRU5BQkxFX1JFUEFJTlRf
VEhST1RUTElORyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpCiAvKiBUaGUg
SklUIGlzIHRlc3RlZCAmIHdvcmtpbmcgb24geDg2XzY0IE1hYyAqLwogI2lmIFBMQVRGT1JNKFg4
Nl82NCkgJiYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxNDI0KQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wMy0wNCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0MzU5CisgICAgICAgIFJlcGFpbnQgdGhyb3R0bGluZyBtZWNoYW5pc20KKyAgICAgICAg
CisgICAgICAgIEV4Y2Vzc2l2ZSByZXBhaW50aW5nIGNhbiBzbG93IGRvd24gcGFnZSBsb2FkaW5k
LiBUaGlzIGltcGxlbWVudHMgYSB0aW1lcgorICAgICAgICBiYXNlZCB0aHJvdHRsaW5nIG1lY2hh
bmlzbS4gSXQgaXMgYmVoaW5kIEVOQUJMRShSRVBBSU5UX1RIUk9UVExJTkcpIGFuZCBub3QgCisg
ICAgICAgIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjprZXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJ
bnB1dEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0
YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpiZWdpbkRlZmVycmVkUmVwYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJl
cGFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZG9EZWZlcnJlZFJlcGFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlRGVmZXJyZWRSZXBhaW50RGVs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldERlZmVycmVkUmVwYWludERl
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0ZWREZWZlcnJlZFJlcGFp
bnREZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRlZmVycmVkUmVwYWludFRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorCiAyMDA5LTAzLTA0ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qczogVXBkYXRlIHN0cmluZ3MgdG8gaW5jbHVkZSAiREFUQUJBU0VTIiwKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQxNDAzKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYxLDYgKzEyNjEsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSgpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29t
cGxldGVkKCkKIHsKKyAgICBpZiAobV9mcmFtZS0+dmlldygpKQorICAgICAgICBtX2ZyYW1lLT52
aWV3KCktPmNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygpOworCiAgICAgLy8gQW55
IGZyYW1lIHRoYXQgaGFzbid0IGNvbXBsZXRlZCB5ZXQ/CiAgICAgZm9yIChGcmFtZSogY2hpbGQg
PSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKCFjaGlsZC0+bG9hZGVyKCktPm1faXND
b21wbGV0ZSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA0MTQwMykKKysrIFdl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMzLDYgKzEz
MzMsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlCiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgTm9kZSogZHJhZ1RhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwg
Q2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7CisgICAgbV9mcmFtZS0+dmlldygpLT5yZXNldERlZmVy
cmVkUmVwYWludERlbGF5KCk7CisKICAgICBJbnRQb2ludCBjb250ZW50c1BvcyA9IG1fZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7CiAgICAgCiAgICAgUmVmUHRy
PE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwKQEAgLTE1NDAs
NiArMTU0Miw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2UKIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0Tm9kZSwgYm9vbCAvKmNhbmNlbGFibGUqLywgaW50IGNs
aWNrQ291bnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgYm9vbCBzZXRV
bmRlcikKIHsKKyAgICBtX2ZyYW1lLT52aWV3KCktPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXko
KTsKKwogICAgIHVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKHRhcmdldE5vZGUsIG1vdXNlRXZl
bnQsIHNldFVuZGVyKTsKIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CkBAIC0xNzk2
LDYgKzE4MDAsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAg
ICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBldmVudFRhcmdldE5vZGVGb3JEb2N1bWVudChtX2ZyYW1l
LT5kb2N1bWVudCgpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBtX2ZyYW1lLT52aWV3KCktPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAog
ICAgIC8vIEZJWE1FOiB3aGF0IGlzIHRoaXMgZG9pbmcgaGVyZSwgaW4ga2V5Ym9hcmQgZXZlbnQg
aGFuZGxlcj8KICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+cmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNz
aW9uUHJvdGVjdGlvbigpOwpAQCAtMjEzMCw2ICsyMTM2LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVRleHRJbnB1dEV2ZW50KAogICAgICAgICB0YXJnZXQgPSBldmVudFRhcmdldE5vZGVG
b3JEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzZXREZWZlcnJl
ZFJlcGFpbnREZWxheSgpOwogCiAgICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZl
bnQ6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CiAgICAgZXZlbnQtPnNldFVu
ZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlz
aW9uIDQxNDAzKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
Q1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUg
IkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtNjEsNiArNjIsMjIgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogZG91YmxlIEZyYW1lVmlldzo6c0N1cnJlbnRQ
YWludFRpbWVTdGFtcCA9IDAuMDsKIAorI2lmIEVOQUJMRShSRVBBSU5UX1RIUk9UVExJTkcpCisv
LyBOb3JtYWwgZGVsYXkKK3N0YXRpYyBjb25zdCBkb3VibGUgZGVmZXJyZWRSZXBhaW50RGVsYXkg
PSAwLjAyNTsKKy8vIE5lZ2F0aXZlIHZhbHVlIHdvdWxkIG1lYW4gdGhhdCBmaXJzdCBmZXcgcmVw
YWludHMgaGFwcGVuIHdpdGhvdXQgYSBkZWxheQorc3RhdGljIGNvbnN0IGRvdWJsZSBpbml0aWFs
RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nID0gMDsKKy8vIFRoZSBkZWxheSBncm93
cyBvbiBlYWNoIHJlcGFpbnQgdG8gdGhpcyBtYXhpbXVtIHZhbHVlCitzdGF0aWMgY29uc3QgZG91
YmxlIG1heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IDIuNTsKKy8vIE9uIGVh
Y2ggcmVwYWludCB0aGUgZGVsYXkgaW5jcmVzZXMgYnkgdGhpcyBhbW91bnQKK3N0YXRpYyBjb25z
dCBkb3VibGUgZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nID0gMC41
OworI2Vsc2UKK3N0YXRpYyBjb25zdCBkb3VibGUgZGVmZXJyZWRSZXBhaW50RGVsYXkgPSAwOwor
c3RhdGljIGNvbnN0IGRvdWJsZSBpbml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2Fk
aW5nID0gMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJp
bmdMb2FkaW5nID0gMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgZGVmZXJyZWRSZXBhaW50RGVsYXlJ
bmNyZW1lbnREdXJpbmdMb2FkaW5nID0gMDsKKyNlbmRpZgorCiBzdHJ1Y3QgU2NoZWR1bGVkRXZl
bnQgewogICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKICAgICBSZWZQdHI8Tm9kZT4gbV9ldmVu
dFRhcmdldDsKQEAgLTg0LDYgKzEwMSw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBm
cmFtZSkKICAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigwKQogICAgICwgbV93YXNTY3JvbGxlZEJ5
VXNlcihmYWxzZSkKICAgICAsIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2UpCisgICAgLCBt
X2RlZmVycmVkUmVwYWludFRpbWVyKHRoaXMsICZGcmFtZVZpZXc6OmRlZmVycmVkUmVwYWludFRp
bWVyRmlyZWQpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuKHRydWUpCiB7CiAg
ICAgaW5pdCgpOwpAQCAtMTA4LDYgKzEyNiw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1l
KiBmcmFtZSwgY29uc3QKICAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigwKQogICAgICwgbV93YXNT
Y3JvbGxlZEJ5VXNlcihmYWxzZSkKICAgICAsIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2Up
CisgICAgLCBtX2RlZmVycmVkUmVwYWludFRpbWVyKHRoaXMsICZGcmFtZVZpZXc6OmRlZmVycmVk
UmVwYWludFRpbWVyRmlyZWQpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuKHRy
dWUpCiB7CiAgICAgaW5pdCgpOwpAQCAtMTYwLDggKzE3OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6
cmVzZXQoKQogICAgIG1fbGFzdFpvb21GYWN0b3IgPSAxLjBmOwogICAgIG1fZGVmZXJyaW5nUmVw
YWludHMgPSAwOwogICAgIG1fcmVwYWludENvdW50ID0gMDsKLSAgICBtX3JlcGFpbnRSZWN0ID0g
SW50UmVjdCgpOwogICAgIG1fcmVwYWludFJlY3RzLmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZFJl
cGFpbnREZWxheSA9IGluaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmc7Cisg
ICAgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdG9wKCk7CisgICAgbV9sYXN0UGFpbnRUaW1lID0g
MDsKICAgICBtX3BhaW50UmVzdHJpY3Rpb24gPSBQYWludFJlc3RyaWN0aW9uTm9uZTsKICAgICBt
X2lzUGFpbnRpbmcgPSBmYWxzZTsKICAgICBtX2lzVmlzdWFsbHlOb25FbXB0eSA9IGZhbHNlOwpA
QCAtNzAzLDE3ICs3MjQsMjcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFu
Z2xlKAogewogICAgIEFTU0VSVCghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkp
OwogCi0gICAgaWYgKG1fZGVmZXJyaW5nUmVwYWludHMgJiYgIWltbWVkaWF0ZSkgeworICAgIGRv
dWJsZSBkZWxheSA9IGFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKKyAgICBpZiAoKG1f
ZGVmZXJyaW5nUmVwYWludHMgfHwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpIHx8
IGRlbGF5KSAmJiAhaW1tZWRpYXRlKSB7CiAgICAgICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnQg
PSB2aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgdmlzaWJsZUNvbnRlbnQuaW50ZXJzZWN0
KHIpOwotICAgICAgICBpZiAoIXZpc2libGVDb250ZW50LmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgbV9yZXBhaW50Q291bnQrKzsKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3QudW5pdGUocik7
Ci0gICAgICAgICAgICBpZiAobV9yZXBhaW50Q291bnQgPT0gY1JlcGFpbnRSZWN0VW5pb25UaHJl
c2hvbGQpCi0gICAgICAgICAgICAgICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKG1fcmVwYWludENvdW50IDwgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQp
Ci0gICAgICAgICAgICAgICAgbV9yZXBhaW50UmVjdHMuYXBwZW5kKHIpOworICAgICAgICBpZiAo
dmlzaWJsZUNvbnRlbnQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAobV9yZXBhaW50Q291bnQgPT0gY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQpIHsKKyAgICAg
ICAgICAgIEludFJlY3QgdW5pb25lZFJlY3Q7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQ7ICsraSkKKyAgICAgICAgICAgICAg
ICB1bmlvbmVkUmVjdC51bml0ZShtX3JlcGFpbnRSZWN0c1tpXSk7CisgICAgICAgICAgICBtX3Jl
cGFpbnRSZWN0cy5jbGVhcigpOworICAgICAgICAgICAgbV9yZXBhaW50UmVjdHMuYXBwZW5kKHVu
aW9uZWRSZWN0KTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9yZXBhaW50Q291bnQgPCBjUmVw
YWludFJlY3RVbmlvblRocmVzaG9sZCkKKyAgICAgICAgICAgIG1fcmVwYWludFJlY3RzLmFwcGVu
ZChyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9yZXBhaW50UmVjdHNbMF0udW5pdGUo
cik7CisgICAgICAgIG1fcmVwYWludENvdW50Kys7CisgICAgCisgICAgICAgIGlmICghbV9kZWZl
cnJpbmdSZXBhaW50cyAmJiAhbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICAgICAgIG1fZGVmZXJyZWRSZXBhaW50VGltZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTczMCwzMSArNzYxLDk3IEBAIHZvaWQgRnJh
bWVWaWV3OjpiZWdpbkRlZmVycmVkUmVwYWludHMoKQogICAgICAgICByZXR1cm4gcGFnZS0+bWFp
bkZyYW1lKCktPnZpZXcoKS0+YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAKICAgICBtX2RlZmVy
cmluZ1JlcGFpbnRzKys7Ci0gICAgbV9yZXBhaW50Q291bnQgPSAwOwotICAgIG1fcmVwYWludFJl
Y3QgPSBJbnRSZWN0KCk7Ci0gICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKIH0KIAogCiB2b2lk
IEZyYW1lVmlldzo6ZW5kRGVmZXJyZWRSZXBhaW50cygpCiB7CisgICAgCiAgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgIT0gbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmVuZERlZmVycmVk
UmVwYWludHMoKTsKIAogICAgIEFTU0VSVChtX2RlZmVycmluZ1JlcGFpbnRzID4gMCk7Ci0gICAg
aWYgKC0tbV9kZWZlcnJpbmdSZXBhaW50cyA9PSAwKSB7Ci0gICAgICAgIGlmIChtX3JlcGFpbnRD
b3VudCA+PSBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCkKLSAgICAgICAgICAgIHJlcGFpbnRD
b250ZW50UmVjdGFuZ2xlKG1fcmVwYWludFJlY3QsIGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBzaXplID0gbV9yZXBhaW50UmVjdHMuc2l6ZSgpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICAgICAg
ICByZXBhaW50Q29udGVudFJlY3RhbmdsZShtX3JlcGFpbnRSZWN0c1tpXSwgZmFsc2UpOwotICAg
ICAgICAgICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKLSAgICAgICAgfQorCisgICAgaWYgKC0t
bV9kZWZlcnJpbmdSZXBhaW50cykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX2Rl
ZmVycmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChkb3VibGUgZGVsYXkgPSBhZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkpIHsKKyAgICAg
ICAgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOworfQorCit2b2lk
IEZyYW1lVmlldzo6Y2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCkKK3sKKyAgICBp
ZiAoIW1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
ZG9jdW1lbnQgJiYgKGRvY3VtZW50LT5wYXJzaW5nKCkgfHwgZG9jdW1lbnQtPmRvY0xvYWRlcigp
LT5yZXF1ZXN0Q291bnQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2RlZmVycmVk
UmVwYWludFRpbWVyLnN0b3AoKTsKKworICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOworfQorICAg
IAordm9pZCBGcmFtZVZpZXc6OmRvRGVmZXJyZWRSZXBhaW50cygpCit7CisgICAgQVNTRVJUKCFt
X2RlZmVycmluZ1JlcGFpbnRzKTsKKyAgICBpZiAoaXNPZmZzY3JlZW4oKSAmJiAhc2hvdWxkVXBk
YXRlV2hpbGVPZmZzY3JlZW4oKSkgeworICAgICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwor
ICAgICAgICBtX3JlcGFpbnRDb3VudCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dW5zaWduZWQgc2l6ZSA9IG1fcmVwYWludFJlY3RzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICBTY3JvbGxWaWV3OjpyZXBhaW50Q29udGVu
dFJlY3RhbmdsZShtX3JlcGFpbnRSZWN0c1tpXSwgZmFsc2UpOworICAgIG1fcmVwYWludFJlY3Rz
LmNsZWFyKCk7CisgICAgbV9yZXBhaW50Q291bnQgPSAwOworICAgIAorICAgIHVwZGF0ZURlZmVy
cmVkUmVwYWludERlbGF5KCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVEZWZlcnJlZFJl
cGFpbnREZWxheSgpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICghZG9jdW1lbnQtPnBhcnNpbmcoKSAmJiAhZG9j
dW1lbnQtPmRvY0xvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkpIHsKKyAgICAgICAgbV9kZWZlcnJl
ZFJlcGFpbnREZWxheSA9IGRlZmVycmVkUmVwYWludERlbGF5OworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtX2RlZmVycmVkUmVwYWludERlbGF5IDwgbWF4RGVmZXJyZWRSZXBhaW50
RGVsYXlEdXJpbmdMb2FkaW5nKSB7CisgICAgICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgKz0g
ZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nOworICAgICAgICBpZiAo
bV9kZWZlcnJlZFJlcGFpbnREZWxheSA+IG1heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9h
ZGluZykKKyAgICAgICAgICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgPSBtYXhEZWZlcnJlZFJl
cGFpbnREZWxheUR1cmluZ0xvYWRpbmc7CiAgICAgfQogfQogCit2b2lkIEZyYW1lVmlldzo6cmVz
ZXREZWZlcnJlZFJlcGFpbnREZWxheSgpCit7CisgICAgbV9kZWZlcnJlZFJlcGFpbnREZWxheSA9
IDA7CisgICAgaWYgKG1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK2RvdWJsZSBGcmFt
ZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkoKSBjb25zdAoreworICAgIGlmICgh
bV9kZWZlcnJlZFJlcGFpbnREZWxheSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZG91YmxlIHRp
bWVTaW5jZUxhc3RQYWludCA9IGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RQYWludFRpbWU7CisgICAg
cmV0dXJuIG1heCgwLiwgbV9kZWZlcnJlZFJlcGFpbnREZWxheSAtIHRpbWVTaW5jZUxhc3RQYWlu
dCk7Cit9CisgICAgCit2b2lkIEZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChU
aW1lcjxGcmFtZVZpZXc+KikKK3sKKyAgICBkb0RlZmVycmVkUmVwYWludHMoKTsKK30gICAgCisK
IHZvaWQgRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKQogewog
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKQEAgLTEyMjQsOCArMTMyMSw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ28KICAgICBpZiAobV9wYWlu
dFJlc3RyaWN0aW9uID09IFBhaW50UmVzdHJpY3Rpb25Ob25lKQogICAgICAgICBkb2N1bWVudC0+
aW52YWxpZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzSW5SZWN0KHJlY3QpOwogICAgIGNvbnRl
bnRSZW5kZXJlci0+bGF5ZXIoKS0+cGFpbnQocCwgcmVjdCwgbV9wYWludFJlc3RyaWN0aW9uLCBl
bHRSZW5kZXJlcik7Ci0gICAgICAgIAorICAgIAogICAgIG1faXNQYWludGluZyA9IGZhbHNlOwor
ICAgIG1fbGFzdFBhaW50VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAgICAgLy8gUmVnaW9ucyBtYXkgaGF2ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0
IG9mIHRoZSB2aXNpYmlsaXR5L3otaW5kZXggb2YgZWxlbWVudCBjaGFuZ2luZy4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgJKHJldmlzaW9uIDQxNDAzKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbkRl
ZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMoKTsKKyAgICB2
b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygpOworICAgIHZvaWQgcmVzZXRE
ZWZlcnJlZFJlcGFpbnREZWxheSgpOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQog
ICAgIHZvaWQgdXBkYXRlRGFzaGJvYXJkUmVnaW9ucygpOwpAQCAtMjAzLDYgKzIwNSwxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0JiwgYm9vbCBpbW1lZGlhdGUpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6
ZWQoKSB7IHNldE5lZWRzTGF5b3V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNvbnRl
bnRzUmVzaXplZCgpIHsgbGF5b3V0KCk7IH0KKyAgICAKKyAgICB2b2lkIGRlZmVycmVkUmVwYWlu
dFRpbWVyRmlyZWQoVGltZXI8RnJhbWVWaWV3PiopOworICAgIHZvaWQgZG9EZWZlcnJlZFJlcGFp
bnRzKCk7CisgICAgdm9pZCB1cGRhdGVEZWZlcnJlZFJlcGFpbnREZWxheSgpOworICAgIGRvdWJs
ZSBhZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgZG91
YmxlIHNDdXJyZW50UGFpbnRUaW1lU3RhbXA7IC8vIHVzZWQgZm9yIGRldGVjdGluZyBkZWNvZGVk
IHJlc291cmNlIHRocmFzaCBpbiB0aGUgY2FjaGUKIApAQCAtMjU0LDggKzI2MSwxMCBAQCBwcml2
YXRlOgogICAgIAogICAgIHVuc2lnbmVkIG1fZGVmZXJyaW5nUmVwYWludHM7CiAgICAgdW5zaWdu
ZWQgbV9yZXBhaW50Q291bnQ7Ci0gICAgSW50UmVjdCBtX3JlcGFpbnRSZWN0OwogICAgIFZlY3Rv
cjxJbnRSZWN0PiBtX3JlcGFpbnRSZWN0czsKKyAgICBUaW1lcjxGcmFtZVZpZXc+IG1fZGVmZXJy
ZWRSZXBhaW50VGltZXI7CisgICAgZG91YmxlIG1fZGVmZXJyZWRSZXBhaW50RGVsYXk7CisgICAg
ZG91YmxlIG1fbGFzdFBhaW50VGltZTsKIAogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVXaGlsZU9m
ZnNjcmVlbjsKIAo=
</data>
<flag name="review"
          id="13836"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>