<?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>100611</bug_id>
          
          <creation_ts>2012-10-28 10:12:04 -0700</creation_ts>
          <short_desc>CSS canvas renders blurry at 2x pixel ratio</short_desc>
          <delta_ts>2013-01-29 10:11:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>mitz</cc>
    
    <cc>noam</cc>
    
    <cc>peter</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>thakis</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>tomhudson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752959</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-10-28 10:12:04 -0700</bug_when>
    <thetext>If you create a 2x pixel ratio CSS canvas it will render at 1x.

&lt;rdar://problem/12574189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752961</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-10-28 10:12:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/12588963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752987</commentid>
    <comment_count>2</comment_count>
      <attachid>171143</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-10-28 14:01:59 -0700</bug_when>
    <thetext>Created attachment 171143
Proposed Change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753094</commentid>
    <comment_count>3</comment_count>
      <attachid>171143</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 00:01:44 -0700</bug_when>
    <thetext>Comment on attachment 171143
Proposed Change

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

New failing tests:
platform/chromium/virtual/gpu/fast/canvas/canvas-as-image-hidpi.html
fast/canvas/canvas-as-image-hidpi.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757083</commentid>
    <comment_count>4</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2012-11-02 04:15:14 -0700</bug_when>
    <thetext>I think you&apos;re going to have to update ImageBufferSkia to pay attention to your new parameter; it&apos;s already got a member variable tracking its scale.

Could we come up with a better name for the parameter and the enum values? I really can&apos;t tell reading the declaration or call sites what the new code is intended to do, or why you need to override the default parameter value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757174</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-02 07:21:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think you&apos;re going to have to update ImageBufferSkia to pay attention to your new parameter; it&apos;s already got a member variable tracking its scale.
&gt; 
&gt; Could we come up with a better name for the parameter and the enum values? I really can&apos;t tell reading the declaration or call sites what the new code is intended to do, or why you need to override the default parameter value.

It has a member tracking the resolution, but it never scaled like ImageBufferCG. So it isn&apos;t handling HiDPI the same as CG. I can add a FIXME and file a bug for Skia. But I don&apos;t know Skia/Chromium to be able to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757177</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-02 07:22:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Could we come up with a better name for the parameter and the enum values? I really can&apos;t tell reading the declaration or call sites what the new code is intended to do, or why you need to override the default parameter value.

As far as the name goes I am open to ideas. But this was the best I could think of while keeping it terse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762525</commentid>
    <comment_count>7</comment_count>
      <attachid>171143</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-08 21:23:44 -0800</bug_when>
    <thetext>Comment on attachment 171143
Proposed Change

View in context: https://bugs.webkit.org/attachment.cgi?id=171143&amp;action=review

&gt; LayoutTests/ChangeLog:3
&gt; +        Test if -webkit-canvas in CSS uses the full backing store instead of alway 1x when rendering.

Typo: always

&gt; LayoutTests/fast/canvas/canvas-as-image-hidpi.html:19
&gt; +        ctx.fillStyle = &quot;rgb(200, 0, 0)&quot;;
&gt; +        ctx.fillRect(10, 10, 50, 50);
&gt; +
&gt; +        ctx.fillStyle = &quot;rgba(0, 0, 200, 0.5)&quot;;
&gt; +        ctx.fillRect(25, 25, 90, 90);

I&apos;m not sure this will actually test the change. This particular code drawn into 100x100 and then stretched would be indistinguishable from the 200x200 image. Or am I missing it?

I can&apos;t think of a good way to test otherwise though.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make -webkit-canvas in CSS use the full backing store instead of alway 1x when rendering.

Typo: always

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:81
&gt; +    enum Scale {
&gt; +        Scaled,
&gt; +        Unscaled
&gt; +    };

Should this be called ScaleBehavior or something? Scale is a slightly ambiguous word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762985</commentid>
    <comment_count>8</comment_count>
      <attachid>171143</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-09 07:11:46 -0800</bug_when>
    <thetext>Comment on attachment 171143
Proposed Change

View in context: https://bugs.webkit.org/attachment.cgi?id=171143&amp;action=review

&gt;&gt; LayoutTests/fast/canvas/canvas-as-image-hidpi.html:19
&gt;&gt; +        ctx.fillRect(25, 25, 90, 90);
&gt; 
&gt; I&apos;m not sure this will actually test the change. This particular code drawn into 100x100 and then stretched would be indistinguishable from the 200x200 image. Or am I missing it?
&gt; 
&gt; I can&apos;t think of a good way to test otherwise though.

I did run the test before and after the change and the edges were blurry before.

&gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:81
&gt;&gt; +    };
&gt; 
&gt; Should this be called ScaleBehavior or something? Scale is a slightly ambiguous word.

I can call it ScaleBehavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763241</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-09 12:41:05 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819057</commentid>
    <comment_count>10</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-01-29 10:11:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; I think you&apos;re going to have to update ImageBufferSkia to pay attention to your new parameter; it&apos;s already got a member variable tracking its scale.
&gt; &gt; 
&gt; &gt; Could we come up with a better name for the parameter and the enum values? I really can&apos;t tell reading the declaration or call sites what the new code is intended to do, or why you need to override the default parameter value.
&gt; 
&gt; It has a member tracking the resolution, but it never scaled like ImageBufferCG. So it isn&apos;t handling HiDPI the same as CG. I can add a FIXME and file a bug for Skia. But I don&apos;t know Skia/Chromium to be able to fix it.

That&apos;s intentional, chrome is matching the safari/ios model, not the safari/mac one: http://www.html5rocks.com/en/tutorials/canvas/hidpi/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171143</attachid>
            <date>2012-10-28 14:01:59 -0700</date>
            <delta_ts>2012-11-09 07:11:46 -0800</delta_ts>
            <desc>Proposed Change</desc>
            <filename>0001-Source-WebCore-Make-webkit-canvas-in-CSS-use-the-ful.patch</filename>
            <type>text/plain</type>
            <size>14667</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSBjMDAyOTYwM2ZhYmIxNzg3YmIxMTI1NDBjZjRjZjMzZmIxZmQwOWUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBTdW4sIDI4IE9jdCAyMDEyIDEzOjU5OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gU291
cmNlL1dlYkNvcmU6IE1ha2UgLXdlYmtpdC1jYW52YXMgaW4gQ1NTIHVzZSB0aGUgZnVsbAogYmFj
a2luZyBzdG9yZSBpbnN0ZWFkIG9mIGFsd2F5IDF4IHdoZW4gcmVuZGVyaW5nLgoKaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDYxMQoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgpUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGkuaHRtbAoK
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjptYWtlUHJlc2VudGF0aW9uQ29weSk6IFBhc3MgVW5zY2FsZWQgdG8gY29weUltYWdlLgooV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNvcGllZEltYWdlKTogRGl0dG8uCiogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcDoKKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBBZGRlZCBTY2FsZSBw
YXJhbWV0ZXIgYW5kIHVzZSBjb3B5TmF0aXZlSW1hZ2UgZm9yIFVuc2NhbGVkLgoqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgooV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmNvcHlJbWFnZSk6IEFkZGVkIHVubmFtZWQgU2NhbGUgcGFyYW1ldGVyLgoqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgooV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNv
cHlJbWFnZSk6IERpdHRvLgoqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBEaXR0by4KKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcDoKKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UpOiBEaXR0by4KKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZl
cld4LmNwcDoKKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBEaXR0by4KCkxheW91
dFRlc3RzOiBUZXN0IGlmIC13ZWJraXQtY2FudmFzIGluIENTUyB1c2VzIHRoZSBmdWxsIGJhY2tp
bmcgc3RvcmUgaW5zdGVhZCBvZiBhbHdheSAxeCB3aGVuIHJlbmRlcmluZy4KCmh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA2MTEKClJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKKiBmYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQucG5n
OiBBZGRlZC4KKiBmYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKiBmYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGkuaHRtbDogQWRkZWQu
Ci0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEyICsrKysrKysKIC4uLi9mYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGktZXhw
ZWN0ZWQucG5nIHwgIEJpbiAwIC0+IDM3NjE2IGJ5dGVzCiAuLi4vZmFzdC9jYW52YXMvY2FudmFz
LWFzLWltYWdlLWhpZHBpLWV4cGVjdGVkLnR4dCB8ICAgIDYgKysrKwogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWFzLWltYWdlLWhpZHBpLmh0bWwgfCAgIDM2ICsrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMjcgKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCAgICAgICAgICB8ICAgIDQgKy0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oICAgICB8ICAgIDcgKysrLQogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwICAgfCAgICAyICstCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCB8ICAgIDQgKy0tCiAuLi4vV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCB8ICAgIDIgKy0KIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgICAgIHwgICAgMiAr
LQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwICAgfCAg
ICAyICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNw
cCB8ICAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1hcy1pbWFnZS1oaWRwaS1leHBlY3RlZC5wbmcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLWhp
ZHBpLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNWY1ZjAwYi4uMzE5OTdkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBA
CiAyMDEyLTEwLTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAg
ICAgICBUZXN0IGlmIC13ZWJraXQtY2FudmFzIGluIENTUyB1c2VzIHRoZSBmdWxsIGJhY2tpbmcg
c3RvcmUgaW5zdGVhZCBvZiBhbHdheSAxeCB3aGVuIHJlbmRlcmluZy4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNjExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
YXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtYXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGkuaHRtbDogQWRkZWQuCisKKzIwMTItMTAt
MjggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAgIFRlc3Qg
dGhlIGNhbnZhcyBiYWNraW5nIHN0b3JlIHBpeGVsIHJhdGlvIG9uIHJlc2l6ZSByZXNldC4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNjA4CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGkt
ZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLWhp
ZHBpLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTNiYjVlMDAwZGY0N2EyZGM3MTEzMjY2YmFh
ZWZjMzljNWJiMzc5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNzYxNgp6Y21lSTRaQT8+Rjd7
XmJxZzxWUCo2JTgwPyo1aFZFb01GZmVyNnlgYFVEPzI3bF80Zi1PdGZLOzRaPmMpRW82KUkKemNH
SGJ6R212VEtsOUJNaW44aWVBVitXSGdqJjUxdiVSYUNWcnR5dTk4NVdZd1l6OVE/Z20kLUtUc1pB
PnpQV3Z7Cnp8NCpEO1pnMjFUbyZSfkJ8OHNpb3tqa1JPZTRjSCZqV0wjMlVGRUgxRUwmc0Q4ZDle
M0JnWlc3QTJ0NTAtZERMfQp6VTtXRHNfMDRUPndsSFVUU3lAQGJURUQtKz97Y35QXi1nRGJNWSol
RnYzfjczenN2N2hjUDt3TjR+JUs3K1V1IW4Keng3QG5eLUtwSmBPRGtYZXhGOyo8U347JGJkYmxz
QnR2TFRrKj5oUWshQG9VTW5tLSlmSTF+Tmo+Wms3Zyg9JWhtCnowb0JlbW9tbXVYU3xkTWFkaXRr
dWAlPmF4dm5OTn5pcWgjJnNMdikoeFpSXyhAZiZMPHdlKEJSOT97diYzZHdnewp6KWVYZzUtIVFk
aHFnezQrdUUrQUVfZGItUEB9WUNKYENodGZSI29MNGkpOGx8WDtZTDdaS3AzVVN9YTRPYnBBcGoK
ekwkQCo3RFhQailrdz9iPEl5NXIwd2ZFYnZQdjNicSZ8QihveGJJQjcoQHd7ZHYpZHZHSFpYRFNV
Tmktc0ltc2QoCnpqamJQdmIoI2xLOGZVakB4QndXfnAjJH1RVks2ZkJZdU5Hb0Y/WXdgbE9NZU9i
Sy10elBhdHRPa1Q/O1REcGR3Jgp6PyoyRzllUU5MdEdQZWkmXm5+UzE7YWp+YUd1VFlFN3FZQ35K
dlg+ND9TfjVPVEoteHJtemR8TEd6TjZgJD5HT1YKems+NzF4R2lzI3ZVMDMkZ2Fmb1pZJGdaYHZ6
OSRWc3lFTHtsX25XT1VTMjN6NlJsWmxkV25KNW10TVg/NVJGMV45CnoxYjF1Zjs+RW16bHBkS2so
YD5RNFJCfiZSajcrejJfNE5aRFM9YVdLYVEpPUw7Ykl3P1IqUGotYVlkRF5ZYlQ5aQp6PT9tUkFa
emlSb0o8YXZlKFFJa2dgZ0RkdHJgVGY5V3FRVTtteXk5dG1qeTl8Y052Klg0KTN2XigpanQycWdg
RXoKelNrZFFRZ1lrR3YrbS1GSUpqc2kweVdzJnlJYDlCZzIyVno1NyhiYihoNEdWLWYhaW04akdl
PnkhVDY+OThpQmUjCnpyUSk3aldYUn5jeklSaFI5KUExez4wJVBFdkJlenhjej1sYClNJExNVGBP
cE9Rbz5mKFImKUt4d2Y7MFV7KEZBVgp6WXk5eGAqJiNgVXc8eVBUUkAtISlVSTtWaGMhOUN4OyYq
UEFuVGpMRVlTTXw4a0xDdENefFVJaHdmbiRUUlRlOTEKelkkYGZWUjZgaFhUQ1J7ZnozeiVSUEU0
WD9FSkFSakJRdjVwb3N5OHdYY0t9d1BQO0R7N318RWl6YCghPTFtTjdACnoreW54IXRneCZpMGVF
JEliJTZraTZjaX19MGFSekcmSUFHfE9IcX56MVc9RW85djI4O0F3bnBfT0BEPVlUJlBBKAp6bn1N
PWFFWHZJMml0NWFxSjM8M1JpYUI/TDJFNGw5Ukx5N3UlVzglY3Aja1M2XyFlXmAmQkpEM3pLWSt3
SDF7cTUKemI1YTt2cHMqMldwMm1DJWUlTUJUeks8QzMlJFY7T2FSZklaKElkRUZMb1hmcnUjPWZ5
dDZeQV9tPTdBSkZ+O156CnpZfSF3b0ZCIVdVNktAKU5eY0NhOVoweHx+WWNKJHBVSkBFVXFifXBR
VmQ8azZ1aUtYS0ZadjZHSEpiJUVMLV9PcAp6OGZOJGJIOE9RV0VoSEFHZ35TNTJrWFdEPTUpMEhx
VnU0eW5FS20hSDEhXkkmS3JKS3xzRDtEPXdVQWgjNzdgMjgKekxTbGhoTkd3bmJpM01zUXV8Tz4o
N05+ezkwPTFBPnBjV0RmKUl3cmBUMVlIVjN5QjQ0QStiTyRCbz9USiF+KFVECnpTZkNhWDMpRGhs
Zm0lb2BQeiM5I1k5WDtlRWhIQUdnflM1MmtYV0Q9NSkwSHFWdTR5bkVLbSFIMSFeSSZLckpLfAp6
c0Q7RD13VUFoIzc4MSg/UHxJQFAhNEFkPm55UzU/SXl8VyZ5akkzUTQmRDcleGBXb0J3Yj0qWEZ2
bD4qN0NoKG8KejBDRX4pM3R8Z20zIVc/JS1jeWkjMFNhT1puUUQtTU5pMHdjaTNNc1F1fE8+KDdO
fns5bERUVEotbUZfTyowT3prClJXJTVsYSlzO1QpbXooIyNgd3UkcE9KeDg2CgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
YXMtaW1hZ2UtaGlkcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWFzLWltYWdlLWhpZHBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lOGZjY2M4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWFzLWltYWdlLWhpZHBpLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTE2CisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHgxMTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHgxMDAKKyAgICAgIFJlbmRlckltYWdlIHtESVZ9IGF0ICgwLDApIHNpemUgMTAweDEw
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLWhp
ZHBpLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlkcGku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWM4YjNiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLWhpZHBp
Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRDU1NDYW52
YXNDb250ZXh0KCIyZCIsICJ0ZXN0IiwgMTAwLCAxMDApOworCisgICAgICAgIGN0eC5maWxsU3R5
bGUgPSAicmdiKDIwMCwgMCwgMCkiOworICAgICAgICBjdHguZmlsbFJlY3QoMTAsIDEwLCA1MCwg
NTApOworCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgwLCAwLCAyMDAsIDAuNSkiOwor
ICAgICAgICBjdHguZmlsbFJlY3QoMjUsIDI1LCA5MCwgOTApOworCisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPHN0eWxlPgorLnRl
c3QgeworICAgIGNvbnRlbnQ6IC13ZWJraXQtY2FudmFzKHRlc3QpOworICAgIHdpZHRoOiAxMDBw
eDsKKyAgICBoZWlnaHQ6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ic3RhcnRUZXN0KCkiPgorPGRpdiBjbGFzcz0idGVzdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMjk2NmUzYi4uNmQ2NWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDMyIEBACiAyMDEyLTEwLTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
IAorICAgICAgICBNYWtlIC13ZWJraXQtY2FudmFzIGluIENTUyB1c2UgdGhlIGZ1bGwgYmFja2lu
ZyBzdG9yZSBpbnN0ZWFkIG9mIGFsd2F5IDF4IHdoZW4gcmVuZGVyaW5nLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9j
YW52YXMtYXMtaW1hZ2UtaGlkcGkuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVByZXNl
bnRhdGlvbkNvcHkpOiBQYXNzIFVuc2NhbGVkIHRvIGNvcHlJbWFnZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50Ojpjb3BpZWRJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Y29weUltYWdlKTogQWRkZWQgU2NhbGUgcGFyYW1ldGVyIGFuZCB1c2UgY29weU5hdGl2ZUltYWdl
IGZvciBVbnNjYWxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OiBBZGRlZCB1bm5hbWVkIFNjYWxlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Ojpjb3B5SW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUlt
YWdlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKTogRGl0dG8uCisKKzIw
MTItMTAtMjggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAg
IFJlc2V0IGNhbnZhcyBiYWNraW5nIHN0b3JlIHBpeGVsIHJhdGlvIG9uIHJlc2l6ZSByZXNldC4K
IAogICAgICAgICBUaGUgYmFja2luZyBzdG9yZSB3YXMgbm90IGJlaW5nIHJlY3JlYXRlZCB1c2lu
ZyB0aGUgY3VycmVudCBwYWdlIHBpeGVsIHJhdGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCmluZGV4IDI3YWNiOGEuLjg3N2JjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkNvcHkoKQogewogICAgIGlmICghbV9wcmVz
ZW50ZWRJbWFnZSkgewogICAgICAgICAvLyBUaGUgYnVmZmVyIGNvbnRhaW5zIHRoZSBsYXN0IHBy
ZXNlbnRlZCBkYXRhLCBzbyBzYXZlIGEgY29weSBvZiBpdC4KLSAgICAgICAgbV9wcmVzZW50ZWRJ
bWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIG1f
cHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUsIFVu
c2NhbGVkKTsKICAgICB9CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBJbWFnZSogSFRNTENhbnZh
c0VsZW1lbnQ6OmNvcGllZEltYWdlKCkgY29uc3QKICAgICBpZiAoIW1fY29waWVkSW1hZ2UgJiYg
YnVmZmVyKCkpIHsKICAgICAgICAgaWYgKG1fY29udGV4dCkKICAgICAgICAgICAgIG1fY29udGV4
dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKLSAgICAgICAgbV9jb3BpZWRJbWFn
ZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIG1fY29w
aWVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUsIFVuc2NhbGVk
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fY29waWVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBmZTBhZWUwLi4z
MzMxNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTc1LDYgKzc1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRGVm
ZXJyZWQKICAgICB9OwogCisgICAgZW51bSBTY2FsZSB7CisgICAgICAgIFNjYWxlZCwKKyAgICAg
ICAgVW5zY2FsZWQKKyAgICB9OworCiAgICAgY2xhc3MgSW1hZ2VCdWZmZXIgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKQEAgLTk2LDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICBQYXNz
UmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0
b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFNjYWxlID0gU2NhbGVkKSBjb25zdDsKIAogICAg
ICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0geyBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFj
a2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IDcyMmNiNjkuLjdmZjA4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC04Miw3ICs4Miw3
IEBAIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVy
Ojpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitQYXNzUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJl
aGF2aW9yLCBTY2FsZSkgY29uc3QKIHsKICAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNr
aW5nU3RvcmUpCiAgICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNvcHlDYWlyb0lt
YWdlU3VyZmFjZShtX2RhdGEubV9zdXJmYWNlKS5sZWFrUmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCAy
MWU5ZGI0Li5lMTcyNjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjEyLDEwICsyMTIsMTAgQEAgR3JhcGhp
Y3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+
IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNj
YWxlIHNjYWxlQmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGlt
YWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKQorICAgIGlmIChtX3Jlc29sdXRp
b25TY2FsZSA9PSAxIHx8IHNjYWxlQmVoYXZpb3IgPT0gVW5zY2FsZWQpCiAgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlt
YWdlLmFkb3B0Q0YoY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCmluZGV4IGFjMjdkYzIuLjM4MWYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6
OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Bhc3NSZWZQ
dHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3IsIFNjYWxlKSBjb25zdAogewogICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tp
bmdTdG9yZSkKICAgICAgICAgcmV0dXJuIFN0aWxsSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9waXht
YXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9J
bWFnZUJ1ZmZlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDY5N2ZkZTIuLmNmNGFlNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVy
U2tpYS5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVy
Ojpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQogCi1QYXNz
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yKSBjb25zdAorUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRmb3Jt
Q29udGV4dC5iaXRtYXAoKSwgY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUsIG1fcmVz
b2x1dGlvblNjYWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAKaW5kZXggNTcyMDcwNS4uZjIx
YTljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
SW1hZ2VCdWZmZXJXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgR3JhcGhpY3ND
b250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IElt
YWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxl
KSBjb25zdAogewogICAgIEFTU0VSVChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSk7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCdWZmZXJlZEltYWdlKCZtX2RhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5j
cHAKaW5kZXggNTc4NzQ4My4uZmUxZGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBA
QCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBkb3VibGUqLCBDb29yZGluYXRlUwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFz
c1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvcikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlKSBjb25zdAogewogICAgIEFT
U0VSVChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgCi0tIAoxLjcuMTAu
MiAoQXBwbGUgR2l0LTMzKQoK
</data>
<flag name="review"
          id="184946"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="184947"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>