<?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>67087</bug_id>
          
          <creation_ts>2011-08-27 01:22:10 -0700</creation_ts>
          <short_desc>Prepare SVG image intrinsic size negotiation: Stop sharing SVGImages</short_desc>
          <delta_ts>2011-10-05 06:38:35 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>47156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gavinp</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>krit</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>457925</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-27 01:22:10 -0700</bug_when>
    <thetext>Prepare SVG image intrinsic size negotiation: Stop sharing SVGImages.
This is needed as SVG image will soon depend on the place where its used.
Size negotiation has to be implemented for border-image/mask-image/background-image/html:img/svg:image.
This is all done already, I&apos;m splitting up my master patch into smaller pieces, this is part one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457927</commentid>
    <comment_count>1</comment_count>
      <attachid>105433</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-27 02:33:30 -0700</bug_when>
    <thetext>Created attachment 105433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457930</commentid>
    <comment_count>2</comment_count>
      <attachid>105433</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-27 03:13:41 -0700</bug_when>
    <thetext>Comment on attachment 105433
Patch

Attachment 105433 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9547407

New failing tests:
http/tests/security/canvas-remote-read-remote-image-blocked-then-allowed.html
http/tests/inspector/network/network-cachedresources-with-same-urls.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458776</commentid>
    <comment_count>3</comment_count>
      <attachid>105595</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-30 01:58:53 -0700</bug_when>
    <thetext>Created attachment 105595
Patch v2

Fix regressions, should now pass cr-linux-ews again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458779</commentid>
    <comment_count>4</comment_count>
      <attachid>105595</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-30 02:00:31 -0700</bug_when>
    <thetext>Comment on attachment 105595
Patch v2

Oops, uploaded wrong version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458792</commentid>
    <comment_count>5</comment_count>
      <attachid>105601</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-30 02:17:05 -0700</bug_when>
    <thetext>Created attachment 105601
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458809</commentid>
    <comment_count>6</comment_count>
      <attachid>105604</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-30 02:58:08 -0700</bug_when>
    <thetext>Created attachment 105604
Patch v4

Heh, Patch v3 still contained a missing change to RenderImage.cpp, sorry for the patch spam. This time I got merging everything right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458936</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-08-30 09:07:47 -0700</bug_when>
    <thetext>The patch looks sane to me. But I&apos;d suggest that you ask someone with more experiences in CachedResources. The sentence about the &quot;less dangerous way&quot; scares me :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460100</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-31 17:13:10 -0700</bug_when>
    <thetext>CC&apos;ing some experts, this is probably for Antti to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462446</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-06 03:07:07 -0700</bug_when>
    <thetext>Why is this needed in the first place? Isn&apos;t SVG scaling just a paint/hit test time transform?

Anyway, I don&apos;t think this is the right way to go. Repeatedly re-requesting a resource from network so we can render it in different sizes is not good and we shouldn&apos;t complicate the cache code further by introducing the strange concept of &quot;unique cached resource&quot;.

Eventually we probably want to separate the cache storage layer (which holds the bits) and the interoperation layer (the decoded forms of the resource). That would make things easier here too.

For now, if you need to cache SVG trees in multiple sizes then that&apos;s exactly what you should do. HashMap&lt;IntSize, SVGImage&gt; and all that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462447</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-06 03:09:26 -0700</bug_when>
    <thetext>s/interoperation/interpretation/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478306</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-05 06:38:35 -0700</bug_when>
    <thetext>As discussed with Antti, this approach is bad - I&apos;ve come up with a new concept, that&apos;s going to be discussed in a new bug report, see bug 69416.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105433</attachid>
            <date>2011-08-27 02:33:30 -0700</date>
            <delta_ts>2011-08-30 01:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>FirstImageSplit-v1.diff</filename>
            <type>text/plain</type>
            <size>14405</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzOTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDgtMjcgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBTVkcg
aW1hZ2UgaW50cmluc2ljIHNpemUgbmVnb3RpYXRpb246IFN0b3Agc2hhcmluZyBTVkdJbWFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MDg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBzaGFy
aW5nIFNWR0ltYWdlcywgdGhleSBoYXZlIHRvIGJlIHVuaXF1ZSBhcyB0aGVpciBpbnRyaW5zaWMg
c2l6ZSBpcyBnaXZlbiBieSB0aGUgc2l6ZSBvZiB0aGUgYm94IHRoYXQgZW1iZWRzIGl0LgorICAg
ICAgICBEZXRlcm1pbmluZyB0aGF0IHNpemUgaGFzIHRvIGJlIGRvbmUgaW5kaXZpZHVhbGx5IGZv
ciBodG1sOmltZy9zdmc6aW1nL2JhY2tncm91bmQtaW1hZ2UvYm9yZGVyLWltYWdlLgorCisgICAg
ICAgIENvbnNpZGVyIGEgSFRNTCBkb2N1bWVudCB3aGljaCBlbWJlZHMgJ2Zvby5zdmcnIHR3aWNl
IHVzaW5nIHR3byA8aHRtbDppbWc+IGVsZW1lbnRzLgorICAgICAgICA8aW1nIGlkPSJpbWcxIiBz
cmM9ImZvby5zdmciIHN0eWxlPSJ3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4Ij4KKyAgICAgICAg
PGltZyBpZD0iaW1nMiIgc3JjPSJmb28uc3ZnIiBzdHlsZT0id2lkdGg6IDMycHg7IGhlaWdodDog
MzJweCI+CisKKyAgICAgICAgV2hlbiBpbWcxcyBzcmMgYXR0cmlidXRlIGlzIHBhcnNlZCwgdGhl
IEltYWdlTG9hZGVyIHdpbGwgYmUgaW52b2tlZCwgd2hpY2ggcmVxdWVzdHMgYSBuZXcgQ2FjaGVk
SW1hZ2UgdGhyb3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgVGhlIENhY2hlZElt
YWdlIG9iamVjdCBpcyBmcmVzaGx5IGNyZWF0ZWQsIGFuZCB3YWl0cyBmb3IgZGF0YS4gKEF0IHRo
aXMgcG9pbnQgaXQncyBpbXBvc3NpYmxlIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhlIENhY2hlZElt
YWdlCisgICAgICAgIHJlZmVyZW5jZXMgYSBTVkcgaW1hZ2Ugb3Igbm90LCB3ZSBoYXZlIHRvIHdh
aXQgZm9yIHRoZSBmaXJzdCBkYXRhIHRvIGJlIGFibGUgdG8ganVkZ2UuLi4pLgorICAgICAgICBJ
bW1lZGlhdGVseSBhZnRlcndhcmRzICh0eXBpY2FsbHkgYmVmb3JlIGltZzEgcmVjZWl2ZXMgZGF0
YSksIGltZzIgaXMgcGFyc2VkLCBhbmQgdGhlIENhY2hlZFJlc291cmNlTG9hZGVyIGlzIGludm9r
ZWQgZm9yIHRoZQorICAgICAgICBzYW1lIHJlc291cmNlLCB3aGljaCBpbiB0dXJuIGRvZXMgTk9U
IHN0YXJ0IGEgbmV3IGxvYWQsIGJ1dCByZXVzZXMgdGhlIGV4aXN0aW5nIHJlc291cmNlIGluIHRo
ZSBNZW1vcnlDYWNoZS4KKworICAgICAgICBBcyBzb29uIGFzIGRhdGEgcmVjZWl2ZXMsIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpIGlzIGNhbGxlZCB3aGljaCB3aWxsIGNyZWF0ZSBhbiB1bmRl
cmx5aW5nIFNWR0ltYWdlIG9iamVjdCwgaWYgdGhlIHJlc3BvbnNlCisgICAgICAgIG1pbWV0eXBl
IGlzIFNWRy4gQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBTVkdJbWFnZSwg
dGhhdCdzIHNoYXJlZCBieSBtdWx0aXBsZSBjbGllbnRzLgorCisgICAgICAgIElmIHRoZSBpbWFn
ZSBhcnJpdmVkIGNvbXBsZXRseSwgaW1hZ2VDaGFuZ2VkKCkgY2FsbHMgd2lsbCBiZSB0cmlnZ2Vy
ZWQgb24gYWxsIENhY2hlZFJlc291cmNlQ2xpZW50cywgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz
b3VyY2UuCisgICAgICAgIFdlIGludGVyY2VwdCB0aGVzZSBjYWxscyBpbiBSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZCgpIC0gZm9yIFNWRyBpbWFnZXMgd2UnbGwgbm93IHdhbGsgdGhlIGxpc3Qgb2Yg
Y2xpZW50cywgYW5kIG1ha2UgZWFjaCBvZiB0aGVtCisgICAgICAgIHJlLXJlcXVlc3QgYW4gdW5p
cXVlIGltYWdlIHJlc291cmNlIC0gdGhpcyBpcyBuZWVkZWQsIHVuZm9ydHVuYXRlbHksIGFzIHRo
ZSBTVkcgaW1hZ2UgaW50cmluc2ljIHNpemUgZGVwZW5kcyBvbiB0aGUgaW1hZ2UgY29udGFpbmVy
CisgICAgICAgIHNpemUuIEkgdHJpZWQgb3RoZXIgaGFja3Mgb2YgbWFpbnRhaW5pbmcgYSBIYXNo
TWFwIHdpdGggdGhlIGNvbnRhaW5lciBzaXplcyBwZXIgY2xpZW50LCB0aG91Z2ggdGhhdCdzIHJl
YWxseSB0cmlja3kgdG8gZG8uCisgICAgICAgIFRoaXMgaXMgdGhlIGxlc3MgZGFuZ2Vyb3VzIHdh
eSBvZiBkb2luZyB0aGlzIQorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cyBhdCBw
cmVzZW50LCBhcyB0aGUgbmV3IFNWRyBpbWFnZSBzaXplIG5lZ290aWF0aW9uIGxvZ2ljIGlzIG5v
dCB5ZXQgYWRkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBB
ZGQgcG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRl
ZWQgdG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOiBBZGQgdmlydHVhbCByZXJlcXVlc3RVbmlxdWVJ
bWFnZVJlc291cmNlIG1ldGhvZCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGluIENhY2hl
ZFJlc291cmNlQ2xpZW50LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBBZGQg
cG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRlZWQg
dG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnNob3VsZFNoYXJlUmVzb3VyY2UpOiBSZXR1cm5zIHRydWUsIGlmIHRoaXMgcmVzb3Vy
Y2UgY2FuIGJlIHNoYXJlZCAodHJ1ZSwgZm9yIGFsbCBpbWFnZXMgYnV0IFNWRyBpbWFnZXMpLgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3Vy
Y2UpOiBBZGQgZGVmYXVsdCBzdHViIG1ldGhvZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6IEZvcmNlIHJlbG9hZGluZyBjYWNo
ZWQgaW1hZ2VzLCB0aGF0IGFyZSBtYXJrZWQgdG8gYmUgdW5pcXVlLCBub3Qgc2hhcmFibGUuIFRo
YXQncyB0cnVlIGZvciBhbGwgU1ZHIGltYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmlzU1ZHSW1hZ2UpOiBBZGQgdmly
dHVhbCBpc1NWR0ltYWdlKCkgZnVuY3Rpb24sIHJldHVybnMgZmFsc2UgcGVyIGRlZmF1bHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmltYWdlQ2hhbmdlZCk6IENhbGwgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlm
TmVlZGVkLCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcmVxdWVz
dFVuaXF1ZUltYWdlUmVzb3VyY2VJZk5lZWRlZCk6IElmIHRoZSBTVkcgaW1hZ2VzIGhhcyBtdWx0
aXBsZSBjbGllbnRzLCBmb3JjZSByZWNyZWF0aW9uIG9mIHVuaXF1ZSByZXNvdXJjZXMgZm9yIGVh
Y2guCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlOjpyZW5kZXJlcik6IEFkZCBhY2Nlc3NvciBmb3IgdGhlIHN0b3JlZCBSZW5kZXJPYmpl
Y3QuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6aXNTVkdJbWFnZSk6IFJldHVybiB0cnVlLgorCiAyMDExLTA4LTI2ICBYaWFv
bWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWdyZXNzaW9uKDkxNzg4KTog
QmFkIGNhc3QgaW4gV2ViQ29yZTo6YmxvY2tXaXRoTmV4dExpbmVCb3gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gOTM4NjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1
LDIwIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiAKICAgICAgICAg
aW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6
cmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCog
b3JpZ2luYXRpbmdDbGllbnQpCit7CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNv
dXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKTsKKyAgICBpZiAoIWltYWdlUmVzb3VyY2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChpbWFnZVJlc291cmNlLT5yZW5kZXJlcigpID09IG9y
aWdpbmF0aW5nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVGcm9tRWxlbWVu
dCgpOworICAgIGlmIChtX2ltYWdlKQorICAgICAgICBpbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJ
bWFnZShtX2ltYWdlLmdldCgpKTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogewogICAgIC8vIElmIHdlJ3JlIG5vdCBtYWtpbmcgcmVuZGVyZXJzIGZvciB0aGUg
cGFnZSwgdGhlbiBkb24ndCBsb2FkIGltYWdlcy4gIFdlIGRvbid0IHdhbnQgdG8gc2xvdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDkzODYwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDggQEAgcHVibGljOgogICAgIC8vIGxvYWRpbmcgaWYgYSBsb2FkIGhhc24ndCBhbHJlYWR5
IGJlZW4gc3RhcnRlZC4KICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJj
ZUNsaWVudCogb3JpZ2luYXRpbmdDbGllbnQpOworCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91
bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgc2V0LCBldmVuIGlm
IGl0cyB2YWx1ZQogICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMgbmV3IGxvYWQgdW5jb25k
aXRpb25hbGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2aW9yKS4KICAgICB2b2lk
IHVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDkzODYwKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcsNiArNTcsNyBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgUmVz
b3VyY2VSCiAgICAgLCBtX2ltYWdlKDApCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1l
cih0aGlzLCAmQ2FjaGVkSW1hZ2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKQogICAg
ICwgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCisgICAgLCBtX3Nob3VsZFNoYXJlUmVz
b3VyY2UodHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7CiB9CkBAIC0yMTIsNiArMjEz
LDE0IEBAIEludFJlY3QgQ2FjaGVkSW1hZ2U6OmltYWdlUmVjdChmbG9hdCBtdWwKICAgICByZXR1
cm4gSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6
cmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCog
b3JpZ2luYXRpbmdDbGllbnQpCit7CisgICAgbV9zaG91bGRTaGFyZVJlc291cmNlID0gZmFsc2U7
CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOworICAgIHdoaWxl
IChDYWNoZWRSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQorICAgICAgICBjLT5yZXJlcXVl
c3RVbmlxdWVJbWFnZVJlc291cmNlKG9yaWdpbmF0aW5nQ2xpZW50KTsKK30KKwogdm9pZCBDYWNo
ZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpCiB7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDkzODYwKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAKKyAgICB2b2lkIHJl
cmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIG9y
aWdpbmF0aW5nQ2xpZW50KTsKKwogICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OyAvLyBSZXR1cm5z
IHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAg
Ym9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KIApAQCAtNzUs
NiArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgCisgICAgYm9vbCBz
aG91bGRTaGFyZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTaGFyZVJlc291cmNl
OyB9CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3Vy
cmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KICAgICB2b2lk
IGxvYWQoKTsKIApAQCAtOTgsNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2U+
IG1faW1hZ2U7CiAgICAgVGltZXI8Q2FjaGVkSW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRp
bWVyOwogICAgIGJvb2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdlOworICAgIGJvb2wgbV9zaG91
bGRTaGFyZVJlc291cmNlOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDkzODYwKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IENhY2hlZENTU1N0eWxlU2hlZXQ7CiAgICAgY2xhc3MgQ2FjaGVkRm9udDsKICAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKKyAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKICAgICBjbGFz
cyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBJbWFnZTsKICAgICBjbGFzcyBJbnRSZWN0OwpAQCAt
NjAsNiArNjEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGUuZy4sIGluIHRo
ZSBiL2YgY2FjaGUgb3IgaW4gYSBiYWNrZ3JvdW5kIHRhYikuCiAgICAgICAgIHZpcnR1YWwgYm9v
bCB3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1hZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXJlcXVlc3RVbmlxdWVJbWFnZVJlc291cmNlKGNvbnN0IENhY2hl
ZFJlc291cmNlQ2xpZW50KiAvKiBvcmlnaW5hdGluZ0NsaWVudCAqLykgeyB9CisKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBj
b25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNv
bnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNl
VVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCopIHt9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5
Mzg2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKQEAgLTQ0NCw3ICs0
NDUsMTggQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeQogICAgICAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJl
dmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CiAgICAg
ICAgIHJldHVybiBSZWxvYWQ7CiAgICAgfQotICAgIAorICAKKyAgICAvLyBGb3JjZSByZWxvYWRp
bmcgU1ZHIGltYWdlcywgYXMgdGhlaXIgaW5zdHJpbmNpYyBzaXplIG1heSBkZXBlbmQgb24gdGhl
IGhvc3QgZG9jdW1lbnQuCisgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgeworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGV4aXN0aW5nUmVzb3VyY2UpOworICAg
ICAgICBpZiAoY2FjaGVkSW1hZ2UtPnNob3VsZFNoYXJlUmVzb3VyY2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBVc2U7CisgICAgICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgp
OworICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBSZWxvYWQ7CisgICAgICAgIHJldHVybiBVc2U7CisgICAgfQorCiAgICAgLy8gRG9u
J3QgcmVsb2FkIHJlc291cmNlcyB3aGlsZSBwYXN0aW5nLgogICAgIGlmIChtX2FsbG93U3RhbGVS
ZXNvdXJjZXMpCiAgICAgICAgIHJldHVybiBVc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDkzODYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYpOyAK
IAogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCkgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIC8vIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5
IGNhbiBhc3N1cmUgdGhhdCAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiA5Mzg2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIxLDYgKzEwMjEsOSBAQCB2b2lkIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnCiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2Fj
aGVkSW1hZ2UqPihpbWFnZSk7CisgICAgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlmTmVl
ZGVkKGNhY2hlZEltYWdlKTsKKwogICAgIGlmICgoc3R5bGUoKS0+Ym9yZGVySW1hZ2UoKS5pbWFn
ZSgpICYmIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB8
fAogICAgICAgICAoc3R5bGUoKS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSAmJiBzdHlsZSgpLT5t
YXNrQm94SW1hZ2UoKS5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpKSB7CiAgICAgICAgIHJlcGFp
bnQoKTsKQEAgLTEwMzEsMTMgKzEwMzQsMzMgQEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZwogICAgIGlmICghZGlkRnVsbFJlcGFpbnQpCiAgICAgICAgIHJlcGFpbnRM
YXllclJlY3RzRm9ySW1hZ2UoaW1hZ2UsIHN0eWxlKCktPm1hc2tMYXllcnMoKSwgZmFsc2UpOwog
Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc0xheWVyKCkg
JiYgbGF5ZXIoKS0+aGFzQ29tcG9zaXRlZE1hc2soKSAmJiBsYXllcnNVc2VJbWFnZShpbWFnZSwg
c3R5bGUoKS0+bWFza0xheWVycygpKSkKICAgICAgICAgbGF5ZXIoKS0+Y29udGVudENoYW5nZWQo
UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUNoYW5nZWQpOwogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVy
Qm94OjpyZXJlcXVlc3RVbmlxdWVJbWFnZVJlc291cmNlSWZOZWVkZWQoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKQoreworICAgIGlmICghY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwor
I2lmIEVOQUJMRShTVkcpCisgICAgdW5zaWduZWQgY291bnQgPSBjYWNoZWRJbWFnZS0+Y291bnQo
KTsKKyAgICBpZiAoY291bnQgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU1ZHIElt
YWdlcyBoYXZlIHRvIGJlIHVuaXF1ZSwgYXMgdGhlaXIgX2ludHJpbnNpY18gc2l6ZSBtYXkgZGVw
ZW5kIG9uIHRoZSBob3N0IGRvY3VtZW50IGl0c2VsZiEKKyAgICAvLyBJZiBtdWx0aXBsZSBpbWFn
ZXMgcmVmZXJlbmNlIHRoaXMgcmVzb3VyY2UsIGFuZCBpdCB0dXJucyBvdXQgdG8gYmUgYSBTVkcg
SW1hZ2Ugd2UgaGF2ZSB0byBtYWtlIGVhY2ggb2YgdGhlbSB1bmlxdWUuCisgICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgIGlmICghaW1hZ2UgfHwgaW1h
Z2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1h
Z2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVkSW1hZ2UtPnJlcmVxdWVzdFVuaXF1ZUlt
YWdlUmVzb3VyY2UodGhpcyk7CisjZW5kaWYKK30KKwogYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRM
YXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIq
IGxheWVycywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCkKIHsKICAgICBMYXlvdXRSZWN0IHJlbmRl
cmVyUmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9u
IDkzODYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTAsNiArNDEwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVk
c1ByZWZlcnJlZFdpZHRoc1JlY2FsY3VsYXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNS
YXRpbyAqLywgYm9vbCYgLyogaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSAqLykgY29uc3QgeyB9
CiAKKyAgICB2b2lkIHJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2VJZk5lZWRlZChDYWNoZWRJ
bWFnZSopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlLmgJKHJldmlzaW9uIDkzODYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxp
ZXIpIDogSW50U2l6ZSgpOyB9CiAKICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDkzODYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlKG9ic2VydmVyKSk7CiAgICAg
fQogCisgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+U1ZHSW1hZ2UoKTsKIAo=
</data>
<flag name="commit-queue"
          id="101584"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105595</attachid>
            <date>2011-08-30 01:58:53 -0700</date>
            <delta_ts>2011-08-30 02:00:31 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>FirstImageSplit-v2.diff</filename>
            <type>text/plain</type>
            <size>14320</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDgtMzAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBTVkcg
aW1hZ2UgaW50cmluc2ljIHNpemUgbmVnb3RpYXRpb246IFN0b3Agc2hhcmluZyBTVkdJbWFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MDg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBzaGFy
aW5nIFNWR0ltYWdlcywgdGhleSBoYXZlIHRvIGJlIHVuaXF1ZSBhcyB0aGVpciBpbnRyaW5zaWMg
c2l6ZSBpcyBnaXZlbiBieSB0aGUgc2l6ZSBvZiB0aGUgYm94IHRoYXQgZW1iZWRzIGl0LgorICAg
ICAgICBEZXRlcm1pbmluZyB0aGF0IHNpemUgaGFzIHRvIGJlIGRvbmUgaW5kaXZpZHVhbGx5IGZv
ciBodG1sOmltZy9zdmc6aW1nL2JhY2tncm91bmQtaW1hZ2UvYm9yZGVyLWltYWdlLgorCisgICAg
ICAgIENvbnNpZGVyIGEgSFRNTCBkb2N1bWVudCB3aGljaCBlbWJlZHMgJ2Zvby5zdmcnIHR3aWNl
IHVzaW5nIHR3byA8aHRtbDppbWc+IGVsZW1lbnRzLgorICAgICAgICA8aW1nIGlkPSJpbWcxIiBz
cmM9ImZvby5zdmciIHN0eWxlPSJ3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4Ij4KKyAgICAgICAg
PGltZyBpZD0iaW1nMiIgc3JjPSJmb28uc3ZnIiBzdHlsZT0id2lkdGg6IDMycHg7IGhlaWdodDog
MzJweCI+CisKKyAgICAgICAgV2hlbiBpbWcxcyBzcmMgYXR0cmlidXRlIGlzIHBhcnNlZCwgdGhl
IEltYWdlTG9hZGVyIHdpbGwgYmUgaW52b2tlZCwgd2hpY2ggcmVxdWVzdHMgYSBuZXcgQ2FjaGVk
SW1hZ2UgdGhyb3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgVGhlIENhY2hlZElt
YWdlIG9iamVjdCBpcyBmcmVzaGx5IGNyZWF0ZWQsIGFuZCB3YWl0cyBmb3IgZGF0YS4gKEF0IHRo
aXMgcG9pbnQgaXQncyBpbXBvc3NpYmxlIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhlIENhY2hlZElt
YWdlCisgICAgICAgIHJlZmVyZW5jZXMgYSBTVkcgaW1hZ2Ugb3Igbm90LCB3ZSBoYXZlIHRvIHdh
aXQgZm9yIHRoZSBmaXJzdCBkYXRhIHRvIGJlIGFibGUgdG8ganVkZ2UuLi4pLgorICAgICAgICBJ
bW1lZGlhdGVseSBhZnRlcndhcmRzICh0eXBpY2FsbHkgYmVmb3JlIGltZzEgcmVjZWl2ZXMgZGF0
YSksIGltZzIgaXMgcGFyc2VkLCBhbmQgdGhlIENhY2hlZFJlc291cmNlTG9hZGVyIGlzIGludm9r
ZWQgZm9yIHRoZQorICAgICAgICBzYW1lIHJlc291cmNlLCB3aGljaCBpbiB0dXJuIGRvZXMgTk9U
IHN0YXJ0IGEgbmV3IGxvYWQsIGJ1dCByZXVzZXMgdGhlIGV4aXN0aW5nIHJlc291cmNlIGluIHRo
ZSBNZW1vcnlDYWNoZS4KKworICAgICAgICBBcyBzb29uIGFzIGRhdGEgcmVjZWl2ZXMsIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpIGlzIGNhbGxlZCB3aGljaCB3aWxsIGNyZWF0ZSBhbiB1bmRl
cmx5aW5nIFNWR0ltYWdlIG9iamVjdCwgaWYgdGhlIHJlc3BvbnNlCisgICAgICAgIG1pbWV0eXBl
IGlzIFNWRy4gQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBTVkdJbWFnZSwg
dGhhdCdzIHNoYXJlZCBieSBtdWx0aXBsZSBjbGllbnRzLgorCisgICAgICAgIElmIHRoZSBpbWFn
ZSBhcnJpdmVkIGNvbXBsZXRseSwgaW1hZ2VDaGFuZ2VkKCkgY2FsbHMgd2lsbCBiZSB0cmlnZ2Vy
ZWQgb24gYWxsIENhY2hlZFJlc291cmNlQ2xpZW50cywgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz
b3VyY2UuCisgICAgICAgIFdlIGludGVyY2VwdCB0aGVzZSBjYWxscyBpbiBSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZCgpIC0gZm9yIFNWRyBpbWFnZXMgd2UnbGwgbm93IHdhbGsgdGhlIGxpc3Qgb2Yg
Y2xpZW50cywgYW5kIG1ha2UgZWFjaCBvZiB0aGVtCisgICAgICAgIHJlLXJlcXVlc3QgYW4gdW5p
cXVlIGltYWdlIHJlc291cmNlIC0gdGhpcyBpcyBuZWVkZWQsIHVuZm9ydHVuYXRlbHksIGFzIHRo
ZSBTVkcgaW1hZ2UgaW50cmluc2ljIHNpemUgZGVwZW5kcyBvbiB0aGUgaW1hZ2UgY29udGFpbmVy
CisgICAgICAgIHNpemUuIEkgdHJpZWQgb3RoZXIgaGFja3Mgb2YgbWFpbnRhaW5pbmcgYSBIYXNo
TWFwIHdpdGggdGhlIGNvbnRhaW5lciBzaXplcyBwZXIgY2xpZW50LCB0aG91Z2ggdGhhdCdzIHJl
YWxseSB0cmlja3kgdG8gZG8uCisgICAgICAgIFRoaXMgaXMgdGhlIGxlc3MgZGFuZ2Vyb3VzIHdh
eSBvZiBkb2luZyB0aGlzIQorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cyBhdCBw
cmVzZW50LCBhcyB0aGUgbmV3IFNWRyBpbWFnZSBzaXplIG5lZ290aWF0aW9uIGxvZ2ljIGlzIG5v
dCB5ZXQgYWRkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBB
ZGQgcG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRl
ZWQgdG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOiBBZGQgdmlydHVhbCByZXJlcXVlc3RVbmlxdWVJ
bWFnZVJlc291cmNlIG1ldGhvZCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGluIENhY2hl
ZFJlc291cmNlQ2xpZW50LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBBZGQg
cG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRlZWQg
dG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnNob3VsZFNoYXJlUmVzb3VyY2UpOiBSZXR1cm5zIHRydWUsIGlmIHRoaXMgcmVzb3Vy
Y2UgY2FuIGJlIHNoYXJlZCAodHJ1ZSwgZm9yIGFsbCBpbWFnZXMgYnV0IFNWRyBpbWFnZXMpLgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3Vy
Y2UpOiBBZGQgZGVmYXVsdCBzdHViIG1ldGhvZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6IEZvcmNlIHJlbG9hZGluZyBjYWNo
ZWQgaW1hZ2VzLCB0aGF0IGFyZSBtYXJrZWQgdG8gYmUgdW5pcXVlLCBub3Qgc2hhcmFibGUuIFRo
YXQncyB0cnVlIGZvciBhbGwgU1ZHIGltYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmlzU1ZHSW1hZ2UpOiBBZGQgdmly
dHVhbCBpc1NWR0ltYWdlKCkgZnVuY3Rpb24sIHJldHVybnMgZmFsc2UgcGVyIGRlZmF1bHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmltYWdlQ2hhbmdlZCk6IENhbGwgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlm
TmVlZGVkLCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcmVxdWVz
dFVuaXF1ZUltYWdlUmVzb3VyY2VJZk5lZWRlZCk6IElmIHRoZSBTVkcgaW1hZ2VzIGhhcyBtdWx0
aXBsZSBjbGllbnRzLCBmb3JjZSByZWNyZWF0aW9uIG9mIHVuaXF1ZSByZXNvdXJjZXMgZm9yIGVh
Y2guCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlOjpyZW5kZXJlcik6IEFkZCBhY2Nlc3NvciBmb3IgdGhlIHN0b3JlZCBSZW5kZXJPYmpl
Y3QuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6aXNTVkdJbWFnZSk6IFJldHVybiB0cnVlLgorCiAyMDExLTA4LTI5ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRvdWNoIEludGVybmFscy5j
cHAgaW4gYW4gYXR0ZW1wdCB0byBmaXggR1RLKyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDIwIEBA
IHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiAKICAgICAgICAgaW1hZ2VS
ZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6cmVyZXF1
ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogb3JpZ2lu
YXRpbmdDbGllbnQpCit7CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9
IHJlbmRlckltYWdlUmVzb3VyY2UoKTsKKyAgICBpZiAoIWltYWdlUmVzb3VyY2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChpbWFnZVJlc291cmNlLT5yZW5kZXJlcigpID09IG9yaWdpbmF0
aW5nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVGcm9tRWxlbWVudCgpOwor
ICAgIGlmIChtX2ltYWdlKQorICAgICAgICBpbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlLmdldCgpKTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogewogICAgIC8vIElmIHdlJ3JlIG5vdCBtYWtpbmcgcmVuZGVyZXJzIGZvciB0aGUgcGFnZSwg
dGhlbiBkb24ndCBsb2FkIGltYWdlcy4gIFdlIGRvbid0IHdhbnQgdG8gc2xvdwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIC8vIGxvYWRpbmcgaWYgYSBsb2FkIGhhc24ndCBhbHJlYWR5IGJlZW4g
c3RhcnRlZC4KICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVu
dCogb3JpZ2luYXRpbmdDbGllbnQpOworCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
Y2FsbGVkIHdoZW5ldmVyIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgc2V0LCBldmVuIGlmIGl0cyB2
YWx1ZQogICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMgbmV3IGxvYWQgdW5jb25kaXRpb25h
bGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2aW9yKS4KICAgICB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsNyBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgUmVzb3VyY2VS
CiAgICAgLCBtX2ltYWdlKDApCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlz
LCAmQ2FjaGVkSW1hZ2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKQogICAgICwgbV9z
aG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCisgICAgLCBtX3Nob3VsZFNoYXJlUmVzb3VyY2Uo
dHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7CiB9CkBAIC0yMTIsNiArMjEzLDE1IEBA
IEludFJlY3QgQ2FjaGVkSW1hZ2U6OmltYWdlUmVjdChmbG9hdCBtdWwKICAgICByZXR1cm4gSW50
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6cmVyZXF1
ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogb3JpZ2lu
YXRpbmdDbGllbnQpCit7CisgICAgQVNTRVJUKG1fc2hvdWxkU2hhcmVSZXNvdXJjZSk7CisgICAg
bV9zaG91bGRTaGFyZVJlc291cmNlID0gZmFsc2U7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIgdyhtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogYyA9
IHcubmV4dCgpKQorICAgICAgICBjLT5yZXJlcXVlc3RVbmlxdWVJbWFnZVJlc291cmNlKG9yaWdp
bmF0aW5nQ2xpZW50KTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIgdyhtX2NsaWVudHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CiAKKyAgICB2b2lkIHJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2Uo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIG9yaWdpbmF0aW5nQ2xpZW50KTsKKwogICAgIElt
YWdlKiBpbWFnZSgpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1h
Z2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UuZ2V0KCk7IH0KIApAQCAtNzUsNiArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyKCk7CiAgICAgCisgICAgYm9vbCBzaG91bGRTaGFyZVJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRTaGFyZVJlc291cmNlOyB9CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93
biAmJiAhaXNMb2FkaW5nKCk7IH0KICAgICB2b2lkIGxvYWQoKTsKIApAQCAtOTgsNiArMTAxLDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgVGltZXI8Q2FjaGVk
SW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogICAgIGJvb2wgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlOworICAgIGJvb2wgbV9zaG91bGRTaGFyZVJlc291cmNlOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50LmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiAgICAg
Y2xhc3MgQ2FjaGVkRm9udDsKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKKyAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBJ
bWFnZTsKICAgICBjbGFzcyBJbnRSZWN0OwpAQCAtNjAsNiArNjEsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIGUuZy4sIGluIHRoZSBiL2YgY2FjaGUgb3IgaW4gYSBiYWNrZ3Jv
dW5kIHRhYikuCiAgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1h
Z2UqKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXJlcXVlc3RV
bmlxdWVJbWFnZVJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50KiAvKiBvcmlnaW5h
dGluZ0NsaWVudCAqLykgeyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBj
b25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAv
KiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNo
ZWV0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCop
IHt9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKQEAgLTQ0Nyw2ICs0NDgsMTggQEAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJldmFsaWRhdGlvblBvbGljeQogICAgICAgICByZXR1cm4gUmVsb2FkOwogICAgIH0KICAg
ICAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIC8vIEZvcmNlIHJlbG9hZGluZyBTVkcgaW1hZ2VzLCBh
cyB0aGVpciBpbnN0cmluY2ljIHNpemUgbWF5IGRlcGVuZCBvbiB0aGUgaG9zdCBkb2N1bWVudC4K
KyAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlKSB7CisgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHN0YXRpY19j
YXN0PENhY2hlZEltYWdlKj4oZXhpc3RpbmdSZXNvdXJjZSk7CisgICAgICAgIGlmICghY2FjaGVk
SW1hZ2UtPnNob3VsZFNoYXJlUmVzb3VyY2UoKSkgeworICAgICAgICAgICAgSW1hZ2UqIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ut
PmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVsb2FkOworICAgICAgICB9
CisgICAgfQorI2VuZGlmCisKICAgICAvLyBEb24ndCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBh
c3RpbmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJlc291cmNlcykKICAgICAgICAgcmV0dXJuIFVz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNp
b24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7IAogCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFw
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0lt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZy
YW1lSGFzQWxwaGEoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2Vz
IHNob3VsZCBvdmVycmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjEsNiArMTAyMSw5IEBAIHZvaWQgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWcK
ICAgICBpZiAoIXBhcmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGltYWdlKTsKKyAgICByZXJl
cXVlc3RVbmlxdWVJbWFnZVJlc291cmNlSWZOZWVkZWQoY2FjaGVkSW1hZ2UpOworCiAgICAgaWYg
KChzdHlsZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgJiYgc3R5bGUoKS0+Ym9yZGVySW1hZ2Uo
KS5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHx8CiAgICAgICAgIChzdHlsZSgpLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCktPmRhdGEo
KSA9PSBpbWFnZSkpIHsKICAgICAgICAgcmVwYWludCgpOwpAQCAtMTAzMSwxMyArMTAzNCwzMyBA
QCB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnCiAgICAgaWYgKCFkaWRG
dWxsUmVwYWludCkKICAgICAgICAgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShpbWFnZSwgc3R5
bGUoKS0+bWFza0xheWVycygpLCBmYWxzZSk7CiAKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5oYXNDb21wb3NpdGVkTWFz
aygpICYmIGxheWVyc1VzZUltYWdlKGltYWdlLCBzdHlsZSgpLT5tYXNrTGF5ZXJzKCkpKQogICAg
ICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChSZW5kZXJMYXllcjo6TWFza0ltYWdlQ2hhbmdl
ZCk7CiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJCb3g6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVz
b3VyY2VJZk5lZWRlZChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCit7CisgICAgaWYgKCFjYWNo
ZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKFNWRykKKyAgICB1bnNpZ25l
ZCBjb3VudCA9IGNhY2hlZEltYWdlLT5jb3VudCgpOworICAgIGlmIChjb3VudCA8PSAxKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBTVkcgSW1hZ2VzIGhhdmUgdG8gYmUgdW5pcXVlLCBhcyB0
aGVpciBfaW50cmluc2ljXyBzaXplIG1heSBkZXBlbmQgb24gdGhlIGhvc3QgZG9jdW1lbnQgaXRz
ZWxmIQorICAgIC8vIElmIG11bHRpcGxlIGltYWdlcyByZWZlcmVuY2UgdGhpcyByZXNvdXJjZSwg
YW5kIGl0IHR1cm5zIG91dCB0byBiZSBhIFNWRyBJbWFnZSB3ZSBoYXZlIHRvIG1ha2UgZWFjaCBv
ZiB0aGVtIHVuaXF1ZS4KKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CisgICAgaWYgKCFpbWFnZSB8fCBpbWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChpbWFnZS0+aXNTVkdJbWFnZSgpKQorICAgICAgICBj
YWNoZWRJbWFnZS0+cmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZSh0aGlzKTsKKyNlbmRpZgor
fQorCiBib29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3Jv
dW5kKQogewogICAgIExheW91dFJlY3QgcmVuZGVyZXJSZWN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlv
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbihGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovLCBib29sJiAvKiBpc1BlcmNlbnRh
Z2VJbnRyaW5zaWNTaXplICovKSBjb25zdCB7IH0KIAorICAgIHZvaWQgcmVyZXF1ZXN0VW5pcXVl
SW1hZ2VSZXNvdXJjZUlmTmVlZGVkKENhY2hlZEltYWdlKik7CisKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaAkocmV2aXNpb24gOTQwNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VT
aXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KIAogICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZS5nZXQoKTsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZVJlc291cmNlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gOTQw
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5T
VkdJbWFnZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105601</attachid>
            <date>2011-08-30 02:17:05 -0700</date>
            <delta_ts>2011-08-30 02:58:08 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>FirstImageSplit-v3.diff</filename>
            <type>text/plain</type>
            <size>14359</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDgtMzAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBTVkcg
aW1hZ2UgaW50cmluc2ljIHNpemUgbmVnb3RpYXRpb246IFN0b3Agc2hhcmluZyBTVkdJbWFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MDg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBzaGFy
aW5nIFNWR0ltYWdlcywgdGhleSBoYXZlIHRvIGJlIHVuaXF1ZSBhcyB0aGVpciBpbnRyaW5zaWMg
c2l6ZSBpcyBnaXZlbiBieSB0aGUgc2l6ZSBvZiB0aGUgYm94IHRoYXQgZW1iZWRzIGl0LgorICAg
ICAgICBEZXRlcm1pbmluZyB0aGF0IHNpemUgaGFzIHRvIGJlIGRvbmUgaW5kaXZpZHVhbGx5IGZv
ciBodG1sOmltZy9zdmc6aW1nL2JhY2tncm91bmQtaW1hZ2UvYm9yZGVyLWltYWdlLgorCisgICAg
ICAgIENvbnNpZGVyIGEgSFRNTCBkb2N1bWVudCB3aGljaCBlbWJlZHMgJ2Zvby5zdmcnIHR3aWNl
IHVzaW5nIHR3byA8aHRtbDppbWc+IGVsZW1lbnRzLgorICAgICAgICA8aW1nIGlkPSJpbWcxIiBz
cmM9ImZvby5zdmciIHN0eWxlPSJ3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4Ij4KKyAgICAgICAg
PGltZyBpZD0iaW1nMiIgc3JjPSJmb28uc3ZnIiBzdHlsZT0id2lkdGg6IDMycHg7IGhlaWdodDog
MzJweCI+CisKKyAgICAgICAgV2hlbiBpbWcxcyBzcmMgYXR0cmlidXRlIGlzIHBhcnNlZCwgdGhl
IEltYWdlTG9hZGVyIHdpbGwgYmUgaW52b2tlZCwgd2hpY2ggcmVxdWVzdHMgYSBuZXcgQ2FjaGVk
SW1hZ2UgdGhyb3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgVGhlIENhY2hlZElt
YWdlIG9iamVjdCBpcyBmcmVzaGx5IGNyZWF0ZWQsIGFuZCB3YWl0cyBmb3IgZGF0YS4gKEF0IHRo
aXMgcG9pbnQgaXQncyBpbXBvc3NpYmxlIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhlIENhY2hlZElt
YWdlCisgICAgICAgIHJlZmVyZW5jZXMgYSBTVkcgaW1hZ2Ugb3Igbm90LCB3ZSBoYXZlIHRvIHdh
aXQgZm9yIHRoZSBmaXJzdCBkYXRhIHRvIGJlIGFibGUgdG8ganVkZ2UuLi4pLgorICAgICAgICBJ
bW1lZGlhdGVseSBhZnRlcndhcmRzICh0eXBpY2FsbHkgYmVmb3JlIGltZzEgcmVjZWl2ZXMgZGF0
YSksIGltZzIgaXMgcGFyc2VkLCBhbmQgdGhlIENhY2hlZFJlc291cmNlTG9hZGVyIGlzIGludm9r
ZWQgZm9yIHRoZQorICAgICAgICBzYW1lIHJlc291cmNlLCB3aGljaCBpbiB0dXJuIGRvZXMgTk9U
IHN0YXJ0IGEgbmV3IGxvYWQsIGJ1dCByZXVzZXMgdGhlIGV4aXN0aW5nIHJlc291cmNlIGluIHRo
ZSBNZW1vcnlDYWNoZS4KKworICAgICAgICBBcyBzb29uIGFzIGRhdGEgcmVjZWl2ZXMsIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpIGlzIGNhbGxlZCB3aGljaCB3aWxsIGNyZWF0ZSBhbiB1bmRl
cmx5aW5nIFNWR0ltYWdlIG9iamVjdCwgaWYgdGhlIHJlc3BvbnNlCisgICAgICAgIG1pbWV0eXBl
IGlzIFNWRy4gQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBTVkdJbWFnZSwg
dGhhdCdzIHNoYXJlZCBieSBtdWx0aXBsZSBjbGllbnRzLgorCisgICAgICAgIElmIHRoZSBpbWFn
ZSBhcnJpdmVkIGNvbXBsZXRseSwgaW1hZ2VDaGFuZ2VkKCkgY2FsbHMgd2lsbCBiZSB0cmlnZ2Vy
ZWQgb24gYWxsIENhY2hlZFJlc291cmNlQ2xpZW50cywgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz
b3VyY2UuCisgICAgICAgIFdlIGludGVyY2VwdCB0aGVzZSBjYWxscyBpbiBSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZCgpIC0gZm9yIFNWRyBpbWFnZXMgd2UnbGwgbm93IHdhbGsgdGhlIGxpc3Qgb2Yg
Y2xpZW50cywgYW5kIG1ha2UgZWFjaCBvZiB0aGVtCisgICAgICAgIHJlLXJlcXVlc3QgYW4gdW5p
cXVlIGltYWdlIHJlc291cmNlIC0gdGhpcyBpcyBuZWVkZWQsIHVuZm9ydHVuYXRlbHksIGFzIHRo
ZSBTVkcgaW1hZ2UgaW50cmluc2ljIHNpemUgZGVwZW5kcyBvbiB0aGUgaW1hZ2UgY29udGFpbmVy
CisgICAgICAgIHNpemUuIEkgdHJpZWQgb3RoZXIgaGFja3Mgb2YgbWFpbnRhaW5pbmcgYSBIYXNo
TWFwIHdpdGggdGhlIGNvbnRhaW5lciBzaXplcyBwZXIgY2xpZW50LCB0aG91Z2ggdGhhdCdzIHJl
YWxseSB0cmlja3kgdG8gZG8uCisgICAgICAgIFRoaXMgaXMgdGhlIGxlc3MgZGFuZ2Vyb3VzIHdh
eSBvZiBkb2luZyB0aGlzIQorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cyBhdCBw
cmVzZW50LCBhcyB0aGUgbmV3IFNWRyBpbWFnZSBzaXplIG5lZ290aWF0aW9uIGxvZ2ljIGlzIG5v
dCB5ZXQgYWRkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBB
ZGQgcG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRl
ZWQgdG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOiBBZGQgdmlydHVhbCByZXJlcXVlc3RVbmlxdWVJ
bWFnZVJlc291cmNlIG1ldGhvZCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGluIENhY2hl
ZFJlc291cmNlQ2xpZW50LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBBZGQg
cG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRlZWQg
dG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnNob3VsZFNoYXJlUmVzb3VyY2UpOiBSZXR1cm5zIHRydWUsIGlmIHRoaXMgcmVzb3Vy
Y2UgY2FuIGJlIHNoYXJlZCAodHJ1ZSwgZm9yIGFsbCBpbWFnZXMgYnV0IFNWRyBpbWFnZXMpLgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3Vy
Y2UpOiBBZGQgZGVmYXVsdCBzdHViIG1ldGhvZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6IEZvcmNlIHJlbG9hZGluZyBjYWNo
ZWQgaW1hZ2VzLCB0aGF0IGFyZSBtYXJrZWQgdG8gYmUgdW5pcXVlLCBub3Qgc2hhcmFibGUuIFRo
YXQncyB0cnVlIGZvciBhbGwgU1ZHIGltYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmlzU1ZHSW1hZ2UpOiBBZGQgdmly
dHVhbCBpc1NWR0ltYWdlKCkgZnVuY3Rpb24sIHJldHVybnMgZmFsc2UgcGVyIGRlZmF1bHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmltYWdlQ2hhbmdlZCk6IENhbGwgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlm
TmVlZGVkLCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcmVxdWVz
dFVuaXF1ZUltYWdlUmVzb3VyY2VJZk5lZWRlZCk6IElmIHRoZSBTVkcgaW1hZ2VzIGhhcyBtdWx0
aXBsZSBjbGllbnRzLCBmb3JjZSByZWNyZWF0aW9uIG9mIHVuaXF1ZSByZXNvdXJjZXMgZm9yIGVh
Y2guCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlOjpyZW5kZXJlcik6IEFkZCBhY2Nlc3NvciBmb3IgdGhlIHN0b3JlZCBSZW5kZXJPYmpl
Y3QuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6aXNTVkdJbWFnZSk6IFJldHVybiB0cnVlLgorCiAyMDExLTA4LTI5ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRvdWNoIEludGVybmFscy5j
cHAgaW4gYW4gYXR0ZW1wdCB0byBmaXggR1RLKyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDIwIEBA
IHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiAKICAgICAgICAgaW1hZ2VS
ZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6cmVyZXF1
ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogb3JpZ2lu
YXRpbmdDbGllbnQpCit7CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9
IHJlbmRlckltYWdlUmVzb3VyY2UoKTsKKyAgICBpZiAoIWltYWdlUmVzb3VyY2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChpbWFnZVJlc291cmNlLT5yZW5kZXJlcigpID09IG9yaWdpbmF0
aW5nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVGcm9tRWxlbWVudCgpOwor
ICAgIGlmIChtX2ltYWdlKQorICAgICAgICBpbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlLmdldCgpKTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogewogICAgIC8vIElmIHdlJ3JlIG5vdCBtYWtpbmcgcmVuZGVyZXJzIGZvciB0aGUgcGFnZSwg
dGhlbiBkb24ndCBsb2FkIGltYWdlcy4gIFdlIGRvbid0IHdhbnQgdG8gc2xvdwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIC8vIGxvYWRpbmcgaWYgYSBsb2FkIGhhc24ndCBhbHJlYWR5IGJlZW4g
c3RhcnRlZC4KICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVu
dCogb3JpZ2luYXRpbmdDbGllbnQpOworCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
Y2FsbGVkIHdoZW5ldmVyIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgc2V0LCBldmVuIGlmIGl0cyB2
YWx1ZQogICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMgbmV3IGxvYWQgdW5jb25kaXRpb25h
bGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2aW9yKS4KICAgICB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsNyBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgUmVzb3VyY2VS
CiAgICAgLCBtX2ltYWdlKDApCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlz
LCAmQ2FjaGVkSW1hZ2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKQogICAgICwgbV9z
aG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCisgICAgLCBtX3Nob3VsZFNoYXJlUmVzb3VyY2Uo
dHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7CiB9CkBAIC0yMTIsNiArMjEzLDE1IEBA
IEludFJlY3QgQ2FjaGVkSW1hZ2U6OmltYWdlUmVjdChmbG9hdCBtdWwKICAgICByZXR1cm4gSW50
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6cmVyZXF1
ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogb3JpZ2lu
YXRpbmdDbGllbnQpCit7CisgICAgQVNTRVJUKG1fc2hvdWxkU2hhcmVSZXNvdXJjZSk7CisgICAg
bV9zaG91bGRTaGFyZVJlc291cmNlID0gZmFsc2U7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIgdyhtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogYyA9
IHcubmV4dCgpKQorICAgICAgICBjLT5yZXJlcXVlc3RVbmlxdWVJbWFnZVJlc291cmNlKG9yaWdp
bmF0aW5nQ2xpZW50KTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIgdyhtX2NsaWVudHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CiAKKyAgICB2b2lkIHJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2Uo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIG9yaWdpbmF0aW5nQ2xpZW50KTsKKwogICAgIElt
YWdlKiBpbWFnZSgpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1h
Z2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UuZ2V0KCk7IH0KIApAQCAtNzUsNiArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyKCk7CiAgICAgCisgICAgYm9vbCBzaG91bGRTaGFyZVJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRTaGFyZVJlc291cmNlOyB9CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93
biAmJiAhaXNMb2FkaW5nKCk7IH0KICAgICB2b2lkIGxvYWQoKTsKIApAQCAtOTgsNiArMTAxLDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgVGltZXI8Q2FjaGVk
SW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogICAgIGJvb2wgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlOworICAgIGJvb2wgbV9zaG91bGRTaGFyZVJlc291cmNlOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50LmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiAgICAg
Y2xhc3MgQ2FjaGVkRm9udDsKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKKyAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBJ
bWFnZTsKICAgICBjbGFzcyBJbnRSZWN0OwpAQCAtNjAsNiArNjEsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIGUuZy4sIGluIHRoZSBiL2YgY2FjaGUgb3IgaW4gYSBiYWNrZ3Jv
dW5kIHRhYikuCiAgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1h
Z2UqKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXJlcXVlc3RV
bmlxdWVJbWFnZVJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50KiAvKiBvcmlnaW5h
dGluZ0NsaWVudCAqLykgeyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBj
b25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAv
KiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNo
ZWV0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCop
IHt9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKQEAgLTQ0Nyw2ICs0NDgsMTggQEAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJldmFsaWRhdGlvblBvbGljeQogICAgICAgICByZXR1cm4gUmVsb2FkOwogICAgIH0KICAg
ICAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIC8vIEZvcmNlIHJlbG9hZGluZyBTVkcgaW1hZ2VzLCBh
cyB0aGVpciBpbnN0cmluY2ljIHNpemUgbWF5IGRlcGVuZCBvbiB0aGUgaG9zdCBkb2N1bWVudC4K
KyAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlKSB7CisgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHN0YXRpY19j
YXN0PENhY2hlZEltYWdlKj4oZXhpc3RpbmdSZXNvdXJjZSk7CisgICAgICAgIGlmICghY2FjaGVk
SW1hZ2UtPnNob3VsZFNoYXJlUmVzb3VyY2UoKSkgeworICAgICAgICAgICAgSW1hZ2UqIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ut
PmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVsb2FkOworICAgICAgICB9
CisgICAgfQorI2VuZGlmCisKICAgICAvLyBEb24ndCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBh
c3RpbmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJlc291cmNlcykKICAgICAgICAgcmV0dXJuIFVz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNp
b24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7IAogCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFw
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0lt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZy
YW1lSGFzQWxwaGEoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2Vz
IHNob3VsZCBvdmVycmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjEsNiArMTAyMSw5IEBAIHZvaWQgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWcK
ICAgICBpZiAoIXBhcmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGltYWdlKTsKKyAgICByZXJl
cXVlc3RVbmlxdWVJbWFnZVJlc291cmNlSWZOZWVkZWQoY2FjaGVkSW1hZ2UpOworCiAgICAgaWYg
KChzdHlsZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgJiYgc3R5bGUoKS0+Ym9yZGVySW1hZ2Uo
KS5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHx8CiAgICAgICAgIChzdHlsZSgpLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCktPmRhdGEo
KSA9PSBpbWFnZSkpIHsKICAgICAgICAgcmVwYWludCgpOwpAQCAtMTAzMSwxMyArMTAzNCwzMyBA
QCB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnCiAgICAgaWYgKCFkaWRG
dWxsUmVwYWludCkKICAgICAgICAgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShpbWFnZSwgc3R5
bGUoKS0+bWFza0xheWVycygpLCBmYWxzZSk7CiAKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5oYXNDb21wb3NpdGVkTWFz
aygpICYmIGxheWVyc1VzZUltYWdlKGltYWdlLCBzdHlsZSgpLT5tYXNrTGF5ZXJzKCkpKQogICAg
ICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChSZW5kZXJMYXllcjo6TWFza0ltYWdlQ2hhbmdl
ZCk7CiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJCb3g6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVz
b3VyY2VJZk5lZWRlZChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCit7CisgICAgaWYgKCFjYWNo
ZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPnNob3VsZFNoYXJlUmVzb3VyY2UoKSkKKyAgICAgICAg
cmV0dXJuOworCisjaWYgRU5BQkxFKFNWRykKKyAgICB1bnNpZ25lZCBjb3VudCA9IGNhY2hlZElt
YWdlLT5jb3VudCgpOworICAgIGlmIChjb3VudCA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBTVkcgSW1hZ2VzIGhhdmUgdG8gYmUgdW5pcXVlLCBhcyB0aGVpciBfaW50cmluc2ljXyBz
aXplIG1heSBkZXBlbmQgb24gdGhlIGhvc3QgZG9jdW1lbnQgaXRzZWxmIQorICAgIC8vIElmIG11
bHRpcGxlIGltYWdlcyByZWZlcmVuY2UgdGhpcyByZXNvdXJjZSwgYW5kIGl0IHR1cm5zIG91dCB0
byBiZSBhIFNWRyBJbWFnZSB3ZSBoYXZlIHRvIG1ha2UgZWFjaCBvZiB0aGVtIHVuaXF1ZS4KKyAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgaWYgKCFp
bWFnZSB8fCBpbWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChpbWFnZS0+aXNTVkdJbWFnZSgpKQorICAgICAgICBjYWNoZWRJbWFnZS0+cmVyZXF1
ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZSh0aGlzKTsKKyNlbmRpZgorfQorCiBib29sIFJlbmRlckJv
eDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0
IEZpbGxMYXllciogbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKQogewogICAgIExheW91
dFJlY3QgcmVuZGVyZXJSZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbigpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIC8q
IGludHJpbnNpY1JhdGlvICovLCBib29sJiAvKiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplICov
KSBjb25zdCB7IH0KIAorICAgIHZvaWQgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlmTmVl
ZGVkKENhY2hlZEltYWdlKik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuaAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNp
emUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KIAogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdl
UHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAK
IHByb3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZVJlc291cmNlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHSW1hZ2Uob2JzZXJ2
ZXIpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5TVkdJbWFnZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105604</attachid>
            <date>2011-08-30 02:58:08 -0700</date>
            <delta_ts>2011-10-05 06:35:05 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>FirstImageSplit-v4.diff</filename>
            <type>text/plain</type>
            <size>15087</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDgtMzAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBTVkcg
aW1hZ2UgaW50cmluc2ljIHNpemUgbmVnb3RpYXRpb246IFN0b3Agc2hhcmluZyBTVkdJbWFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MDg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBzaGFy
aW5nIFNWR0ltYWdlcywgdGhleSBoYXZlIHRvIGJlIHVuaXF1ZSBhcyB0aGVpciBpbnRyaW5zaWMg
c2l6ZSBpcyBnaXZlbiBieSB0aGUgc2l6ZSBvZiB0aGUgYm94IHRoYXQgZW1iZWRzIGl0LgorICAg
ICAgICBEZXRlcm1pbmluZyB0aGF0IHNpemUgaGFzIHRvIGJlIGRvbmUgaW5kaXZpZHVhbGx5IGZv
ciBodG1sOmltZy9zdmc6aW1nL2JhY2tncm91bmQtaW1hZ2UvYm9yZGVyLWltYWdlLgorCisgICAg
ICAgIENvbnNpZGVyIGEgSFRNTCBkb2N1bWVudCB3aGljaCBlbWJlZHMgJ2Zvby5zdmcnIHR3aWNl
IHVzaW5nIHR3byA8aHRtbDppbWc+IGVsZW1lbnRzLgorICAgICAgICA8aW1nIGlkPSJpbWcxIiBz
cmM9ImZvby5zdmciIHN0eWxlPSJ3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4Ij4KKyAgICAgICAg
PGltZyBpZD0iaW1nMiIgc3JjPSJmb28uc3ZnIiBzdHlsZT0id2lkdGg6IDMycHg7IGhlaWdodDog
MzJweCI+CisKKyAgICAgICAgV2hlbiBpbWcxcyBzcmMgYXR0cmlidXRlIGlzIHBhcnNlZCwgdGhl
IEltYWdlTG9hZGVyIHdpbGwgYmUgaW52b2tlZCwgd2hpY2ggcmVxdWVzdHMgYSBuZXcgQ2FjaGVk
SW1hZ2UgdGhyb3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgVGhlIENhY2hlZElt
YWdlIG9iamVjdCBpcyBmcmVzaGx5IGNyZWF0ZWQsIGFuZCB3YWl0cyBmb3IgZGF0YS4gKEF0IHRo
aXMgcG9pbnQgaXQncyBpbXBvc3NpYmxlIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhlIENhY2hlZElt
YWdlCisgICAgICAgIHJlZmVyZW5jZXMgYSBTVkcgaW1hZ2Ugb3Igbm90LCB3ZSBoYXZlIHRvIHdh
aXQgZm9yIHRoZSBmaXJzdCBkYXRhIHRvIGJlIGFibGUgdG8ganVkZ2UuLi4pLgorICAgICAgICBJ
bW1lZGlhdGVseSBhZnRlcndhcmRzICh0eXBpY2FsbHkgYmVmb3JlIGltZzEgcmVjZWl2ZXMgZGF0
YSksIGltZzIgaXMgcGFyc2VkLCBhbmQgdGhlIENhY2hlZFJlc291cmNlTG9hZGVyIGlzIGludm9r
ZWQgZm9yIHRoZQorICAgICAgICBzYW1lIHJlc291cmNlLCB3aGljaCBpbiB0dXJuIGRvZXMgTk9U
IHN0YXJ0IGEgbmV3IGxvYWQsIGJ1dCByZXVzZXMgdGhlIGV4aXN0aW5nIHJlc291cmNlIGluIHRo
ZSBNZW1vcnlDYWNoZS4KKworICAgICAgICBBcyBzb29uIGFzIGRhdGEgcmVjZWl2ZXMsIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpIGlzIGNhbGxlZCB3aGljaCB3aWxsIGNyZWF0ZSBhbiB1bmRl
cmx5aW5nIFNWR0ltYWdlIG9iamVjdCwgaWYgdGhlIHJlc3BvbnNlCisgICAgICAgIG1pbWV0eXBl
IGlzIFNWRy4gQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBTVkdJbWFnZSwg
dGhhdCdzIHNoYXJlZCBieSBtdWx0aXBsZSBjbGllbnRzLgorCisgICAgICAgIElmIHRoZSBpbWFn
ZSBhcnJpdmVkIGNvbXBsZXRseSwgaW1hZ2VDaGFuZ2VkKCkgY2FsbHMgd2lsbCBiZSB0cmlnZ2Vy
ZWQgb24gYWxsIENhY2hlZFJlc291cmNlQ2xpZW50cywgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz
b3VyY2UuCisgICAgICAgIFdlIGludGVyY2VwdCB0aGVzZSBjYWxscyBpbiBSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZCgpIC0gZm9yIFNWRyBpbWFnZXMgd2UnbGwgbm93IHdhbGsgdGhlIGxpc3Qgb2Yg
Y2xpZW50cywgYW5kIG1ha2UgZWFjaCBvZiB0aGVtCisgICAgICAgIHJlLXJlcXVlc3QgYW4gdW5p
cXVlIGltYWdlIHJlc291cmNlIC0gdGhpcyBpcyBuZWVkZWQsIHVuZm9ydHVuYXRlbHksIGFzIHRo
ZSBTVkcgaW1hZ2UgaW50cmluc2ljIHNpemUgZGVwZW5kcyBvbiB0aGUgaW1hZ2UgY29udGFpbmVy
CisgICAgICAgIHNpemUuIEkgdHJpZWQgb3RoZXIgaGFja3Mgb2YgbWFpbnRhaW5pbmcgYSBIYXNo
TWFwIHdpdGggdGhlIGNvbnRhaW5lciBzaXplcyBwZXIgY2xpZW50LCB0aG91Z2ggdGhhdCdzIHJl
YWxseSB0cmlja3kgdG8gZG8uCisgICAgICAgIFRoaXMgaXMgdGhlIGxlc3MgZGFuZ2Vyb3VzIHdh
eSBvZiBkb2luZyB0aGlzIQorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cyBhdCBw
cmVzZW50LCBhcyB0aGUgbmV3IFNWRyBpbWFnZSBzaXplIG5lZ290aWF0aW9uIGxvZ2ljIGlzIG5v
dCB5ZXQgYWRkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBB
ZGQgcG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRl
ZWQgdG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOiBBZGQgdmlydHVhbCByZXJlcXVlc3RVbmlxdWVJ
bWFnZVJlc291cmNlIG1ldGhvZCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGluIENhY2hl
ZFJlc291cmNlQ2xpZW50LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UpOiBBZGQg
cG9zc2liaWxpdHkgdG8gcmUtcmV0cmVpdmUgYSByZXNvdXJjZSwgdGhhdCdzIGd1YXJhbnRlZWQg
dG8gYmUgdW5pcXVlLCBha2EuIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBjbGllbnRzLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnNob3VsZFNoYXJlUmVzb3VyY2UpOiBSZXR1cm5zIHRydWUsIGlmIHRoaXMgcmVzb3Vy
Y2UgY2FuIGJlIHNoYXJlZCAodHJ1ZSwgZm9yIGFsbCBpbWFnZXMgYnV0IFNWRyBpbWFnZXMpLgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3Vy
Y2UpOiBBZGQgZGVmYXVsdCBzdHViIG1ldGhvZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6IEZvcmNlIHJlbG9hZGluZyBjYWNo
ZWQgaW1hZ2VzLCB0aGF0IGFyZSBtYXJrZWQgdG8gYmUgdW5pcXVlLCBub3Qgc2hhcmFibGUuIFRo
YXQncyB0cnVlIGZvciBhbGwgU1ZHIGltYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmlzU1ZHSW1hZ2UpOiBBZGQgdmly
dHVhbCBpc1NWR0ltYWdlKCkgZnVuY3Rpb24sIHJldHVybnMgZmFsc2UgcGVyIGRlZmF1bHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmltYWdlQ2hhbmdlZCk6IENhbGwgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlm
TmVlZGVkLCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcmVxdWVz
dFVuaXF1ZUltYWdlUmVzb3VyY2VJZk5lZWRlZCk6IElmIHRoZSBTVkcgaW1hZ2VzIGhhcyBtdWx0
aXBsZSBjbGllbnRzLCBmb3JjZSByZWNyZWF0aW9uIG9mIHVuaXF1ZSByZXNvdXJjZXMgZm9yIGVh
Y2guCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VD
aGFuZ2VkKTogQ2FsbCByZXJlcXVlc3RVbmlxdWVJbWFnZVJlc291cmNlSWZOZWVkZWQsIGlmIHdl
IGRpZCBub3QgY2FsbCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZCgpLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlOjpyZW5kZXJlcik6IEFkZCBhY2Nlc3NvciBmb3IgdGhlIHN0b3JlZCBSZW5kZXJP
YmplY3QuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6aXNTVkdJbWFnZSk6IFJldHVybiB0cnVlLgorCiAyMDExLTA4LTI5ICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldHVybiB2
YWx1ZSBvZiB3aW5kb3cub25lcnJvciBoYXMgaW52ZXJ0ZWQgc2VtYW50aWNzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYg
KzE0NSwyMCBAQCB2b2lkIEltYWdlTG9hZGVyOjpzZXRJbWFnZShDYWNoZWRJbWFnZSogCiAgICAg
ICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKK3ZvaWQgSW1hZ2VMb2Fk
ZXI6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIG9yaWdpbmF0aW5nQ2xpZW50KQoreworICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdl
UmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCk7CisgICAgaWYgKCFpbWFnZVJlc291cmNl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VSZXNvdXJjZS0+cmVuZGVyZXIoKSA9
PSBvcmlnaW5hdGluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlRnJvbUVs
ZW1lbnQoKTsKKyAgICBpZiAobV9pbWFnZSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+c2V0Q2Fj
aGVkSW1hZ2UobV9pbWFnZS5nZXQoKSk7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KCkKIHsKICAgICAvLyBJZiB3ZSdyZSBub3QgbWFraW5nIHJlbmRlcmVycyBmb3Ig
dGhlIHBhZ2UsIHRoZW4gZG9uJ3QgbG9hZCBpbWFnZXMuICBXZSBkb24ndCB3YW50IHRvIHNsb3cK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCShyZXZpc2lvbiA5NDA0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICAvLyBsb2FkaW5nIGlmIGEgbG9hZCBoYXNuJ3QgYWxy
ZWFkeSBiZWVuIHN0YXJ0ZWQuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogCisgICAg
dmlydHVhbCB2b2lkIHJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVz
b3VyY2VDbGllbnQqIG9yaWdpbmF0aW5nQ2xpZW50KTsKKwogICAgIC8vIFRoaXMgZnVuY3Rpb24g
c2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIHNldCwgZXZl
biBpZiBpdHMgdmFsdWUKICAgICAvLyBkb2Vzbid0IGNoYW5nZTsgc3RhcnRzIG5ldyBsb2FkIHVu
Y29uZGl0aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVyYSBiZWhhdmlvcikuCiAgICAg
dm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA5NDA0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKGNvbnN0
IFJlc291cmNlUgogICAgICwgbV9pbWFnZSgwKQogICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9u
VGltZXIodGhpcywgJkNhY2hlZEltYWdlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCkK
ICAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQorICAgICwgbV9zaG91bGRTaGFy
ZVJlc291cmNlKHRydWUpCiB7CiAgICAgc2V0U3RhdHVzKFVua25vd24pOwogfQpAQCAtMjEyLDYg
KzIxMywxNSBAQCBJbnRSZWN0IENhY2hlZEltYWdlOjppbWFnZVJlY3QoZmxvYXQgbXVsCiAgICAg
cmV0dXJuIEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1h
Z2U6OnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIG9yaWdpbmF0aW5nQ2xpZW50KQoreworICAgIEFTU0VSVChtX3Nob3VsZFNoYXJlUmVzb3Vy
Y2UpOworICAgIG1fc2hvdWxkU2hhcmVSZXNvdXJjZSA9IGZhbHNlOworICAgIENhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAgYy0+cmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNv
dXJjZShvcmlnaW5hdGluZ0NsaWVudCk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6Om5vdGlmeU9i
c2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0KQogewogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogCisgICAgdm9pZCByZXJlcXVlc3RVbmlxdWVJbWFn
ZVJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50KiBvcmlnaW5hdGluZ0NsaWVudCk7
CisKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkg
aWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAKQEAgLTc1LDYgKzc3LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhcigpOwogICAgIAorICAgIGJvb2wgc2hvdWxkU2hhcmVSZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2hhcmVSZXNvdXJjZTsgfQogICAgIGJvb2wgc3Rp
bGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygp
ID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9CiAgICAgdm9pZCBsb2FkKCk7CiAKQEAgLTk4
LDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIFRp
bWVyPENhY2hlZEltYWdlPiBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcjsKICAgICBib29sIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZTsKKyAgICBib29sIG1fc2hvdWxkU2hhcmVSZXNvdXJjZTsK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUNsaWVudC5oCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OwogICAgIGNsYXNzIENhY2hlZEZvbnQ7CiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Cisg
ICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7CiAgICAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiAg
ICAgY2xhc3MgSW1hZ2U7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTYwLDYgKzYxLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBlLmcuLCBpbiB0aGUgYi9mIGNhY2hlIG9yIGlu
IGEgYmFja2dyb3VuZCB0YWIpLgogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlbmRlckltYWdl
KENhY2hlZEltYWdlKikgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCog
Lyogb3JpZ2luYXRpbmdDbGllbnQgKi8pIHsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFz
ZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICovLCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3Ry
aW5nJiAvKiBzaGVldCAqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb250TG9hZGVkKENh
Y2hlZEZvbnQqKSB7fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQwNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCkBAIC00NDcsNiArNDQ4LDE4IEBAIENhY2hlZFJl
c291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kKICAgICAgICAgcmV0dXJuIFJlbG9hZDsK
ICAgICB9CiAgICAgCisjaWYgRU5BQkxFKFNWRykKKyAgICAvLyBGb3JjZSByZWxvYWRpbmcgU1ZH
IGltYWdlcywgYXMgdGhlaXIgaW5zdHJpbmNpYyBzaXplIG1heSBkZXBlbmQgb24gdGhlIGhvc3Qg
ZG9jdW1lbnQuCisgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZSkgeworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGV4aXN0aW5nUmVzb3VyY2UpOworICAgICAgICBp
ZiAoIWNhY2hlZEltYWdlLT5zaG91bGRTaGFyZVJlc291cmNlKCkpIHsKKyAgICAgICAgICAgIElt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgICAgICAgICAgaWYgKGltYWdl
ICYmIGltYWdlLT5pc1NWR0ltYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlbG9hZDsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgLy8gRG9uJ3QgcmVsb2FkIHJlc291cmNl
cyB3aGlsZSBwYXN0aW5nLgogICAgIGlmIChtX2FsbG93U3RhbGVSZXNvdXJjZXMpCiAgICAgICAg
IHJldHVybiBVc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYpOyAKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGN1cnJlbnRGcmFtZUhhc0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIERlcml2
ZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5IGNhbiBhc3N1cmUgdGhhdCAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA5NDA0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIxLDYgKzEwMjEsOSBAQCB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnCiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihpbWFnZSk7
CisgICAgcmVyZXF1ZXN0VW5pcXVlSW1hZ2VSZXNvdXJjZUlmTmVlZGVkKGNhY2hlZEltYWdlKTsK
KwogICAgIGlmICgoc3R5bGUoKS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPmJv
cmRlckltYWdlKCkuaW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB8fAogICAgICAgICAoc3R5bGUo
KS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSAmJiBzdHlsZSgpLT5tYXNrQm94SW1hZ2UoKS5pbWFn
ZSgpLT5kYXRhKCkgPT0gaW1hZ2UpKSB7CiAgICAgICAgIHJlcGFpbnQoKTsKQEAgLTEwMzEsMTMg
KzEwMzQsMzMgQEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZwogICAg
IGlmICghZGlkRnVsbFJlcGFpbnQpCiAgICAgICAgIHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2Uo
aW1hZ2UsIHN0eWxlKCktPm1hc2tMYXllcnMoKSwgZmFsc2UpOwogCi0KICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+aGFzQ29t
cG9zaXRlZE1hc2soKSAmJiBsYXllcnNVc2VJbWFnZShpbWFnZSwgc3R5bGUoKS0+bWFza0xheWVy
cygpKSkKICAgICAgICAgbGF5ZXIoKS0+Y29udGVudENoYW5nZWQoUmVuZGVyTGF5ZXI6Ok1hc2tJ
bWFnZUNoYW5nZWQpOwogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVyQm94OjpyZXJlcXVlc3RVbmlx
dWVJbWFnZVJlc291cmNlSWZOZWVkZWQoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAg
IGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5zaG91bGRTaGFyZVJlc291cmNlKCkp
CisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShTVkcpCisgICAgdW5zaWduZWQgY291bnQg
PSBjYWNoZWRJbWFnZS0+Y291bnQoKTsKKyAgICBpZiAoY291bnQgPD0gMSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gU1ZHIEltYWdlcyBoYXZlIHRvIGJlIHVuaXF1ZSwgYXMgdGhlaXIgX2lu
dHJpbnNpY18gc2l6ZSBtYXkgZGVwZW5kIG9uIHRoZSBob3N0IGRvY3VtZW50IGl0c2VsZiEKKyAg
ICAvLyBJZiBtdWx0aXBsZSBpbWFnZXMgcmVmZXJlbmNlIHRoaXMgcmVzb3VyY2UsIGFuZCBpdCB0
dXJucyBvdXQgdG8gYmUgYSBTVkcgSW1hZ2Ugd2UgaGF2ZSB0byBtYWtlIGVhY2ggb2YgdGhlbSB1
bmlxdWUuCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwor
ICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVkSW1h
Z2UtPnJlcmVxdWVzdFVuaXF1ZUltYWdlUmVzb3VyY2UodGhpcyk7CisjZW5kaWYKK30KKwogYm9v
bCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCkKIHsK
ICAgICBMYXlvdXRSZWN0IHJlbmRlcmVyUmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNiArNDEwLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBuZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2FsY3VsYXRpb24oKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxv
YXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLywgYm9vbCYgLyogaXNQZXJjZW50YWdlSW50cmlu
c2ljU2l6ZSAqLykgY29uc3QgeyB9CiAKKyAgICB2b2lkIHJlcmVxdWVzdFVuaXF1ZUltYWdlUmVz
b3VyY2VJZk5lZWRlZChDYWNoZWRJbWFnZSopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDk0MDQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KIAogICAgIGlmIChoYXNCb3hE
ZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdl
Q2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCisgICAgZWxzZQorICAgICAgICByZXJlcXVl
c3RVbmlxdWVJbWFnZVJlc291cmNlSWZOZWVkZWQoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihu
ZXdJbWFnZSkpOworCiAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBsaWVy
KSA6IEludFNpemUoKTsgfQogCiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KIAogcHJvdGVjdGVkOgog
ICAgIFJlbmRlckltYWdlUmVzb3VyY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCShyZXZpc2lvbiA5NDA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdJbWFnZShvYnNlcnZlcikpOwogICAgIH0K
IAorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgflNWR0ltYWdlKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>