<?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>15388</bug_id>
          
          <creation_ts>2007-10-05 21:58:53 -0700</creation_ts>
          <short_desc>RenderSVGContainer (&lt;g&gt;) should not repaint when its bounds change (unless it has a filter)</short_desc>
          <delta_ts>2007-10-06 02:01:57 -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>SVG</component>
          <version>523.x (Safari 3)</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>
          
          <blocked>15389</blocked>
    
    <blocked>15402</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57893</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 21:58:53 -0700</bug_when>
    <thetext>RenderSVGContainer (&lt;g&gt;) should not repaint when its bounds change (unless it has a filter)

The only time a &lt;g&gt; actually causes pixels to be rendered to the screen is when it has a filter.  All other times, it shouldn&apos;t need to do any repainting.

Currently if you have an item moving inside a large &lt;g&gt;, causing the bounds of that &lt;g&gt; to change, the entire &lt;g&gt; will repaint!  I&apos;ve attached a patch which addresses this, but seems to expose another repaint issue (or two), so it can&apos;t be landed at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57894</commentid>
    <comment_count>1</comment_count>
      <attachid>16557</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 22:06:16 -0700</bug_when>
    <thetext>Created attachment 16557
test case (use quartz debug &quot;flash on screen updates&quot; to see the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57912</commentid>
    <comment_count>2</comment_count>
      <attachid>16563</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 00:37:52 -0700</bug_when>
    <thetext>Created attachment 16563
potential fix

This seems to dramatically improve lively kernel.  It does not however fix the attached test case.  The attached test case&apos;s behavior is changed, but the new behavior might actually be an intentional side effect of absoluteClippedOverflowRect() describing the size of the content of the &lt;svg&gt; instead of the actual svg&apos;s bounds.  I don&apos;t know enough about absoluteClippedOverflowRect&apos;s expected behavior to know for certain.

I&apos;m also not sure this fix is 100% ready as I think it may regress Space Invaders ever so slightly:
http://www.croczilla.com/svg/samples/invaders/invaders.svg

I have not seen any other regressions in my surfing of the SVG web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57915</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 00:51:16 -0700</bug_when>
    <thetext>bug 15352 covers other redraw issues for space invaders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57919</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 01:20:59 -0700</bug_when>
    <thetext>I was wrong.  Invaders is no worse than before.  This patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57921</commentid>
    <comment_count>5</comment_count>
      <attachid>16563</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-10-06 01:34:08 -0700</bug_when>
    <thetext>Comment on attachment 16563
potential fix

r=me if you make a decent changelog, and confirm the correction on lively kerne;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57922</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 02:00:19 -0700</bug_when>
    <thetext>landed as r26077 on feature-branch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16557</attachid>
            <date>2007-10-05 22:06:16 -0700</date>
            <delta_ts>2007-10-05 22:06:16 -0700</delta_ts>
            <desc>test case (use quartz debug &quot;flash on screen updates&quot; to see the bug</desc>
            <filename>001.xml</filename>
            <type>application/xml</type>
            <size>609</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnPgogICAgPHJlY3Qg
ZmlsbD0iYmx1ZSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIC8+CiAgICA8cmVjdCBpZD0idGVz
dCIgZmlsbD0iYmx1ZSIgeD0iMjAwIiB5PSIyMDAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiAv
PgogIDwvZz4KICA8dGV4dCB4PSIxMCIgeT0iMTIwIj5UdXJuIG9uIFF1YXJ0eiBEZWJ1ZydzICJm
bGFzaCBvbiBzY3JlZW4gdXBkYXRlcyIgdG8gc2VlIHRoaXMgcmVwYWludCB0b28gbXVjaC48L3Rl
eHQ+CiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhW0NEQVRBWwogICAgdmFyIHdp
Z2dsZSA9IDEwOwogIGZ1bmN0aW9uIGJvdW5jZSgpIHsKICAgIHZhciByZWN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKICAgIHJlY3QueC5iYXNlVmFsLnZhbHVlICs9IHdpZ2ds
ZTsKICAgIHJlY3QueS5iYXNlVmFsLnZhbHVlICs9IHdpZ2dsZTsKICAgIHdpZ2dsZSAqPSAtMTsK
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGJvdW5jZSwgMjAwKTsKICB9CiAgd2luZG93LnNldFRpbWVv
dXQoYm91bmNlLCAyMDApOwogIF1dPjwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16563</attachid>
            <date>2007-10-06 00:37:52 -0700</date>
            <delta_ts>2007-10-06 01:34:08 -0700</delta_ts>
            <desc>potential fix</desc>
            <filename>try.patch</filename>
            <type>text/plain</type>
            <size>18470</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MDc1KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI1MSw3
ICsxMzI1MSw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJY
Y29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lv
bnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI2MDc1KQorKysga3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiU1ZHQ2lyY2xlRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Miw4ICs3Myw4IEBAIHZvaWQg
U1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKIAogdm9pZCBTVkdDaXJjbGVFbGVt
ZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAogewotICAgIGlmICghb3duZXJEb2N1
bWVudCgpLT5wYXJzaW5nKCkpCi0gICAgICAgIHJlYnVpbGRSZW5kZXJlcigpOworICAgIGlmICgh
b3duZXJEb2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgcmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI2MDc1KQorKysga3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlNWR0VsbGlw
c2VFbGVtZW50LmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiUmVuZGVy
UGF0aC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAK
QEAgLTc5LDggKzgwLDggQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aQogCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25z
dAogewotICAgIGlmICghb3duZXJEb2N1bWVudCgpLT5wYXJzaW5nKCkpCi0gICAgICAgIHJlYnVp
bGRSZW5kZXJlcigpOworICAgIGlmICghb3duZXJEb2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgcmVu
ZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAKICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7
CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
c3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjYwNzUpCisrKyBrc3ZnMi9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEyICsxMDEsMTgg
QEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidQogCiB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKIHsKLSAgICBpZiAoIW93
bmVyRG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAgICAgICByZWJ1aWxkUmVuZGVyZXIoKTsKKyAg
ICBpZiAoIW93bmVyRG9jdW1lbnQoKS0+cGFyc2luZygpICYmIHJlbmRlcmVyKCkpCisgICAgICAg
IHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCiAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCitib29sIFNWR0lt
YWdlRWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiAoeCgp
LmlzUmVsYXRpdmUoKSB8fCB3aWR0aCgpLmlzUmVsYXRpdmUoKSB8fAorICAgICAgICAgICAgeSgp
LmlzUmVsYXRpdmUoKSB8fCBoZWlnaHQoKS5pc1JlbGF0aXZlKCkpOworfQorCiBSZW5kZXJPYmpl
Y3QqIFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lt
YWdlKHRoaXMpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjYwNzUpCisrKyBrc3Zn
Mi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CisgICAgICAgIAorICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKIAogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXM7IH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gMjYw
NzUpCisrKyBrc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIApAQCAtNzYsOCArNzcsOCBAQCB2b2lkIFNWR0xp
bmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAKIHZvaWQgU1ZHTGluZUVsZW1lbnQ6Om5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFvd25lckRvY3VtZW50KCkt
PnBhcnNpbmcoKSkKLSAgICAgICAgcmVidWlsZFJlbmRlcmVyKCk7CisgICAgaWYgKCFvd25lckRv
Y3VtZW50KCktPnBhcnNpbmcoKSAmJiByZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT5z
ZXROZWVkc0xheW91dCh0cnVlKTsKIAogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gMjYwNzUpCisrKyBrc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRo
RWxlbWVudC5oIgogCisjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0FyYy5oIgpAQCAtMTk0LDggKzE5NSw4IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXQKIAogdm9pZCBTVkdQYXRoRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCkgY29uc3QKIHsKLSAgICBpZiAoIW93bmVyRG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAgICAg
ICByZWJ1aWxkUmVuZGVyZXIoKTsKKyAgICBpZiAoIW93bmVyRG9jdW1lbnQoKS0+cGFyc2luZygp
ICYmIHJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUp
OwogCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpOwogfQpJbmRleDoga3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3NSkKKysrIGtz
dmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2lu
Y2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgpAQCAtODgsOCAr
ODksOSBAQCB2b2lkIFNWR1BvbHlFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faWdub3JlQXR0cmlidXRlQ2hhbmdlcyA9IHRydWU7Ci0gICAgcmVi
dWlsZFJlbmRlcmVyKCk7Ci0KKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKICAgICAvLyBTcGVjOiBBZGRpdGlvbmFsbHksIHRoZSAncG9pbnRzJyBhdHRyaWJ1dGUgb24g
dGhlIG9yaWdpbmFsIGVsZW1lbnQKSW5kZXg6IGtzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjYw
NzUpCisrKyBrc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdSZWN0RWxlbWVudC5o
IgogCisjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTg5LDggKzkwLDggQEAgdm9pZCBTVkdSZWN0RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogCiB2b2lkIFNWR1JlY3RFbGVtZW50Ojpub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKSBjb25zdAogewotICAgIGlmICghb3duZXJEb2N1bWVudCgpLT5wYXJzaW5n
KCkpCi0gICAgICAgIHJlYnVpbGRSZW5kZXJlcigpOworICAgIGlmICghb3duZXJEb2N1bWVudCgp
LT5wYXJzaW5nKCkgJiYgcmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNM
YXlvdXQodHJ1ZSk7CiAKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5
QXR0cmlidXRlQ2hhbmdlKCk7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyNjA3NSkKKysrIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc0LDE4ICsyNzQsNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTVkdTdHlsZWRFbGVt
ZW50OjpnCiAgICAgcmV0dXJuIGNzc1NWR0F0dHItPnN0eWxlKCktPmdldFByb3BlcnR5Q1NTVmFs
dWUobmFtZSk7CiB9CiAKLXZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6cmVidWlsZFJlbmRlcmVyKCkg
Y29uc3QKLXsKLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzUmVuZGVyUGF0
aCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJQYXRoKiByZW5kZXJQYXRoID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyUGF0aCo+KHJlbmRlcmVyKCkpOwotICAgIFNWR0VsZW1lbnQqIHBhcmVu
dEVsZW1lbnQgPSBzdmdfZHluYW1pY19jYXN0KHBhcmVudE5vZGUoKSk7Ci0gICAgaWYgKHBhcmVu
dEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC0+cmVuZGVyZXIoKSAmJiBwYXJlbnRFbGVtZW50LT5p
c1N0eWxlZCgpICYmCi0gICAgICAgIHBhcmVudEVsZW1lbnQtPmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3RfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4odGhpcykpKQotICAgICAgICByZW5k
ZXJQYXRoLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gMjYwNzUpCisrKyBrc3ZnMi9z
dmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gQ2VudHJhbGl6ZWQgcGxhY2UgdG8gZm9y
Y2UgYSBtYW51YWwgc3R5bGUgcmVzb2x1dGlvbi4gSGFja3kgYnV0IG5lZWRlZCBmb3Igbm93Lgog
ICAgICAgICBSZW5kZXJTdHlsZSogcmVzb2x2ZVN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSk7Ci0KKyAgICAgICAgCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBmcmllbmQgY2xhc3MgUmVu
ZGVyUGF0aDsKLSAgICAgICAgdm9pZCByZWJ1aWxkUmVuZGVyZXIoKSBjb25zdDsKLQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SWRGb3JT
VkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIApJbmRleDoga3N2ZzIvc3Zn
L1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9z
dmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3NSkKKysr
IGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDEyICs2NiwxMSBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsCiAKIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnVwZGF0ZUxvY2Fs
VHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqIGxvY2FsVHJhbnNmb3JtcykKIHsKLSAgICAvLyBV
cGRhdGUgY2FjaGVkIGxvY2FsIG1hdHJpeAogICAgIFNWR1RyYW5zZm9ybSBsb2NhbFRyYW5zZm9y
bSA9IGxvY2FsVHJhbnNmb3Jtcy0+Y29uY2F0ZW5hdGUoKTsKLSAgICBpZiAobG9jYWxUcmFuc2Zv
cm0uaXNWYWxpZCgpKQotICAgICAgICBtX2xvY2FsTWF0cml4ID0gbG9jYWxUcmFuc2Zvcm0ubWF0
cml4KCk7Ci0gICAgZWxzZSAKLSAgICAgICAgbV9sb2NhbE1hdHJpeCA9IEFmZmluZVRyYW5zZm9y
bSgpOworICAgIGlmIChsb2NhbFRyYW5zZm9ybS5tYXRyaXgoKSA9PSBtX2xvY2FsTWF0cml4KQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9sb2NhbE1hdHJpeCA9IGxvY2FsVHJhbnNmb3Jt
Lm1hdHJpeCgpOwogICAgIGlmIChyZW5kZXJlcigpKSB7CiAgICAgICAgIHJlbmRlcmVyKCktPnNl
dExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgpOwogICAgICAgICByZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oCShyZXZpc2lvbiAyNjA3NSkKKysrIGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3Q7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgICAgICB2b2lkIHVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNW
R1RyYW5zZm9ybUxpc3QqIGxvY2FsVHJhbnNmb3Jtcyk7CisgICAgICAgIHZvaWQgdXBkYXRlTG9j
YWxUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdCopOwogICAgICAgICAKICAgICAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCkgY29uc3Q7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiAyNjA3NSkKKysrIGtzdmcyL3N2
Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgCiAgICAgICAgIFNWR1RyYW5zZm9ybSgpOwotICAg
ICAgICBTVkdUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtVHlwZSB0eXBlKTsKKyAgICAgICAgU1ZHVHJh
bnNmb3JtKFNWR1RyYW5zZm9ybVR5cGUpOwogICAgICAgICBleHBsaWNpdCBTVkdUcmFuc2Zvcm0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybSgp
OwogICAgICAgICAgICAgICAgCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAyNjA3NSkKKysrIHJl
bmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDggKzEyMCw4IEBA
IHZvaWQgUmVuZGVyUGF0aDo6bGF5b3V0KCkKIHsKICAgICBJbnRSZWN0IG9sZEJvdW5kczsKICAg
ICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7Ci0gICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVj
a0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKLSAgICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkgJiYg
Y2hlY2tGb3JSZXBhaW50KSB7CisgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJl
cGFpbnREdXJpbmdMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQoKTsKKyAgICBpZiAoY2hlY2tG
b3JSZXBhaW50KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9IG1fYWJzb2x1dGVCb3VuZHM7CiAgICAg
ICAgIG9sZE91dGxpbmVCb3ggPSBhYnNvbHV0ZU91dGxpbmVCb3goKTsKICAgICB9CkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBSZW5kZXJQYXRoOjpsYXlvdXQoKQogICAgIHNldFdpZHRoKG1fYWJz
b2x1dGVCb3VuZHMud2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KG1fYWJzb2x1dGVCb3VuZHMuaGVp
Z2h0KCkpOwogCi0gICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVwYWludCkK
KyAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQogICAgICAgICByZXBhaW50QWZ0ZXJMYXlvdXRJZk5l
ZWRlZChvbGRCb3VuZHMsIG9sZE91dGxpbmVCb3gpOwogCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwpAQCAtNDM3LDExICs0MzcsNiBAQCBGbG9hdFJlY3QgUmVuZGVyUGF0aDo6ZHJhd01hcmtl
cnNJZk5lZWRlCiAgICAgcmV0dXJuIGJvdW5kczsKIH0KIAotYm9vbCBSZW5kZXJQYXRoOjpoYXNS
ZWxhdGl2ZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxl
ZEVsZW1lbnQqPihlbGVtZW50KCkpLT5oYXNSZWxhdGl2ZVZhbHVlcygpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogcmVuZGVyaW5nL1JlbmRlclBhdGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyUGF0aC5oCShyZXZpc2lvbiAyNjA3NSkKKysrIHJlbmRl
cmluZy9SZW5kZXJQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDcgQEAgcHVibGlj
OgogCiAgICAgRmxvYXRSZWN0IGRyYXdNYXJrZXJzSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUGF0aCYpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHN0cm9rZUJCb3goKSBjb25zdDsKLQotICAgIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBj
b25zdDsKLSAKKyAgICAKIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50
VG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAKSW5kZXg6IHJlbmRlcmluZy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCShyZXZpc2lvbiAyNjA3NSkKKysrIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBSZW5kZXJTVkdD
b250YWluZXI6OmxheW91dCgpCiAKICAgICBJbnRSZWN0IG9sZEJvdW5kczsKICAgICBJbnRSZWN0
IG9sZE91dGxpbmVCb3g7Ci0gICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFp
bnREdXJpbmdMYXlvdXQoKTsKKyAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9yUmVw
YWludER1cmluZ0xheW91dCgpICYmIHNlbGZXaWxsUGFpbnQoKTsKICAgICBpZiAoY2hlY2tGb3JS
ZXBhaW50KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9IG1fYWJzb2x1dGVCb3VuZHM7CiAgICAgICAg
IG9sZE91dGxpbmVCb3ggPSBhYnNvbHV0ZU91dGxpbmVCb3goKTsKQEAgLTI0Miw3ICsyNDIsMTAg
QEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgUmVuZGVyT2JqZWN0KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAgICAgLy8gT25s
eSBmb3JjZSBvdXIga2lkcyB0byBsYXlvdXQgaWYgd2UncmUgYmVpbmcgYXNrZWQgdG8gcmVsYXlv
dXQgYXMgYSByZXN1bHQgb2YgYSBwYXJlbnQgY2hhbmdpbmcKLSAgICAgICAgaWYgKHNlbGZOZWVk
c0xheW91dCgpICYmICghY2hpbGQtPmlzUmVuZGVyUGF0aCgpIHx8IHN0YXRpY19jYXN0PFJlbmRl
clBhdGgqPihjaGlsZCktPmhhc1JlbGF0aXZlVmFsdWVzKCkpKQorICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gc2tpcCByZWxheW91dCBvZiBub24tcmVsYXRpdmUga2lkcyB3
aGVuIG9ubHkgYm91bmRzIGhhdmUgY2hhbmdlZAorICAgICAgICAvLyBob3dldmVyLCB3ZSBjYW4n
dCB0ZWxsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYm91bmRzIGNoYW5naW5nIGFuZCB0cmFuc2Zv
cm0gY2hhbmdpbmcuCisgICAgICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzkxCisgICAgICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAg
IGNoaWxkLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIAogICAgICAgICBjaGlsZC0+bGF5b3V0SWZO
ZWVkZWQoKTsKQEAgLTMwMywyMSArMzA2LDI2IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjph
cHBseUFkZGl0aW9uYWwKICAgICAvLyBuby1vcAogfQogCitib29sIFJlbmRlclNWR0NvbnRhaW5l
cjo6c2VsZldpbGxQYWludCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFNWR19FWFBFUklNRU5UQUxf
RkVBVFVSRVMpCisgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUoKS0+
c3ZnU3R5bGUoKTsKKyAgICBBdG9taWNTdHJpbmcgZmlsdGVySWQoU1ZHVVJJUmVmZXJlbmNlOjpn
ZXRUYXJnZXQoc3ZnU3R5bGUtPmZpbHRlcigpKSk7CisgICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgZmlsdGVySWQpOworICAgIGlmIChmaWx0
ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGlu
dCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKIHsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhZHJhd3NDb250ZW50cygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWZpcnN0Q2hpbGQoKSkgewotI2lmIEVOQUJMRShTVkdfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTKQotICAgICAgICAvLyBTcGVjOiBncm91cHMgdy9vIGNoaWxkcmVuIHN0aWxsIG1heSBy
ZW5kZXIgZmlsdGVyIGNvbnRlbnQuCi0gICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdT
dHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBmaWx0ZXJJ
ZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChzdmdTdHlsZS0+ZmlsdGVyKCkpKTsKLSAgICAg
ICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwg
ZmlsdGVySWQpOwotICAgICAgICBpZiAoIWZpbHRlcikKLSNlbmRpZgotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICAgLy8gU3BlYzogZ3JvdXBzIHcvbyBjaGlsZHJlbiBzdGlsbCBtYXkg
cmVuZGVyIGZpbHRlciBjb250ZW50LgorICAgIGlmICghZmlyc3RDaGlsZCgpICYmICFzZWxmV2ls
bFBhaW50KCkpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwogICAgIGFwcGx5Q29udGVudFRyYW5zZm9ybXMocGFpbnRJbmZvKTsKSW5kZXg6IHJl
bmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgJKHJldmlzaW9uIDI2MDc1KQorKysgcmVuZGVyaW5nL1JlbmRlclNW
R0NvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDggQEAgcHJpdmF0ZToK
IAogICAgIGludCBtX3dpZHRoOwogICAgIGludCBtX2hlaWdodDsKKyAgICAKKyAgICBib29sIHNl
bGZXaWxsUGFpbnQoKSBjb25zdDsKIAogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnRzIDogMTsKIApJ
bmRleDogcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSb290LmNwcAkocmV2aXNpb24gMjYwNzUpCisrKyByZW5kZXJpbmcvUmVuZGVy
U1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDggQEAgdm9pZCBSZW5kZXJT
VkdSb290OjpsYXlvdXQoKQogCiAgICAgSW50UmVjdCBvbGRCb3VuZHMgPSBtX2Fic29sdXRlQm91
bmRzOwogICAgIEludFJlY3Qgb2xkT3V0bGluZUJveDsKLSAgICBib29sIGNoZWNrRm9yUmVwYWlu
dCA9IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpOwotICAgIGlmIChzZWxmTmVlZHNMYXlv
dXQoKSAmJiBjaGVja0ZvclJlcGFpbnQpCisgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVj
a0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQoKTsKKyAgICBpZiAo
Y2hlY2tGb3JSZXBhaW50KQogICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRsaW5l
Qm94KCk7CiAKICAgICBjYWxjV2lkdGgoKTsKQEAgLTg0LDE5ICs4NCwxNSBAQCB2b2lkIFJlbmRl
clNWR1Jvb3Q6OmxheW91dCgpCiAgICAgbV93aWR0aCA9IG1fd2lkdGggKiBzdmctPmN1cnJlbnRT
Y2FsZSgpOwogICAgIG1faGVpZ2h0ID0gbV9oZWlnaHQgKiBzdmctPmN1cnJlbnRTY2FsZSgpOwog
ICAgIAotICAgIGJvb2wgYm91bmRzQ2hhbmdlZCA9IG1fYWJzb2x1dGVCb3VuZHMgIT0gb2xkQm91
bmRzOwotICAgIAotICAgIGlmIChib3VuZHNDaGFuZ2VkIHx8IG5vcm1hbENoaWxkTmVlZHNMYXlv
dXQoKSB8fCBwb3NDaGlsZE5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgaWYgKGJvdW5kc0NoYW5nZWQgJiYgKCFjaGlsZC0+aXNSZW5k
ZXJQYXRoKCkgfHwgc3RhdGljX2Nhc3Q8UmVuZGVyUGF0aCo+KGNoaWxkKS0+aGFzUmVsYXRpdmVW
YWx1ZXMoKSkpCi0gICAgICAgICAgICAgICAgY2hpbGQtPnNldE5lZWRzTGF5b3V0KHRydWUpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAg
ICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICB9CisgICAgZm9y
IChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkpIC8vIGVp
dGhlciBib3VuZHMgb3IgdHJhbnNmb3JtIGNoYW5nZWQsIGZvcmNlIGtpZHMgdG8gcmVsYXlvdXQK
KyAgICAgICAgICAgIGNoaWxkLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgCisgICAg
ICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVk
c0xheW91dCgpKTsKICAgICB9CiAKLSAgICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkgJiYgY2hlY2tG
b3JSZXBhaW50KQorICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCiAgICAgICAgIHJlcGFpbnRBZnRl
ckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkT3V0bGluZUJveCk7CiAKICAgICB2aWV3KCkt
PmVuYWJsZUxheW91dFN0YXRlKCk7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5jcHAJKHJldmlzaW9uIDI2MDc1KQorKysgcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMjYgKzU1LDIzIEBAIHZvaWQg
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmxheW91dCgKICAgICAKICAgICBJbnRSZWN0IG9s
ZEJvdW5kcyA9IG1fYWJzb2x1dGVCb3VuZHM7CiAgICAgSW50UmVjdCBvbGRPdXRsaW5lQm94Owot
ICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7
Ci0gICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVwYWludCkKKyAgICBib29s
IGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpICYmIHNlbGZO
ZWVkc0xheW91dCgpOworICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCiAgICAgICAgIG9sZE91dGxp
bmVCb3ggPSBhYnNvbHV0ZU91dGxpbmVCb3goKTsKICAgICAKICAgICBjYWxjV2lkdGgoKTsKICAg
ICAKICAgICBtX2Fic29sdXRlQm91bmRzID0gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7
Ci0gICAgYm9vbCBib3VuZHNDaGFuZ2VkID0gbV9hYnNvbHV0ZUJvdW5kcyAhPSBvbGRCb3VuZHM7
CiAgICAgCi0gICAgaWYgKGJvdW5kc0NoYW5nZWQgfHwgbm9ybWFsQ2hpbGROZWVkc0xheW91dCgp
IHx8IHBvc0NoaWxkTmVlZHNMYXlvdXQoKSkgewotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgICAgICBpZiAoYm91bmRzQ2hhbmdlZCAmJiAoIWNoaWxkLT5pc1JlbmRlclBh
dGgoKSB8fCBzdGF0aWNfY2FzdDxSZW5kZXJQYXRoKj4oY2hpbGQpLT5oYXNSZWxhdGl2ZVZhbHVl
cygpKSkKLSAgICAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwotICAgICAgICAg
ICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIH0KKyAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSkKKyAgICAgICAg
ICAgIGNoaWxkLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgCisgICAgICAgIGNoaWxk
LT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgp
KTsKICAgICB9CiAgICAgCi0gICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVw
YWludCkKKyAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQogICAgICAgICByZXBhaW50QWZ0ZXJMYXlv
dXRJZk5lZWRlZChvbGRCb3VuZHMsIG9sZE91dGxpbmVCb3gpOwogICAgIAogICAgIHZpZXcoKS0+
ZW5hYmxlTGF5b3V0U3RhdGUoKTsKQEAgLTEyMiwxOCArMTE5LDE4IEBAIHZvaWQgUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXI6OmNhbGNWaWUKICAgICAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQo
KSAmJiAhc3ZnLT5oYXNSZWxhdGl2ZVZhbHVlcygpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGRvdWJsZSB4ID0gc3ZnLT54KCkudmFsdWUoKTsKLSAgICAgICAgZG91YmxlIHkgPSBz
dmctPnkoKS52YWx1ZSgpOwotICAgICAgICBkb3VibGUgdyA9IHN2Zy0+d2lkdGgoKS52YWx1ZSgp
OwotICAgICAgICBkb3VibGUgaCA9IHN2Zy0+aGVpZ2h0KCkudmFsdWUoKTsKKyAgICAgICAgZmxv
YXQgeCA9IHN2Zy0+eCgpLnZhbHVlKCk7CisgICAgICAgIGZsb2F0IHkgPSBzdmctPnkoKS52YWx1
ZSgpOworICAgICAgICBmbG9hdCB3ID0gc3ZnLT53aWR0aCgpLnZhbHVlKCk7CisgICAgICAgIGZs
b2F0IGggPSBzdmctPmhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9h
dFJlY3QoeCwgeSwgdywgaCk7CiAgICAgfSBlbHNlIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjptYXJrZXJUYWcpKSB7CiAgICAgICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgU1ZHTWFya2VyRWxlbWVudCogc3ZnID0gc3Rh
dGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgICAgIGRvdWJsZSB3
ID0gc3ZnLT5tYXJrZXJXaWR0aCgpLnZhbHVlKCk7Ci0gICAgICAgIGRvdWJsZSBoID0gc3ZnLT5t
YXJrZXJIZWlnaHQoKS52YWx1ZSgpOworICAgICAgICBmbG9hdCB3ID0gc3ZnLT5tYXJrZXJXaWR0
aCgpLnZhbHVlKCk7CisgICAgICAgIGZsb2F0IGggPSBzdmctPm1hcmtlckhlaWdodCgpLnZhbHVl
KCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoMCwgMCwgdywgaCk7CiAgICAgfQog
fQo=
</data>
<flag name="review"
          id="6981"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>