<?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>79659</bug_id>
          
          <creation_ts>2012-02-27 04:10:50 -0800</creation_ts>
          <short_desc>Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.</short_desc>
          <delta_ts>2014-04-14 09:02:45 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79658</dependson>
    
    <dependson>131538</dependson>
          <blocked>131303</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>benwells</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kbr</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>pnormand</cc>
    
    <cc>rhodovan.u-szeged</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565562</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 04:10:50 -0800</bug_when>
    <thetext>SourceIn, DestinationIn, SourceOut, and DestinationAtop need to update an
entire canvas, and transparencyLayer can handle well if amending little.
I represented it using GraphicsContextQt that was easy to change.
The previous implementation requires new graphicsContext creation. It is better to
delegate jobs like this to each platform. Especially, the previous implementation
causes large performance hit to GPU implementation (i.e. ACCELERATED_2D_CANVAS).

If other ports implement endTransparencyLayer like Qt, fullCanvasCompositedFill and
fullCanvasCompositedDrawImage can be removed.

Following test cases cover this patch.
    fast/canvas/canvas-composite-alpha.html
    fast/canvas/canvas-composite-canvas.html
    fast/canvas/canvas-composite-fill-repaint.html
    fast/canvas/canvas-composite-image.html
    fast/canvas/canvas-composite-transformclip.html
    fast/canvas/canvas-composite.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565563</commentid>
    <comment_count>1</comment_count>
      <attachid>129010</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 04:15:22 -0800</bug_when>
    <thetext>Created attachment 129010
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565564</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 04:18:54 -0800</bug_when>
    <thetext>Attachment 129010 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/GraphicsContext.h:369:  The parameter name &quot;op&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/GraphicsContext.h:547:  The parameter name &quot;op&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565565</commentid>
    <comment_count>3</comment_count>
      <attachid>129011</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 04:21:16 -0800</bug_when>
    <thetext>Created attachment 129011
patch v.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565574</commentid>
    <comment_count>4</comment_count>
      <attachid>129011</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-27 04:39:30 -0800</bug_when>
    <thetext>Comment on attachment 129011
patch v.2

Attachment 129011 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11640014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565575</commentid>
    <comment_count>5</comment_count>
      <attachid>129011</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-27 04:40:26 -0800</bug_when>
    <thetext>Comment on attachment 129011
patch v.2

Attachment 129011 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11628988</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565752</commentid>
    <comment_count>6</comment_count>
      <attachid>129011</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-27 09:52:34 -0800</bug_when>
    <thetext>Comment on attachment 129011
patch v.2

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:935
&gt; +#if PLATFORM(QT)

We try to discourage platform #ifdefs like this in common code. It would be much better if the #ifdef was something like
TRANSPARENCYLAYER_USES_COMPOSITING_OPERATOR
or something.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:990
&gt; -void GraphicsContext::endPlatformTransparencyLayer()
&gt; +void GraphicsContext::endPlatformTransparencyLayer(CompositeOperator)

I think this patch should at least add an assertion that the operator is srcOver on all platforms where you leave it unimplemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566043</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 15:41:38 -0800</bug_when>
    <thetext>Thank for guide.
Can I define guard in wtf/Platform.h ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566076</commentid>
    <comment_count>8</comment_count>
      <attachid>129122</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 16:16:46 -0800</bug_when>
    <thetext>Created attachment 129122
patch v.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566077</commentid>
    <comment_count>9</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 16:17:39 -0800</bug_when>
    <thetext>Defined ENABLE_TRANSPARENCYLAYER_USES_COMPOSITING_OPERATOR.
Build fix for cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566088</commentid>
    <comment_count>10</comment_count>
      <attachid>129122</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-27 16:28:38 -0800</bug_when>
    <thetext>Comment on attachment 129122
patch v.3

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

&gt; Source/JavaScriptCore/wtf/Platform.h:824
&gt; +#if !defined(ENABLE_TRANSPARENCYLAYER_USES_COMPOSITING_OPERATOR)
&gt; +#define ENABLE_TRANSPARENCYLAYER_USES_COMPOSITING_OPERATOR 0
&gt; +#endif

Ugh, this will force a world rebuild for everyone. Just put this in GraphicsContext.h or somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566111</commentid>
    <comment_count>11</comment_count>
      <attachid>129128</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 16:42:06 -0800</bug_when>
    <thetext>Created attachment 129128
patch v.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566113</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 16:43:55 -0800</bug_when>
    <thetext>I hesitated that it was right, also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566132</commentid>
    <comment_count>13</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-27 17:01:00 -0800</bug_when>
    <thetext>This patch is applied to only Qt.
However, Qt will do correctly after Bug 79658 is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834668</commentid>
    <comment_count>14</comment_count>
      <attachid>129128</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-02-16 00:30:14 -0800</bug_when>
    <thetext>Comment on attachment 129128
patch v.4

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:943
&gt;              fullCanvasCompositedFill(m_path);

Can&apos;t this logic go to fullCanvasCompositedFill instead?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1064
&gt;          fullCanvasCompositedFill(rect);

Ditto.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1305
&gt;          fullCanvasCompositedDrawImage(cachedImage-&gt;imageForRenderer(image-&gt;renderer()), ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, op);

fullCanvasCompositedDrawImage here.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1397
&gt;          fullCanvasCompositedDrawImage(buffer, ColorSpaceDeviceRGB, bufferSrcRect, srcRect, state().m_globalComposite);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946648</commentid>
    <comment_count>15</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2013-11-04 06:33:11 -0800</bug_when>
    <thetext>What is the current status of this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946655</commentid>
    <comment_count>16</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-11-04 06:52:39 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; What is the current status of this bug?

Does it apply and work on the qt5x2 branch https://gitorious.org/qtwebkit/qt5x2/ ?

For webkit trunk I guess it would need one of the other ports to be using the code before it would be accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946703</commentid>
    <comment_count>17</comment_count>
      <attachid>129128</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-04 09:41:48 -0800</bug_when>
    <thetext>Comment on attachment 129128
patch v.4

The current patch is a Qt-only optimization, and that port is no longer in TOT WebKit. It would be OK to do that optimization for some other platform, or for all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998130</commentid>
    <comment_count>18</comment_count>
      <attachid>228730</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-07 06:01:31 -0700</bug_when>
    <thetext>Created attachment 228730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998169</commentid>
    <comment_count>19</comment_count>
      <attachid>228730</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-07 10:03:12 -0700</bug_when>
    <thetext>Comment on attachment 228730
Patch

r=me, awesome!

Maybe you could check in the test first and let the bot chew on it for one round, so we can see the needle jump? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999859</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-11 05:37:58 -0700</bug_when>
    <thetext>Committed r167123: &lt;http://trac.webkit.org/changeset/167123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999861</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-11 05:41:48 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 131538</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999863</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-11 05:45:30 -0700</bug_when>
    <thetext>Committed r167124: &lt;http://trac.webkit.org/changeset/167124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999864</commentid>
    <comment_count>23</comment_count>
      <attachid>229128</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-11 05:57:48 -0700</bug_when>
    <thetext>Created attachment 229128
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000428</commentid>
    <comment_count>24</comment_count>
      <attachid>229271</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-14 01:00:58 -0700</bug_when>
    <thetext>Created attachment 229271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000489</commentid>
    <comment_count>25</comment_count>
      <attachid>229271</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-14 08:31:51 -0700</bug_when>
    <thetext>Comment on attachment 229271
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        An inline function will create a transparency layer for CG. Cairo graphics
&gt; +        does not composite correctly when a transparency layer gets created. 
&gt; +        The inline function is just a NOOP for Cairo.

Why is this OK for Cairo? Does this behave correctly on Cairo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000493</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-14 08:40:46 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 229271 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229271&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        An inline function will create a transparency layer for CG. Cairo graphics
&gt; &gt; +        does not composite correctly when a transparency layer gets created. 
&gt; &gt; +        The inline function is just a NOOP for Cairo.
&gt; 
&gt; Why is this OK for Cairo? Does this behave correctly on Cairo?

Yes, I build it with Cairo as well. The existing tests pass now which were skipped before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000497</commentid>
    <comment_count>27</comment_count>
      <attachid>229271</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-14 09:02:31 -0700</bug_when>
    <thetext>Comment on attachment 229271
Patch

Clearing flags on attachment: 229271

Committed r167248: &lt;http://trac.webkit.org/changeset/167248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000498</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-14 09:02:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129010</attachid>
            <date>2012-02-27 04:15:22 -0800</date>
            <delta_ts>2012-02-27 04:21:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Optimize-Canvas-fill-and-drawImage-with-SourceIn-Des.patch</filename>
            <type>text/plain</type>
            <size>15145</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBjN2I3NDgyNDUyNzVkMjYyMWIxMjYzM2FhYzlhZTJlYzU1YjljNDZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgMjcgRmViIDIwMTIgMDg6MTE6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sCiBEZXN0
aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcKIHRyYW5zcGFy
ZW5jeUxheWVyLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5
CgpTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LCBhbmQgRGVzdGluYXRpb25BdG9w
IG5lZWQgdG8gdXBkYXRlIGFuCmVudGlyZSBjYW52YXMsIGFuZCB0cmFuc3BhcmVuY3lMYXllciBj
YW4gaGFuZGxlIHdlbGwgaWYgYW1lbmRpbmcgbGl0dGxlLgpJIHJlcHJlc2VudGVkIGl0IHVzaW5n
IEdyYXBoaWNzQ29udGV4dFF0IHRoYXQgd2FzIGVhc3kgdG8gY2hhbmdlLgpUaGUgcHJldmlvdXMg
aW1wbGVtZW50YXRpb24gcmVxdWlyZXMgbmV3IGdyYXBoaWNzQ29udGV4dCBjcmVhdGlvbi4gSXQg
aXMgYmV0dGVyIHRvCmRlbGVnYXRlIGpvYnMgbGlrZSB0aGlzIHRvIGVhY2ggcGxhdGZvcm0uIEVz
cGVjaWFsbHksIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbgpjYXVzZXMgbGFyZ2UgcGVyZm9y
bWFuY2UgaGl0IHRvIEdQVSBpbXBsZW1lbnRhdGlvbiAoaS5lLiBBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpLgoKSWYgb3RoZXIgcG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2Ug
UXQsIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCBhbmQKZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3
SW1hZ2UgY2FuIGJlIHJlbW92ZWQuCgpGb2xsb3dpbmcgdGVzdCBjYXNlcyBjb3ZlciB0aGlzIHBh
dGNoLgogIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAogIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb21wb3NpdGUtY2FudmFzLmh0bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29t
cG9zaXRlLWZpbGwtcmVwYWludC5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1p
bWFnZS5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10cmFuc2Zvcm1jbGlwLmh0
bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLmh0bWwKLS0tCiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICAg
ICAgIHwgICAzMiArKysrKysrKysrKysrCiAuLi4vV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCB8ICAgIDIgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCB8ICAgIDQgKy0KIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgICAgIHwgICAgMiArLQogLi4uL2dyYXBoaWNz
L29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwICAgICAgfCAgICAyICstCiAuLi4vcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwICAgICB8ICAgIDMgKy0KIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwIHwgICAgMiAr
LQogLi4uL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCAgICAgICAgfCAg
ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwICAg
ICB8ICAgIDIgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTYwYzBhLi41YTdkMTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNTUgQEAKIDIwMTItMDItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgT3B0aW1pemUgQ2FudmFzIGZpbGwgYW5kIGRyYXdJbWFnZSB3
aXRoIFNvdXJjZUluLCBEZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsCisgICAgICAgIGFuZCBEZXN0
aW5hdGlvbkF0b3AgdXNpbmcgdHJhbnNwYXJlbmN5TGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1OQorCisgICAgICAgIFNvdXJjZUluLCBE
ZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgbmVlZCB0byB1cGRh
dGUgYW4KKyAgICAgICAgZW50aXJlIGNhbnZhcywgYW5kIHRyYW5zcGFyZW5jeUxheWVyIGNhbiBo
YW5kbGUgd2VsbCBpZiBhbWVuZGluZyBsaXR0bGUuCisgICAgICAgIEkgcmVwcmVzZW50ZWQgaXQg
dXNpbmcgR3JhcGhpY3NDb250ZXh0UXQgdGhhdCB3YXMgZWFzeSB0byBjaGFuZ2UuCisgICAgICAg
IFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBuZXcgZ3JhcGhpY3NDb250ZXh0
IGNyZWF0aW9uLiBJdCBpcyBiZXR0ZXIgdG8KKyAgICAgICAgZGVsZWdhdGUgam9icyBsaWtlIHRo
aXMgdG8gZWFjaCBwbGF0Zm9ybS4gRXNwZWNpYWxseSwgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGNhdXNlcyBsYXJnZSBwZXJmb3JtYW5jZSBoaXQgdG8gR1BVIGltcGxlbWVu
dGF0aW9uIChpLmUuIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykuCisKKyAgICAgICAgSWYgb3RoZXIg
cG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2UgUXQsIGZ1bGxDYW52YXND
b21wb3NpdGVkRmlsbCBhbmQKKyAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2Ug
Y2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgRm9sbG93aW5nIHRlc3QgY2FzZXMgY292ZXIgdGhp
cyBwYXRjaC4KKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLmh0
bWwKKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWNhbnZhcy5odG1sCisg
ICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1maWxsLXJlcGFpbnQuaHRtbAor
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtaW1hZ2UuaHRtbAorICAgICAg
ICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtdHJhbnNmb3JtY2xpcC5odG1sCisgICAg
ICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS5odG1sCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAg
ICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRl
eHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0dy
YXBoaWNzQ29udGV4dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisKKzIwMTItMDItMjcgIEh1YW5nIERvbmdz
dW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1F0XSBGaXhlZCBpbmNv
cnJlY3Qgc2l6ZSBwaXhtYXAgY3JlYXRpb24gZm9yIGEgbmV3IHRyYW5zcGFyZW5jeSBsYXllci4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU4CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IDBkMTk1YWMuLmY0YjRlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
OTMyLDcgKzkzMiwxNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAK
ICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGlzRnVsbENhbnZhc0Nv
bXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKKyNpZiBQTEFURk9STShR
VCkKKyAgICAgICAgICAgIGMtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgICAg
ICBjLT5zYXZlKCk7CisgICAgICAgICAgICBjLT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlU291cmNlT3Zlcik7CisgICAgICAgICAgICBjLT5maWxsUGF0aChtX3BhdGgpOworICAgICAg
ICAgICAgYy0+cmVzdG9yZSgpOworICAgICAgICAgICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
c3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisjZWxzZQogICAgICAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7CisjZW5kaWYKICAgICAgICAgICAgIGRpZERyYXdFbnRp
cmVDYW52YXMoKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRl
ID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xMDQ0
LDcgKzEwNTMsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWkKICAgICAgICAgYy0+ZmlsbFJl
Y3QocmVjdCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYg
KGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsK
KyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsK
KyAgICAgICAgYy0+c2F2ZSgpOworICAgICAgICBjLT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOworICAgICAgICBj
LT5yZXN0b3JlKCk7CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxheWVyKHN0YXRlKCkubV9n
bG9iYWxDb21wb3NpdGUpOworI2Vsc2UKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxs
KHJlY3QpOworI2VuZGlmCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAg
ICAgICBjbGVhckNhbnZhcygpOwpAQCAtMTI3OSw3ICsxMjk3LDEzIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjCiAgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewor
I2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBjLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2Ut
PnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9y
bWFsaXplZFNyY1JlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBjLT5lbmRUcmFu
c3BhcmVuY3lMYXllcihvcCk7CisjZWxzZQogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERy
YXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3ApOworI2VuZGlmCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKQEAg
LTEzNjUsNyArMTM4OSwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0lt
YWdlKEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMsIGNvbnN0CiAgICAgICAgIGMtPmRy
YXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIGJ1ZmZl
clNyY1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50
aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKSB7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGMt
PmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihi
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIGJ1ZmZlclNyY1JlY3QsIENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBjLT5lbmRUcmFuc3BhcmVuY3lMYXllcihzdGF0ZSgp
Lm1fZ2xvYmFsQ29tcG9zaXRlKTsKKyNlbHNlCiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYWdlKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyU3JjUmVjdCwgc3Jj
UmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisjZW5kaWYKICAgICAgICAgZGlkRHJh
d0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0
ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xNTQ2LDYg
KzE1NzYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVy
KEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPnJlc3RvcmUoKTsKIH0K
IAorI2lmICFQTEFURk9STShRVCkKIHN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFn
ZSogaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVD
b2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsKQEAgLTE2MTAsNiArMTY0MSw3IEBAIHRlbXBsYXRl
PGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9z
aXRlZEZpbGwoY29uc3QKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZl
clJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogfQorI2VuZGlmCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFz
R3JhZGllbnQqIGdyYWRpZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA1NTgxZWU5Li5kODgz
ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtMzA2LDggKzMwNiwxMCBAQCBwcml2YXRlOgogICAgIFBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3Qm
KTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3Qm
LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKKyNpZiAhUExBVEZPUk0oUVQpCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QgVCYpOwogICAgIHRl
bXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyNlbmRpZgogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjc3YjhhMS4u
ZmM1ZjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNDAsOSArMzQwLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICArK21fdHJhbnNw
YXJlbmN5Q291bnQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lM
YXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIob3ApOwogICAgIEFTU0VSVChtX3RyYW5z
cGFyZW5jeUNvdW50ID4gMCk7CiAgICAgLS1tX3RyYW5zcGFyZW5jeUNvdW50OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBmN2JlZjRmLi44ZDcxMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzY2LDcgKzM2Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRVcGRhdGluZ0NvbnRyb2xUaW50cyhib29sKTsKIAog
ICAgICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7Ci0gICAg
ICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgdm9pZCBlbmRUcmFuc3Bh
cmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
ICAgICAgICBib29sIGlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgaGFzU2hhZG93KCkgY29uc3Q7CkBAIC01NDQsNyArNTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KTsKLSAgICAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKCk7CisgICAgICAgIHZvaWQgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3Np
dGVPcGVyYXRvciBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDRiNjE5MmYu
LjQ5MmI5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5
ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFy
ZW5jeUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKaW5kZXgg
NDQxN2Q3Yi4uMzNjZTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKQEAg
LTI5NCw3ICsyOTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5z
cGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgVU5VU0VEX1BBUkFNKG9wYWNpdHkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21w
b3NpdGVPcGVyYXRvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggYWE0OWUyZC4uN2QwNzUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJl
Z2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICsrbV9kYXRh
LT5sYXllckNvdW50OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFu
c3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDk5LDYgKzEwOTksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCiAgICAgUVBhaW50ZXIq
IHAgPSBtX2RhdGEtPnAoKTsKICAgICBwLT5zYXZlKCk7CiAgICAgcC0+cmVzZXRUcmFuc2Zvcm0o
KTsKKyAgICBwLT5zZXRDb21wb3NpdGlvbk1vZGUodG9RdENvbXBvc2l0aW9uTW9kZShvcCkpOwog
ICAgIHAtPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkpOwogICAgIHAtPmRyYXdQaXhtYXAobGF5
ZXItPm9mZnNldCwgbGF5ZXItPnBpeG1hcCk7CiAgICAgcC0+cmVzdG9yZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3ND
b250ZXh0U2tpYS5jcHAKaW5kZXggNGY3OWNmYi4uYWZhNTgwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4
dFNraWEuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2lu
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NhbnZhczo6a0Z1bGxDb2xvckxheWVyX1NhdmVG
bGFnKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKENvbXBvc2l0ZU9wZXJhdG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5NmJjM2Rj
Li5lODM2ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0xMTE5LDcgKzEx
MTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgbV9kYXRhLT5tX29wYWNpdHkgKj0gb3BhY2l0eTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9z
aXRlT3BlcmF0b3IpCiB7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5j
cHAKaW5kZXggNDUyNjM4Yi4uNGU2MDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcApAQCAtNjczLDcg
KzY3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIoZmxvYXQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsgCiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yKQogeyAK
ICAgICBub3RJbXBsZW1lbnRlZCgpOyAKIH0KLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129011</attachid>
            <date>2012-02-27 04:21:16 -0800</date>
            <delta_ts>2012-02-27 16:16:46 -0800</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-Optimize-Canvas-fill-and-drawImage-with-SourceIn-Des.patch</filename>
            <type>text/plain</type>
            <size>15139</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBjZTdhOTFhNjZlMDkzMjdiZTMzMjgzYjM5ZTJlZjYwOTc3NTI0MWM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgMjcgRmViIDIwMTIgMDg6MTE6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sCiBEZXN0
aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcKIHRyYW5zcGFy
ZW5jeUxheWVyLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5
CgpTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LCBhbmQgRGVzdGluYXRpb25BdG9w
IG5lZWQgdG8gdXBkYXRlIGFuCmVudGlyZSBjYW52YXMsIGFuZCB0cmFuc3BhcmVuY3lMYXllciBj
YW4gaGFuZGxlIHdlbGwgaWYgYW1lbmRpbmcgbGl0dGxlLgpJIHJlcHJlc2VudGVkIGl0IHVzaW5n
IEdyYXBoaWNzQ29udGV4dFF0IHRoYXQgd2FzIGVhc3kgdG8gY2hhbmdlLgpUaGUgcHJldmlvdXMg
aW1wbGVtZW50YXRpb24gcmVxdWlyZXMgbmV3IGdyYXBoaWNzQ29udGV4dCBjcmVhdGlvbi4gSXQg
aXMgYmV0dGVyIHRvCmRlbGVnYXRlIGpvYnMgbGlrZSB0aGlzIHRvIGVhY2ggcGxhdGZvcm0uIEVz
cGVjaWFsbHksIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbgpjYXVzZXMgbGFyZ2UgcGVyZm9y
bWFuY2UgaGl0IHRvIEdQVSBpbXBsZW1lbnRhdGlvbiAoaS5lLiBBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpLgoKSWYgb3RoZXIgcG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2Ug
UXQsIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCBhbmQKZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3
SW1hZ2UgY2FuIGJlIHJlbW92ZWQuCgpGb2xsb3dpbmcgdGVzdCBjYXNlcyBjb3ZlciB0aGlzIHBh
dGNoLgogIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAogIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb21wb3NpdGUtY2FudmFzLmh0bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29t
cG9zaXRlLWZpbGwtcmVwYWludC5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1p
bWFnZS5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10cmFuc2Zvcm1jbGlwLmh0
bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLmh0bWwKLS0tCiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICAg
ICAgIHwgICAzMiArKysrKysrKysrKysrCiAuLi4vV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCB8ICAgIDIgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCB8ICAgIDQgKy0KIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgICAgIHwgICAgMiArLQogLi4uL2dyYXBoaWNz
L29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwICAgICAgfCAgICAyICstCiAuLi4vcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwICAgICB8ICAgIDMgKy0KIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwIHwgICAgMiAr
LQogLi4uL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCAgICAgICAgfCAg
ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwICAg
ICB8ICAgIDIgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTYwYzBhLi41YTdkMTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNTUgQEAKIDIwMTItMDItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgT3B0aW1pemUgQ2FudmFzIGZpbGwgYW5kIGRyYXdJbWFnZSB3
aXRoIFNvdXJjZUluLCBEZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsCisgICAgICAgIGFuZCBEZXN0
aW5hdGlvbkF0b3AgdXNpbmcgdHJhbnNwYXJlbmN5TGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1OQorCisgICAgICAgIFNvdXJjZUluLCBE
ZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgbmVlZCB0byB1cGRh
dGUgYW4KKyAgICAgICAgZW50aXJlIGNhbnZhcywgYW5kIHRyYW5zcGFyZW5jeUxheWVyIGNhbiBo
YW5kbGUgd2VsbCBpZiBhbWVuZGluZyBsaXR0bGUuCisgICAgICAgIEkgcmVwcmVzZW50ZWQgaXQg
dXNpbmcgR3JhcGhpY3NDb250ZXh0UXQgdGhhdCB3YXMgZWFzeSB0byBjaGFuZ2UuCisgICAgICAg
IFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBuZXcgZ3JhcGhpY3NDb250ZXh0
IGNyZWF0aW9uLiBJdCBpcyBiZXR0ZXIgdG8KKyAgICAgICAgZGVsZWdhdGUgam9icyBsaWtlIHRo
aXMgdG8gZWFjaCBwbGF0Zm9ybS4gRXNwZWNpYWxseSwgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGNhdXNlcyBsYXJnZSBwZXJmb3JtYW5jZSBoaXQgdG8gR1BVIGltcGxlbWVu
dGF0aW9uIChpLmUuIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykuCisKKyAgICAgICAgSWYgb3RoZXIg
cG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2UgUXQsIGZ1bGxDYW52YXND
b21wb3NpdGVkRmlsbCBhbmQKKyAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2Ug
Y2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgRm9sbG93aW5nIHRlc3QgY2FzZXMgY292ZXIgdGhp
cyBwYXRjaC4KKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLmh0
bWwKKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWNhbnZhcy5odG1sCisg
ICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1maWxsLXJlcGFpbnQuaHRtbAor
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtaW1hZ2UuaHRtbAorICAgICAg
ICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtdHJhbnNmb3JtY2xpcC5odG1sCisgICAg
ICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS5odG1sCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAg
ICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRl
eHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0dy
YXBoaWNzQ29udGV4dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisKKzIwMTItMDItMjcgIEh1YW5nIERvbmdz
dW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1F0XSBGaXhlZCBpbmNv
cnJlY3Qgc2l6ZSBwaXhtYXAgY3JlYXRpb24gZm9yIGEgbmV3IHRyYW5zcGFyZW5jeSBsYXllci4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU4CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IDBkMTk1YWMuLmY0YjRlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
OTMyLDcgKzkzMiwxNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAK
ICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGlzRnVsbENhbnZhc0Nv
bXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKKyNpZiBQTEFURk9STShR
VCkKKyAgICAgICAgICAgIGMtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgICAg
ICBjLT5zYXZlKCk7CisgICAgICAgICAgICBjLT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlU291cmNlT3Zlcik7CisgICAgICAgICAgICBjLT5maWxsUGF0aChtX3BhdGgpOworICAgICAg
ICAgICAgYy0+cmVzdG9yZSgpOworICAgICAgICAgICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
c3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisjZWxzZQogICAgICAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7CisjZW5kaWYKICAgICAgICAgICAgIGRpZERyYXdFbnRp
cmVDYW52YXMoKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRl
ID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xMDQ0
LDcgKzEwNTMsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWkKICAgICAgICAgYy0+ZmlsbFJl
Y3QocmVjdCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYg
KGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsK
KyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsK
KyAgICAgICAgYy0+c2F2ZSgpOworICAgICAgICBjLT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOworICAgICAgICBj
LT5yZXN0b3JlKCk7CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxheWVyKHN0YXRlKCkubV9n
bG9iYWxDb21wb3NpdGUpOworI2Vsc2UKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxs
KHJlY3QpOworI2VuZGlmCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAg
ICAgICBjbGVhckNhbnZhcygpOwpAQCAtMTI3OSw3ICsxMjk3LDEzIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjCiAgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewor
I2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBjLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2Ut
PnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9y
bWFsaXplZFNyY1JlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBjLT5lbmRUcmFu
c3BhcmVuY3lMYXllcihvcCk7CisjZWxzZQogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERy
YXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3ApOworI2VuZGlmCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKQEAg
LTEzNjUsNyArMTM4OSwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0lt
YWdlKEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMsIGNvbnN0CiAgICAgICAgIGMtPmRy
YXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIGJ1ZmZl
clNyY1JlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50
aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKSB7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGMt
PmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihi
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIGJ1ZmZlclNyY1JlY3QsIENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBjLT5lbmRUcmFuc3BhcmVuY3lMYXllcihzdGF0ZSgp
Lm1fZ2xvYmFsQ29tcG9zaXRlKTsKKyNlbHNlCiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYWdlKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyU3JjUmVjdCwgc3Jj
UmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisjZW5kaWYKICAgICAgICAgZGlkRHJh
d0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0
ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xNTQ2LDYg
KzE1NzYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVy
KEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPnJlc3RvcmUoKTsKIH0K
IAorI2lmICFQTEFURk9STShRVCkKIHN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFn
ZSogaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVD
b2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsKQEAgLTE2MTAsNiArMTY0MSw3IEBAIHRlbXBsYXRl
PGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9z
aXRlZEZpbGwoY29uc3QKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZl
clJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogfQorI2VuZGlmCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFz
R3JhZGllbnQqIGdyYWRpZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA1NTgxZWU5Li5kODgz
ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtMzA2LDggKzMwNiwxMCBAQCBwcml2YXRlOgogICAgIFBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3Qm
KTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3Qm
LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKKyNpZiAhUExBVEZPUk0oUVQpCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QgVCYpOwogICAgIHRl
bXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyNlbmRpZgogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjc3YjhhMS4u
ZmM1ZjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNDAsOSArMzQwLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICArK21fdHJhbnNw
YXJlbmN5Q291bnQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lM
YXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIob3ApOwogICAgIEFTU0VSVChtX3RyYW5z
cGFyZW5jeUNvdW50ID4gMCk7CiAgICAgLS1tX3RyYW5zcGFyZW5jeUNvdW50OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBmN2JlZjRmLi5jZTEzMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzY2LDcgKzM2Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRVcGRhdGluZ0NvbnRyb2xUaW50cyhib29sKTsKIAog
ICAgICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7Ci0gICAg
ICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgdm9pZCBlbmRUcmFuc3Bh
cmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAg
ICAgICBib29sIGlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0OwogCiAgICAgICAgIGJvb2wg
aGFzU2hhZG93KCkgY29uc3Q7CkBAIC01NDQsNyArNTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9w
ZXJhdG9yKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihm
bG9hdCBvcGFjaXR5KTsKLSAgICAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgICAgIHZvaWQgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgICAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c1RyYW5zcGFyZW5jeUxheWVycygpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZSogbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDRiNjE5MmYuLjQ5MmI5
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAg
ICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFs
c2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVy
KENvbXBvc2l0ZU9wZXJhdG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKaW5kZXggNDQxN2Q3
Yi4uMzNjZTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKQEAgLTI5NCw3
ICsyOTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgVU5VU0VEX1BBUkFNKG9wYWNpdHkpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVP
cGVyYXRvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAKaW5kZXggYWE0OWUyZC4uN2QwNzUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxh
dGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICsrbV9kYXRhLT5sYXll
ckNvdW50OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lM
YXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDk5LDYgKzEwOTksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCiAgICAgUVBhaW50ZXIqIHAgPSBt
X2RhdGEtPnAoKTsKICAgICBwLT5zYXZlKCk7CiAgICAgcC0+cmVzZXRUcmFuc2Zvcm0oKTsKKyAg
ICBwLT5zZXRDb21wb3NpdGlvbk1vZGUodG9RdENvbXBvc2l0aW9uTW9kZShvcCkpOwogICAgIHAt
PnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkpOwogICAgIHAtPmRyYXdQaXhtYXAobGF5ZXItPm9m
ZnNldCwgbGF5ZXItPnBpeG1hcCk7CiAgICAgcC0+cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
U2tpYS5jcHAKaW5kZXggNGY3OWNmYi4uYWZhNTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTa0NhbnZhczo6a0Z1bGxDb2xvckxheWVyX1NhdmVGbGFnKSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVy
KCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKENv
bXBvc2l0ZU9wZXJhdG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5NmJjM2RjLi5lODM2
ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9H
cmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0xMTE5LDcgKzExMTksNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0IG9wYWNpdHkpCiAgICAgbV9kYXRhLT5tX29wYWNpdHkgKj0gb3BhY2l0eTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3Bl
cmF0b3IpCiB7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKaW5k
ZXggNDUyNjM4Yi4uNGU2MDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcApAQCAtNjczLDcgKzY3Myw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIo
ZmxvYXQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsgCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yKQogeyAKICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAKIH0KLS0gCjEuNy41LjQKCg==
</data>
<flag name="review"
          id="131548"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="131549"
          type_id="3"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129122</attachid>
            <date>2012-02-27 16:16:46 -0800</date>
            <delta_ts>2012-02-27 16:42:06 -0800</delta_ts>
            <desc>patch v.3</desc>
            <filename>0001-Optimize-Canvas-fill-and-drawImage-with-SourceIn-Des.patch</filename>
            <type>text/plain</type>
            <size>20042</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSAyODNjYmZiOTVhZTNiN2EzN2NjNmEzMGE5YTEwODUwNmI0NTVhODUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgMjcgRmViIDIwMTIgMDg6MTE6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sCiBEZXN0
aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcKIHRyYW5zcGFy
ZW5jeUxheWVyLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5
CgpTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LCBhbmQgRGVzdGluYXRpb25BdG9w
IG5lZWQgdG8gdXBkYXRlIGFuCmVudGlyZSBjYW52YXMsIGFuZCB0cmFuc3BhcmVuY3lMYXllciBj
YW4gaGFuZGxlIHdlbGwgaWYgYW1lbmRpbmcgbGl0dGxlLgpJIHJlcHJlc2VudGVkIGl0IHVzaW5n
IEdyYXBoaWNzQ29udGV4dFF0IHRoYXQgd2FzIGVhc3kgdG8gY2hhbmdlLgpUaGUgcHJldmlvdXMg
aW1wbGVtZW50YXRpb24gcmVxdWlyZXMgbmV3IGdyYXBoaWNzQ29udGV4dCBjcmVhdGlvbi4gSXQg
aXMgYmV0dGVyIHRvCmRlbGVnYXRlIGpvYnMgbGlrZSB0aGlzIHRvIGVhY2ggcGxhdGZvcm0uIEVz
cGVjaWFsbHksIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbgpjYXVzZXMgbGFyZ2UgcGVyZm9y
bWFuY2UgaGl0IHRvIEdQVSBpbXBsZW1lbnRhdGlvbiAoaS5lLiBBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpLgoKSWYgb3RoZXIgcG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2Ug
UXQsIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCBhbmQKZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3
SW1hZ2UgY2FuIGJlIHJlbW92ZWQuCgpGb2xsb3dpbmcgdGVzdCBjYXNlcyBjb3ZlciB0aGlzIHBh
dGNoLgogIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAogIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb21wb3NpdGUtY2FudmFzLmh0bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29t
cG9zaXRlLWZpbGwtcmVwYWludC5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1p
bWFnZS5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10cmFuc2Zvcm1jbGlwLmh0
bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLmh0bWwKLS0tCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKysrCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggICAgICAgICAgICAgICB8ICAgIDQgKysK
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1
MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgICAgICAgfCAgIDMyICsrKysrKysrKysrKwogLi4uL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggfCAgICAyICsKIC4uLi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgIHwgICAgNyArKy0KIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIHwgICAgNCArLQogLi4u
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAgfCAgICA0ICst
CiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwICAgICB8ICAg
IDQgKy0KIC4uLi9ncmFwaGljcy9vcGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcCAgICAg
IHwgICAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cCAgICAgfCAgICAzICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHRTa2lhLmNwcCB8ICAgIDQgKy0KIC4uLi9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRX
aW5DRS5jcHAgICAgICAgIHwgICAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBo
aWNzQ29udGV4dFd4LmNwcCAgICAgfCAgICA2ICsrLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKysrCiBUb29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiAgICAgICAgICB8ICAgIDEgKwogMTYgZmlsZXMgY2hh
bmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCmluZGV4IDQ5ZTU1YmEuLjU1ZDU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEyLTAyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIE9wdGltaXplIENhbnZhcyBmaWxsIGFuZCBkcmF3SW1h
Z2Ugd2l0aCBTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LAorICAgICAgICBhbmQg
RGVzdGluYXRpb25BdG9wIHVzaW5nIHRyYW5zcGFyZW5jeUxheWVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NTkKKworICAgICAgICBBZGQgRU5B
QkxFKFRSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IpIGZsYWcuCisg
ICAgICAgIEl0IGlzIG9ubHkgdXNlZCBpbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGN1cnJl
bnRseS4KKyAgICAgICAgSWYgaW1wbGVtZW50aW5nIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNw
YXJlbmN5TGF5ZXIgdG8gaGFuZGxlCisgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBlbmFibGUg
dGhpcyBmbGFnLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTItMDItMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgU3RyaW5nTGl0ZXJhbCBhbmQgTnVtZXJpY0xp
dGVyYWwgYXJlIGFsbG93ZWQgYXMgT2JqZWN0TGl0ZXJhbCBnZXR0ZXIgLyBzZXR0ZXIgbmFtZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGE4ODNhYjYuLmRjMjA4MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTgxOSw2ICs4MTksMTAgQEAKICNk
ZWZpbmUgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQo
RU5BQkxFX1RSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IpCisjZGVm
aW5lIEVOQUJMRV9UUkFOU1BBUkVOQ1lMQVlFUl9VU0VTX0NPTVBPU0lUSU5HX09QRVJBVE9SIDAK
KyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikKICNkZWZpbmUgRU5BQkxF
X0lOU1BFQ1RPUiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTYwYzBhLi5lMzBjNGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNTcgQEAKIDIwMTItMDItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgT3B0aW1pemUgQ2FudmFzIGZpbGwgYW5k
IGRyYXdJbWFnZSB3aXRoIFNvdXJjZUluLCBEZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsCisgICAg
ICAgIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcgdHJhbnNwYXJlbmN5TGF5ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1OQorCisgICAgICAg
IFNvdXJjZUluLCBEZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3Ag
bmVlZCB0byB1cGRhdGUgYW4KKyAgICAgICAgZW50aXJlIGNhbnZhcywgYW5kIHRyYW5zcGFyZW5j
eUxheWVyIGNhbiBoYW5kbGUgd2VsbCBpZiBhbWVuZGluZyBsaXR0bGUuCisgICAgICAgIEkgcmVw
cmVzZW50ZWQgaXQgdXNpbmcgR3JhcGhpY3NDb250ZXh0UXQgdGhhdCB3YXMgZWFzeSB0byBjaGFu
Z2UuCisgICAgICAgIFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBuZXcgZ3Jh
cGhpY3NDb250ZXh0IGNyZWF0aW9uLiBJdCBpcyBiZXR0ZXIgdG8KKyAgICAgICAgZGVsZWdhdGUg
am9icyBsaWtlIHRoaXMgdG8gZWFjaCBwbGF0Zm9ybS4gRXNwZWNpYWxseSwgdGhlIHByZXZpb3Vz
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhdXNlcyBsYXJnZSBwZXJmb3JtYW5jZSBoaXQgdG8g
R1BVIGltcGxlbWVudGF0aW9uIChpLmUuIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykuCisKKyAgICAg
ICAgSWYgb3RoZXIgcG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2UgUXQs
IGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCBhbmQKKyAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0
ZWREcmF3SW1hZ2UgY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgRm9sbG93aW5nIHRlc3QgY2Fz
ZXMgY292ZXIgdGhpcyBwYXRjaC4KKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9z
aXRlLWFscGhhLmh0bWwKKyAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWNh
bnZhcy5odG1sCisgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1maWxsLXJl
cGFpbnQuaHRtbAorICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtaW1hZ2Uu
aHRtbAorICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtdHJhbnNmb3JtY2xp
cC5odG1sCisgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS5odG1sCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5z
cGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5z
cGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToK
KworMjAxMi0wMi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KwogICAgICAgICBbUXRdIEZpeGVkIGluY29ycmVjdCBzaXplIHBpeG1hcCBjcmVhdGlvbiBmb3Ig
YSBuZXcgdHJhbnNwYXJlbmN5IGxheWVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMGQxOTVhYy4uZTY4
ODljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC05MzIsNyArOTMyLDE2IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKIAogICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlKSkgeworI2lmIEVOQUJMRShUUkFOU1BBUkVOQ1lMQVlFUl9VU0VTX0NPTVBPU0lUSU5H
X09QRVJBVE9SKQorICAgICAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAg
ICAgICAgICAgIGMtPnNhdmUoKTsKKyAgICAgICAgICAgIGMtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgICAgIGMtPmZpbGxQYXRoKG1fcGF0aCk7
CisgICAgICAgICAgICBjLT5yZXN0b3JlKCk7CisgICAgICAgICAgICBjLT5lbmRUcmFuc3BhcmVu
Y3lMYXllcihzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKKyNlbHNlCiAgICAgICAgICAgICBm
dWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwobV9wYXRoKTsKKyNlbmRpZgogICAgICAgICAgICAgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICB9IGVsc2UgaWYgKHN0YXRlKCkubV9nbG9iYWxD
b21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsK
QEAgLTEwNDQsNyArMTA1MywxNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zmls
bFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaQogICAgICAgICBj
LT5maWxsUmVjdChyZWN0KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9z
aXRlKSkgeworI2lmIEVOQUJMRShUUkFOU1BBUkVOQ1lMQVlFUl9VU0VTX0NPTVBPU0lUSU5HX09Q
RVJBVE9SKQorICAgICAgICBjLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBj
LT5zYXZlKCk7CisgICAgICAgIGMtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKKyAgICAgICAgYy0+ZmlsbFJlY3QocmVjdCk7CisgICAgICAgIGMtPnJlc3RvcmUo
KTsKKyAgICAgICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSk7CisjZWxzZQogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwocmVjdCk7Cisj
ZW5kaWYKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3Rh
dGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFy
Q2FudmFzKCk7CkBAIC0xMjc5LDcgKzEyOTcsMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgY29uc3QgRmxvYXRSZWMK
ICAgICAgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
LT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBvcCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKSB7CisjaWYgRU5BQkxF
KFRSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IpCisgICAgICAgIGMt
PmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgQ29tcG9zaXRlU291
cmNlT3Zlcik7CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxheWVyKG9wKTsKKyNlbHNlCiAg
ICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZv
clJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCk7CisjZW5kaWYKICAgICAgICAgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAob3AgPT0gQ29tcG9zaXRlQ29weSkg
ewogICAgICAgICBjbGVhckNhbnZhcygpOwpAQCAtMTM2NSw3ICsxMzg5LDEzIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJj
ZUNhbnZhcywgY29uc3QKICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCwgYnVmZmVyU3JjUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENv
bXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYg
KGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsK
KyNpZiBFTkFCTEUoVFJBTlNQQVJFTkNZTEFZRVJfVVNFU19DT01QT1NJVElOR19PUEVSQVRPUikK
KyAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgYy0+ZHJhd0lt
YWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgYnVmZmVyU3Jj
UmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxh
eWVyKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOworI2Vsc2UKICAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJT
cmNSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKKyNlbmRpZgogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xv
YmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsK
QEAgLTE1NDYsNiArMTU3Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21w
b3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVz
dG9yZSgpOwogfQogCisjaWYgIUVOQUJMRShUUkFOU1BBUkVOQ1lMQVlFUl9VU0VTX0NPTVBPU0lU
SU5HX09QRVJBVE9SKQogc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlKiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3Bh
Y2UsIGRlc3QsIHNyYywgb3ApOwpAQCAtMTYxMCw2ICsxNjQxLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
VD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmls
bChjb25zdAogCiAgICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyUmVjdCwg
c3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CiB9CisjZW5kaWYKIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnByZXBhcmVHcmFkaWVudEZvckRhc2hib2FyZChDYW52YXNHcmFkaWVu
dCogZ3JhZGllbnQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDU1ODFlZTkuLjIxNzNkZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCkBAIC0zMDYsOCArMzA2LDEwIEBAIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAg
IHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKIAorI2lmICFFTkFCTEUoVFJBTlNQQVJFTkNZTEFZRVJfVVNFU19DT01Q
T1NJVElOR19PUEVSQVRPUikKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXND
b21wb3NpdGVkRmlsbChjb25zdCBUJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxs
Q2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOworI2VuZGlmCiAKICAgICB2
b2lkIHByZXBhcmVHcmFkaWVudEZvckRhc2hib2FyZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCBmNzdiOGExLi4yM2JkYzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM0
MCw5ICszNDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSkKICAgICArK21fdHJhbnNwYXJlbmN5Q291bnQ7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAg
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOworI2lmICFFTkFCTEUoVFJBTlNQQVJFTkNZ
TEFZRVJfVVNFU19DT01QT1NJVElOR19PUEVSQVRPUikKKyAgICBBU1NFUlQob3AgPT0gQ29tcG9z
aXRlU291cmNlT3Zlcik7CisjZW5kaWYKKyAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVy
KG9wKTsKICAgICBBU1NFUlQobV90cmFuc3BhcmVuY3lDb3VudCA+IDApOwogICAgIC0tbV90cmFu
c3BhcmVuY3lDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjdiZWY0Zi4uY2UxMzE3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM2
Niw3ICszNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0VXBkYXRp
bmdDb250cm9sVGludHMoYm9vbCk7CiAKICAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxh
eWVyKGZsb2F0IG9wYWNpdHkpOwotICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CisgICAgICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3IgPSBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICAgICAgYm9vbCBpc0luVHJhbnNwYXJlbmN5TGF5ZXIo
KSBjb25zdDsKIAogICAgICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0OwpAQCAtNTQ0LDcgKzU0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAgICAgdm9pZCBiZWdpblBs
YXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7Ci0gICAgICAgIHZvaWQgZW5k
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICB2b2lkIGVuZFBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsKIAogICAg
ICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcAppbmRleCBiYTg4NmEwLi45YjRmZWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwCkBAIC04OTEsOCArODkxLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBtX2Rh
dGEtPmxheWVycy5hcHBlbmQob3BhY2l0eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQ
bGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogeworICAgIFVO
VVNFRF9QQVJBTShvcCk7CisgICAgQVNTRVJUKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCmluZGV4IDRiNjE5MmYuLjMzMTkwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4
Nyw4ICs5ODcsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFu
c2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAg
ICBVTlVTRURfUEFSQU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
KTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29u
dGV4dE9wZW5WRy5jcHAKaW5kZXggNDQxN2Q3Yi4uZjlkYTgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNz
Q29udGV4dE9wZW5WRy5jcHAKQEAgLTI5NCw4ICsyOTQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIFVO
VVNFRF9QQVJBTShvcGFjaXR5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3Jt
VHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgVU5VU0VEX1BB
UkFNKG9wKTsKKyAgICBBU1NFUlQob3AgPT0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAK
aW5kZXggYWE0OWUyZC4uN2QwNzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCBvcGFjaXR5KQogICAgICsrbV9kYXRhLT5sYXllckNvdW50OwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVy
YXRvciBvcCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC0xMDk5LDYgKzEwOTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1U
cmFuc3BhcmVuY3lMYXllcigpCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBw
LT5zYXZlKCk7CiAgICAgcC0+cmVzZXRUcmFuc2Zvcm0oKTsKKyAgICBwLT5zZXRDb21wb3NpdGlv
bk1vZGUodG9RdENvbXBvc2l0aW9uTW9kZShvcCkpOwogICAgIHAtPnNldE9wYWNpdHkobGF5ZXIt
Pm9wYWNpdHkpOwogICAgIHAtPmRyYXdQaXhtYXAobGF5ZXItPm9mZnNldCwgbGF5ZXItPnBpeG1h
cCk7CiAgICAgcC0+cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGY3
OWNmYi4uNzBiMzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0yODMsOCArMjgz
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2tDYW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBv
cCkKIHsKKyAgICBVTlVTRURfUEFSQU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRX
aW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGlj
c0NvbnRleHRXaW5DRS5jcHAKaW5kZXggOTZiYzNkYy4uMzY5ZTk0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcApAQCAtMTExOSw4ICsxMTE5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBt
X2RhdGEtPm1fb3BhY2l0eSAqPSBvcGFjaXR5OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5k
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAgICBV
TlVTRURfUEFSQU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
ICAgICBtX2RhdGEtPnJlc3RvcmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCmluZGV4IDQ1MjYz
OGIuLjI0ZDY1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKQEAgLTY3Myw4ICs2NzMsMTAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOyAKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBs
YXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQoteyAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQ
bGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFVO
VVNFRF9QQVJBTShvcCk7CisgICAgQVNTRVJUKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
ICAgIG5vdEltcGxlbWVudGVkKCk7IAogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMwN2MzMy4uZDIzMGUzMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTAyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAg
ICAgIE9wdGltaXplIENhbnZhcyBmaWxsIGFuZCBkcmF3SW1hZ2Ugd2l0aCBTb3VyY2VJbiwgRGVz
dGluYXRpb25JbiwgU291cmNlT3V0LAorICAgICAgICBhbmQgRGVzdGluYXRpb25BdG9wIHVzaW5n
IHRyYW5zcGFyZW5jeUxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk2NTkKKworICAgICAgICBBZGQgRU5BQkxFKFRSQU5TUEFSRU5DWUxBWUVS
X1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IpIGZsYWcuCisgICAgICAgIEl0IGlzIG9ubHkgdXNl
ZCBpbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGN1cnJlbnRseS4KKyAgICAgICAgUXQgb25s
eSBlbmFibGVzIHRoaXMgZmxhZywgY3VycmVudGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJl
cy5wcmY6CisKIDIwMTItMDItMjUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBDaGFuZ2UgQnVpbGQgYm90IHdpdGggQnVpbGRBbmRUZXN0IGJvdCBm
b3IgRUZMIHBvcnQuCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCmlu
ZGV4IGE5YjgyOWMuLjg1Y2EyMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVh
dHVyZXMucHJmCkBAIC04Nyw2ICs4Nyw3IEBAIGhhdmVRdCg0KTp1bml4OiFtYWM6IWVtYmVkZGVk
IHsKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAogIWNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9BTklNQVRJT05fQVBJPS4pOiBERUZJTkVTICs9IEVOQUJMRV9BTklNQVRJT05fQVBJPTAK
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUVRfSU1BR0VfREVDT0RFUj0uKTogREVGSU5FUyAr
PSBFTkFCTEVfUVRfSU1BR0VfREVDT0RFUj0xCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1RS
QU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1I9Lik6IERFRklORVMgKz0g
RU5BQkxFX1RSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1I9MQogCiAj
IEVuYWJsZWQgaW4gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGlmIG5vdCBz
ZXQKICMgV2UgaGF2ZSB0byBkbyB0aGUgc2FtZSB0byBiZSBhYmxlIHRvIGRpc2FibGUgdGhlIGZl
YXR1cmUgaW4gYnVpbGQtd2Via2l0Ci0tIAoxLjcuNS40Cgo=
</data>
<flag name="review"
          id="131706"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="131707"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129128</attachid>
            <date>2012-02-27 16:42:06 -0800</date>
            <delta_ts>2014-04-07 06:01:31 -0700</delta_ts>
            <desc>patch v.4</desc>
            <filename>0001-Optimize-Canvas-fill-and-drawImage-with-SourceIn-Des.patch</filename>
            <type>text/plain</type>
            <size>17474</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBiM2JiMjAwOTE5ZjAxOWY5NjVlZWY4MDkzMDU1ZDlhZWFkM2Q5OTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjggRmViIDIwMTIgMDk6Mzg6MTQgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sCiBEZXN0
aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcKIHRyYW5zcGFy
ZW5jeUxheWVyLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5
CgpTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LCBhbmQgRGVzdGluYXRpb25BdG9w
IG5lZWQgdG8gdXBkYXRlIGFuCmVudGlyZSBjYW52YXMsIGFuZCB0cmFuc3BhcmVuY3lMYXllciBj
YW4gaGFuZGxlIHdlbGwgaWYgYW1lbmRpbmcgbGl0dGxlLgpJIHJlcHJlc2VudGVkIGl0IHVzaW5n
IEdyYXBoaWNzQ29udGV4dFF0IHRoYXQgd2FzIGVhc3kgdG8gY2hhbmdlLgpUaGUgcHJldmlvdXMg
aW1wbGVtZW50YXRpb24gcmVxdWlyZXMgbmV3IGdyYXBoaWNzQ29udGV4dCBjcmVhdGlvbi4gSXQg
aXMgYmV0dGVyIHRvCmRlbGVnYXRlIGpvYnMgbGlrZSB0aGlzIHRvIGVhY2ggcGxhdGZvcm0uIEVz
cGVjaWFsbHksIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbgpjYXVzZXMgbGFyZ2UgcGVyZm9y
bWFuY2UgaGl0IHRvIEdQVSBpbXBsZW1lbnRhdGlvbiAoaS5lLiBBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpLgoKSWYgb3RoZXIgcG9ydHMgaW1wbGVtZW50IGVuZFRyYW5zcGFyZW5jeUxheWVyIGxpa2Ug
UXQsIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCBhbmQKZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3
SW1hZ2UgY2FuIGJlIHJlbW92ZWQuCgpEZWZpbmVkIFRSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09N
UE9TSVRJTkdfT1BFUkFUT1IgaW4gR3JhcGhpY3NDb250ZXh0LmgKSXQgaXMgb25seSB1c2VkIGlu
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgY3VycmVudGx5LgpJZiBpbXBsZW1lbnRpbmcgR3Jh
cGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllciB0byBoYW5kbGUKQ29tcG9zaXRlT3Bl
cmF0b3IsIGRlZmluZSB0aGlzIGZsYWcuCgpGb2xsb3dpbmcgdGVzdCBjYXNlcyBjb3ZlciB0aGlz
IHBhdGNoLgogIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAogIGZhc3Qv
Y2FudmFzL2NhbnZhcy1jb21wb3NpdGUtY2FudmFzLmh0bWwKICBmYXN0L2NhbnZhcy9jYW52YXMt
Y29tcG9zaXRlLWZpbGwtcmVwYWludC5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0
ZS1pbWFnZS5odG1sCiAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10cmFuc2Zvcm1jbGlw
Lmh0bWwKICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLmh0bWwKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTcgKysrKysrKysr
KysrKysrKysrKysKIC4uLi9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
ICAgICAgIHwgICAzMiArKysrKysrKysrKwogLi4uL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmggfCAgICAyICsKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgIHwgICAgNyArKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIHwgICAgOCArKy0KIC4uLi9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgICAgICAgIHwgICAgNCArLQogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCAgICAgfCAgICA0ICstCiAuLi4v
Z3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAgICAgICB8ICAgIDQgKy0K
IC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgICAgIHwgICAg
MyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAg
fCAgICA0ICstCiAuLi4vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwICAg
ICAgICB8ICAgIDQgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRX
eC5jcHAgICAgIHwgICAgNiArKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCsp
LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE2MGMwYS4uOTM5OTdiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEyLTAyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIE9wdGltaXplIENhbnZhcyBmaWxsIGFuZCBk
cmF3SW1hZ2Ugd2l0aCBTb3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LAorICAgICAg
ICBhbmQgRGVzdGluYXRpb25BdG9wIHVzaW5nIHRyYW5zcGFyZW5jeUxheWVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NTkKKworICAgICAgICBT
b3VyY2VJbiwgRGVzdGluYXRpb25JbiwgU291cmNlT3V0LCBhbmQgRGVzdGluYXRpb25BdG9wIG5l
ZWQgdG8gdXBkYXRlIGFuCisgICAgICAgIGVudGlyZSBjYW52YXMsIGFuZCB0cmFuc3BhcmVuY3lM
YXllciBjYW4gaGFuZGxlIHdlbGwgaWYgYW1lbmRpbmcgbGl0dGxlLgorICAgICAgICBJIHJlcHJl
c2VudGVkIGl0IHVzaW5nIEdyYXBoaWNzQ29udGV4dFF0IHRoYXQgd2FzIGVhc3kgdG8gY2hhbmdl
LgorICAgICAgICBUaGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgbmV3IGdyYXBo
aWNzQ29udGV4dCBjcmVhdGlvbi4gSXQgaXMgYmV0dGVyIHRvCisgICAgICAgIGRlbGVnYXRlIGpv
YnMgbGlrZSB0aGlzIHRvIGVhY2ggcGxhdGZvcm0uIEVzcGVjaWFsbHksIHRoZSBwcmV2aW91cyBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBjYXVzZXMgbGFyZ2UgcGVyZm9ybWFuY2UgaGl0IHRvIEdQ
VSBpbXBsZW1lbnRhdGlvbiAoaS5lLiBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpLgorCisgICAgICAg
IElmIG90aGVyIHBvcnRzIGltcGxlbWVudCBlbmRUcmFuc3BhcmVuY3lMYXllciBsaWtlIFF0LCBm
dWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwgYW5kCisgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYWdlIGNhbiBiZSByZW1vdmVkLgorCisgICAgICAgIERlZmluZWQgVFJBTlNQQVJFTkNZ
TEFZRVJfVVNFU19DT01QT1NJVElOR19PUEVSQVRPUiBpbiBHcmFwaGljc0NvbnRleHQuaAorICAg
ICAgICBJdCBpcyBvbmx5IHVzZWQgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjdXJyZW50
bHkuCisgICAgICAgIElmIGltcGxlbWVudGluZyBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFy
ZW5jeUxheWVyIHRvIGhhbmRsZQorICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwgZGVmaW5lIHRo
aXMgZmxhZy4KKworICAgICAgICBGb2xsb3dpbmcgdGVzdCBjYXNlcyBjb3ZlciB0aGlzIHBhdGNo
LgorICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAorICAg
ICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtY2FudmFzLmh0bWwKKyAgICAgICAg
ICBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWZpbGwtcmVwYWludC5odG1sCisgICAgICAg
ICAgZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1pbWFnZS5odG1sCisgICAgICAgICAgZmFz
dC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10cmFuc2Zvcm1jbGlwLmh0bWwKKyAgICAgICAgICBm
YXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLmh0bWwKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVu
ZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFu
c3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhp
Y3NDb250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorCisyMDEyLTAyLTI3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtRdF0gRml4
ZWQgaW5jb3JyZWN0IHNpemUgcGl4bWFwIGNyZWF0aW9uIGZvciBhIG5ldyB0cmFuc3BhcmVuY3kg
bGF5ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTY1OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAwZDE5NWFjLi44NmE5ZmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTkzMiw3ICs5MzIsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGwoKQogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChpc0Z1bGxD
YW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKSB7CisjaWZkZWYg
VFJBTlNQQVJFTkNZTEFZRVJfVVNFU19DT01QT1NJVElOR19PUEVSQVRPUgorICAgICAgICAgICAg
Yy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIGMtPnNhdmUoKTsKKyAg
ICAgICAgICAgIGMtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICAgICAgICAgIGMtPmZpbGxQYXRoKG1fcGF0aCk7CisgICAgICAgICAgICBjLT5yZXN0b3Jl
KCk7CisgICAgICAgICAgICBjLT5lbmRUcmFuc3BhcmVuY3lMYXllcihzdGF0ZSgpLm1fZ2xvYmFs
Q29tcG9zaXRlKTsKKyNlbHNlCiAgICAgICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwo
bV9wYXRoKTsKKyNlbmRpZgogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAg
ICAgICB9IGVsc2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29w
eSkgewogICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKQEAgLTEwNDQsNyArMTA1MywxNiBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaQogICAgICAgICBjLT5maWxsUmVjdChyZWN0KTsKICAgICAg
ICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29t
cG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgeworI2lmZGVmIFRSQU5TUEFS
RU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IKKyAgICAgICAgYy0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgYy0+c2F2ZSgpOworICAgICAgICBjLT5zZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGMtPmZpbGxSZWN0
KHJlY3QpOworICAgICAgICBjLT5yZXN0b3JlKCk7CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOworI2Vsc2UKICAgICAgICAgZnVsbENh
bnZhc0NvbXBvc2l0ZWRGaWxsKHJlY3QpOworI2VuZGlmCiAgICAgICAgIGRpZERyYXdFbnRpcmVD
YW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29t
cG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwpAQCAtMTI3OSw3ICsxMjk3LDEz
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxl
bWVudCogaW1hZ2UsIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21w
b3NpdGVNb2RlKG9wKSkgeworI2lmZGVmIFRSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJ
TkdfT1BFUkFUT1IKKyAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAg
ICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5k
ZXJlcigpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgYy0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIob3ApOworI2Vsc2UKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1h
Z2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9w
KTsKKyNlbmRpZgogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xMzY1
LDcgKzEzODksMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShI
VE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogICAgICAgICBjLT5kcmF3SW1h
Z2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBidWZmZXJTcmNS
ZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgp
Lm1fZ2xvYmFsQ29tcG9zaXRlKSkgeworI2lmZGVmIFRSQU5TUEFSRU5DWUxBWUVSX1VTRVNfQ09N
UE9TSVRJTkdfT1BFUkFUT1IKKyAgICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHN0UmVjdCwgYnVmZmVyU3JjUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGMt
PmVuZFRyYW5zcGFyZW5jeUxheWVyKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOworI2Vsc2UK
ICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoYnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJTcmNSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9z
aXRlKTsKKyNlbmRpZgogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAg
ICAgY2xlYXJDYW52YXMoKTsKQEAgLTE1NDYsNiArMTU3Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
SW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCisjaWZuZGVmIFRSQU5TUEFSRU5DWUxBWUVS
X1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IKIHN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwg
c3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsKQEAgLTE2MTAsNiArMTY0MSw3IEBAIHRl
bXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFz
Q29tcG9zaXRlZEZpbGwoY29uc3QKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCks
IGJ1ZmZlclJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogfQorI2VuZGlmCiAKIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA1NTgxZWU5
Li4yMzdhN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzA2LDggKzMwNiwxMCBAQCBwcml2YXRlOgogICAg
IFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IElu
dFJlY3QmKTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IElu
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKKyNpZm5kZWYgVFJBTlNQQVJFTkNZTEFZRVJf
VVNFU19DT01QT1NJVElOR19PUEVSQVRPUgogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWRGaWxsKGNvbnN0IFQmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2
b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CisjZW5kaWYK
IAogICAgIHZvaWQgcHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50KiBn
cmFkaWVudCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGY3N2I4YTEuLjA3YjkyOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtMzQwLDkgKzM0MCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICsrbV90cmFuc3BhcmVuY3lDb3VudDsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkK
IHsKLSAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CisjaWZuZGVmIFRSQU5TUEFS
RU5DWUxBWUVSX1VTRVNfQ09NUE9TSVRJTkdfT1BFUkFUT1IKKyAgICBBU1NFUlQob3AgPT0gQ29t
cG9zaXRlU291cmNlT3Zlcik7CisjZW5kaWYKKyAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKG9wKTsKICAgICBBU1NFUlQobV90cmFuc3BhcmVuY3lDb3VudCA+IDApOwogICAgIC0tbV90
cmFuc3BhcmVuY3lDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjdiZWY0Zi4uZmUzYmNjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTk5LDYgKzk5LDEwIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKICNpbmNsdWRlIDx3
aW5kb3dzLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2RlZmluZSBUUkFOU1BBUkVO
Q1lMQVlFUl9VU0VTX0NPTVBPU0lUSU5HX09QRVJBVE9SCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKQEAgLTM2Niw3ICszNzAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0VXBkYXRpbmdDb250cm9s
VGludHMoYm9vbCk7CiAKICAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0
IG9wYWNpdHkpOwotICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAg
IHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKICAgICAgICAgYm9vbCBpc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdDsK
IAogICAgICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0OwpAQCAtNTQ0LDcgKzU0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAgICAgdm9pZCBiZWdpblBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7Ci0gICAgICAgIHZvaWQgZW5kUGxhdGZvcm1U
cmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICB2b2lkIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICAgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsKIAogICAgICAgICBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBiYTg4NmEwLi45YjRmZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCkBAIC04OTEsOCArODkxLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBs
YXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBtX2RhdGEtPmxheWVy
cy5hcHBlbmQob3BhY2l0eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9y
bVRyYW5zcGFyZW5jeUxheWVyKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRy
YW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogeworICAgIFVOVVNFRF9QQVJB
TShvcCk7CisgICAgQVNTRVJUKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IDRiNjE5MmYuLjMzMTkwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw4ICs5ODcs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93
blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxh
dGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAgICBVTlVTRURf
UEFSQU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5W
Ry5jcHAKaW5kZXggNDQxN2Q3Yi4uZjlkYTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9w
ZW5WRy5jcHAKQEAgLTI5NCw4ICsyOTQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2lu
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIFVOVVNFRF9QQVJB
TShvcGFjaXR5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNw
YXJlbmN5TGF5ZXIoKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIoQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgVU5VU0VEX1BBUkFNKG9wKTsK
KyAgICBBU1NFUlQob3AgPT0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggYWE0
OWUyZC4uN2QwNzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTA4Miw3ICsxMDgyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcGFjaXR5KQogICAgICsrbV9kYXRhLT5sYXllckNvdW50OwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDk5
LDYgKzEwOTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcigpCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBwLT5zYXZlKCk7
CiAgICAgcC0+cmVzZXRUcmFuc2Zvcm0oKTsKKyAgICBwLT5zZXRDb21wb3NpdGlvbk1vZGUodG9R
dENvbXBvc2l0aW9uTW9kZShvcCkpOwogICAgIHAtPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkp
OwogICAgIHAtPmRyYXdQaXhtYXAobGF5ZXItPm9mZnNldCwgbGF5ZXItPnBpeG1hcCk7CiAgICAg
cC0+cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGY3OWNmYi4uNzBi
MzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0yODMsOCArMjgzLDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQg
b3BhY2l0eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDYW52
YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAg
ICBVTlVTRURfUEFSQU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
KTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgcGxh
dGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRX
aW5DRS5jcHAKaW5kZXggOTZiYzNkYy4uMzY5ZTk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bkNFLmNwcApAQCAtMTExOSw4ICsxMTE5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdp
blBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBtX2RhdGEtPm1f
b3BhY2l0eSAqPSBvcGFjaXR5OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcigpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1U
cmFuc3BhcmVuY3lMYXllcihDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAgICBVTlVTRURfUEFS
QU0ob3ApOworICAgIEFTU0VSVChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBtX2Rh
dGEtPnJlc3RvcmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCmluZGV4IDQ1MjYzOGIuLjI0ZDY1
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBo
aWNzQ29udGV4dFd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKQEAgLTY3Myw4ICs2NzMsMTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOyAKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIoKQoteyAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRy
YW5zcGFyZW5jeUxheWVyKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFVOVVNFRF9QQVJB
TShvcCk7CisgICAgQVNTRVJUKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIG5vdElt
cGxlbWVudGVkKCk7IAogfQogCi0tIAoxLjcuNS40Cgo=
</data>
<flag name="review"
          id="131717"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="131718"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228730</attachid>
            <date>2014-04-07 06:01:31 -0700</date>
            <delta_ts>2014-04-11 05:57:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>canvas-fill-composite.patch</filename>
            <type>text/plain</type>
            <size>6563</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2FudmFzL2NvbXBvc2l0aW5nLWRyYXdpbWFn
ZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9DYW52YXMvY29tcG9zaXRpbmctZHJhd2ltYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlZTViNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NhbnZhcy9jb21wb3NpdGluZy1kcmF3aW1hZ2Uu
aHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Cit2YXIgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Citzb3VyY2Uu
d2lkdGggPSAzMDA7Citzb3VyY2UuaGVpZ2h0ID0gMTUwOworc291cmNlLmdldENvbnRleHQoIjJk
IikuZmlsbFN0eWxlID0gJ3JnYmEoMCwxMjgsMCwwLjUpJzsKK3NvdXJjZS5nZXRDb250ZXh0KCIy
ZCIpLmZpbGxSZWN0KDAsIDAsIHNvdXJjZS53aWR0aCwgc291cmNlLmhlaWdodCk7CisKK3ZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK3RhcmdldC53aWR0aCA9
IHNvdXJjZS53aWR0aDsKK3RhcmdldC5oZWlnaHQgPSBzb3VyY2UuaGVpZ2h0OwordmFyIGNvbnRl
eHQgPSB0YXJnZXQuZ2V0Q29udGV4dCgiMmQiKQorY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVy
YXRpb24gPSAiZGVzdGluYXRpb24tYXRvcCI7CisKK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVSdW5z
UGVyU2Vjb25kKHtydW46IGZ1bmN0aW9uKCkgeworICAgIGNvbnRleHQuZHJhd0ltYWdlKHNvdXJj
ZSwgMCwgMCk7ICAgCit9fSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2FudmFzL2NvbXBvc2l0aW5nLWZpbGxSZWN0Lmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NhbnZhcy9jb21wb3NpdGluZy1maWxsUmVjdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNGI2YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NhbnZhcy9jb21wb3NpdGluZy1maWxsUmVjdC5odG1sCkBAIC0wLDAg
KzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Cit0YXJnZXQud2lkdGggPSAzMDA7Cit0
YXJnZXQuaGVpZ2h0ID0gMTUwOwordmFyIGNvbnRleHQgPSB0YXJnZXQuZ2V0Q29udGV4dCgiMmQi
KTsKK2NvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImRlc3RpbmF0aW9uLWF0b3Ai
OworY29udGV4dC5maWxsU3R5bGUgPSAicmdiYSgwLDEyOCwwLDAuNSkiOworCitQZXJmVGVzdFJ1
bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7cnVuOiBmdW5jdGlvbigpIHsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KDEwLDEwLDEwLDEwKTsKK319KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZwppbmRleCBiZTVlM2M4Li42MWFmMGEzIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE0LTA0LTA3ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgT3B0aW1pemUgQ2FudmFzIGZpbGwgYW5kIGRyYXdJbWFnZSB3aXRoIFNvdXJj
ZUluLCBEZXN0aW5hdGlvbkluLCBTb3VyY2VPdXQsIGFuZCBEZXN0aW5hdGlvbkF0b3AgdXNpbmcg
dHJhbnNwYXJlbmN5TGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03OTY1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgZmlsbFJlY3QoKSBhbmQgZHJhd0lt
YWdlKCkgb24gY29tcG9zaXRlZCBjb250ZXh0cy4KKworICAgICAgICAqIENhbnZhcy9jb21wb3Np
dGluZy1kcmF3aW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogQ2FudmFzL2NvbXBvc2l0aW5n
LWZpbGxSZWN0Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTA0LTAyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3N2Nm
YzFmLi4xMjkwMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDQtMDcgIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDYW52YXMg
ZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sIERlc3RpbmF0aW9uSW4sIFNvdXJjZU91
dCwgYW5kIERlc3RpbmF0aW9uQXRvcCB1c2luZyB0cmFuc3BhcmVuY3lMYXllci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemUgZmlsbCgpIGFu
ZCBmaWxsUmVjdCgpIG9wZXJhdGlvbnMgaW4gQ2FudmFzIG9uIGNvbXBvc2l0ZWQgY29udGV4dHMg
YnkKKyAgICAgICAgMTAgdG8gMjAgdGltZXMgb24gQ0cuCisKKyAgICAgICAgUmVwbGFjaW5nIHRo
ZSBJbWFnZUJ1ZmZlciBjb2RlIGJ5IHRyYW5zcGFyZW5jeSBsYXllcnMgYWxsb3dzIHRoZQorICAg
ICAgICBncmFwaGljcyBsaWJyYXJ5IHRvIG9wdGltaXplIHRoZSBkcmF3aW5nLgorCisgICAgICAg
IERvaW5nIHRoZSBzYW1lIGZvciBkcmF3SW1hZ2UoKSB3b3VsZCBnaXZlIHBlcmZvcm1hbmNlIHJl
Z3Jlc3Npb25zLgorCisgICAgICAgIEFkZGVkIHBlcmZvcm1hbmNlIHRlc3RzIGZvciBkcmF3SW1h
Z2UoKSBhbmQgZmlsbFJlY3QoKS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmZpbGxJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxNC0wNC0wNCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgRW5hYmxlIFdF
Ql9SRVBMQVkgZm9yIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdlNTk1OTkuLjMx
NmU4ZGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTQxLDcgKzk0MSw5IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgU3Ry
aW5nJiB3aW5kCiAgICAgICAgIGMtPnNldEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKIAogICAgICAg
ICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRl
KSkgewotICAgICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKHBhdGgpOworICAgICAg
ICAgICAgYy0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIGMtPmZpbGxQ
YXRoKHBhdGgpOworICAgICAgICAgICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSgp
Lm1fZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgICAgIGNsZWFy
Q2FudmFzKCk7CkBAIC0xMTI2LDcgKzExMjgsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaQog
ICAgICAgICBjLT5maWxsUmVjdChyZWN0KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygp
OwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xv
YmFsQ29tcG9zaXRlKSkgewotICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwocmVjdCk7
CisgICAgICAgIGMtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIGMtPmZpbGxS
ZWN0KHJlY3QpOworICAgICAgICBjLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICBk
aWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKQEAgLTE2
ODMsMzAgKzE2ODcsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKAogICAgIGNvbXBvc2l0ZUJ1
ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZlclJlY3QsIG9wKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3Mg
VD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmls
bChjb25zdCBUJiBhcmVhKQotewotICAgIEFTU0VSVChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2Rl
KHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKTsKLQotICAgIEludFJlY3QgYnVmZmVyUmVjdCA9
IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChhcmVhLCAwKTsKLSAgICBpZiAoYnVmZmVy
UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gY3Jl
YXRlQ29tcG9zaXRpbmdCdWZmZXIoYnVmZmVyUmVjdCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFBhdGggcGF0aCA9IHRyYW5zZm9ybUFyZWFUb0RldmljZShhcmVh
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZVNvdXJjZU92ZXIpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoRmxvYXRTaXpl
KC1idWZmZXJSZWN0LngoKSwgLWJ1ZmZlclJlY3QueSgpKSk7Ci0gICAgbW9kaWZpYWJsZVN0YXRl
KCkubV9maWxsU3R5bGUuYXBwbHlGaWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0KCkpOwotCi0gICAg
YnVmZmVyLT5jb250ZXh0KCktPmZpbGxQYXRoKHBhdGgpOwotCi0gICAgY29tcG9zaXRlQnVmZmVy
KGJ1ZmZlci5nZXQoKSwgYnVmZmVyUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7Ci19
Ci0KIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNo
Ym9hcmQoQ2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdAogewogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggNDdmY2RmYy4uMjMwNWEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKQEAgLTMyMiw3ICszMjIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbmZsYXRlU3Ryb2tl
UmVjdChGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWRGaWxsKGNvbnN0IFQmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2
b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICB2
b2lkIHByZXBhcmVHcmFkaWVudEZvckRhc2hib2FyZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQp
IGNvbnN0Owo=
</data>
<flag name="review"
          id="253050"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229128</attachid>
            <date>2014-04-11 05:57:48 -0700</date>
            <delta_ts>2014-04-14 01:00:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>canvas-fill-composite.patch</filename>
            <type>text/plain</type>
            <size>4262</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYjc0NGM2Li5jYzg0NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTQtMDQtMDcgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sIERlc3Rp
bmF0aW9uSW4sIFNvdXJjZU91dCwgYW5kIERlc3RpbmF0aW9uQXRvcCB1c2luZyB0cmFuc3BhcmVu
Y3lMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBP
cHRpbWl6ZSBmaWxsKCkgYW5kIGZpbGxSZWN0KCkgb3BlcmF0aW9ucyBpbiBDYW52YXMgb24gY29t
cG9zaXRlZCBjb250ZXh0cyBieQorICAgICAgICAxMCB0byAyMCB0aW1lcyBvbiBDRy4KKworICAg
ICAgICBSZXBsYWNpbmcgdGhlIEltYWdlQnVmZmVyIGNvZGUgYnkgdHJhbnNwYXJlbmN5IGxheWVy
cyBhbGxvd3MgdGhlCisgICAgICAgIGdyYXBoaWNzIGxpYnJhcnkgdG8gb3B0aW1pemUgdGhlIGRy
YXdpbmcuCisKKyAgICAgICAgRG9pbmcgdGhlIHNhbWUgZm9yIGRyYXdJbWFnZSgpIHdvdWxkIGdp
dmUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMuCisKKyAgICAgICAgQWRkZWQgcGVyZm9ybWFuY2Ug
dGVzdHMgd2l0aCByMTY3MTI0IGFscmVhZHkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCk6IERlbGV0ZWQuCisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisKIDIwMTQtMDQt
MTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkdMOiBuZWVk
IGVycm9yIGNoZWNraW5nIGFmdGVyIHRleHR1cmUgYW5kIGJ1ZmZlciB1cGxvYWRzIGluIHNvbWUg
Y2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdlNTk1OTkuLjMxNmU4ZGUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtOTQxLDcgKzk0MSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
SW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgU3RyaW5nJiB3aW5kCiAgICAgICAgIGMt
PnNldEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKIAogICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29t
cG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewotICAgICAgICAgICAgZnVs
bENhbnZhc0NvbXBvc2l0ZWRGaWxsKHBhdGgpOworICAgICAgICAgICAgYy0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIGMtPmZpbGxQYXRoKHBhdGgpOworICAgICAgICAg
ICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVD
YW52YXMoKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlID09
IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7CkBAIC0xMTI2LDcg
KzExMjgsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFJlY3QoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaQogICAgICAgICBjLT5maWxsUmVjdChy
ZWN0KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNG
dWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewotICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwocmVjdCk7CisgICAgICAgIGMtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOworICAgICAgICBj
LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNv
cHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKQEAgLTE2ODMsMzAgKzE2ODcsNiBAQCB0ZW1w
bGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1
ZmZlclJlY3QsIG9wKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChjb25zdCBUJiBhcmVhKQotewot
ICAgIEFTU0VSVChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21w
b3NpdGUpKTsKLQotICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGNhbGN1bGF0ZUNvbXBvc2l0aW5n
QnVmZmVyUmVjdChhcmVhLCAwKTsKLSAgICBpZiAoYnVmZmVyUmVjdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIo
YnVmZmVyUmVjdCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFBh
dGggcGF0aCA9IHRyYW5zZm9ybUFyZWFUb0RldmljZShhcmVhKTsKLSAgICBidWZmZXItPmNvbnRl
eHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoRmxvYXRTaXplKC1idWZmZXJSZWN0LngoKSwgLWJ1
ZmZlclJlY3QueSgpKSk7Ci0gICAgbW9kaWZpYWJsZVN0YXRlKCkubV9maWxsU3R5bGUuYXBwbHlG
aWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0KCkpOwotCi0gICAgYnVmZmVyLT5jb250ZXh0KCktPmZp
bGxQYXRoKHBhdGgpOwotCi0gICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVy
UmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7Ci19Ci0KIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGllbnQq
IGdyYWRpZW50KSBjb25zdAogewogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKaW5kZXggNDdmY2RmYy4uMjMwNWEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTMyMiw3ICszMjIsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBpbmZsYXRlU3Ryb2tlUmVjdChGbG9hdFJlY3QmKSBjb25z
dDsKIAotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxs
KGNvbnN0IFQmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3Np
dGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICB2b2lkIHByZXBhcmVHcmFkaWVudEZv
ckRhc2hib2FyZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229271</attachid>
            <date>2014-04-14 01:00:58 -0700</date>
            <delta_ts>2014-04-14 09:02:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>canvas-fill-composite.patch</filename>
            <type>text/plain</type>
            <size>8740</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOWRjMjQ4Li45NjNhMWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDQt
MTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBD
YW52YXMgZmlsbCBhbmQgZHJhd0ltYWdlIHdpdGggU291cmNlSW4sIERlc3RpbmF0aW9uSW4sIFNv
dXJjZU91dCwgYW5kIERlc3RpbmF0aW9uQXRvcCB1c2luZyB0cmFuc3BhcmVuY3lMYXllci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHByZXZp
b3VzbHkgZmFpbGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDE0LTA0LTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY3MDczLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ZTRiYjYzLi41YmM2NmFk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgxMSwx
MCArMTgxMSw2IEBAIHdlYmtpdC5vcmcvYi8xMDcxOTQgaHR0cC90ZXN0cy9zZWN1cml0eS9uby1p
bmRleGVkZGItZnJvbS1zYW5kYm94Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDcxOTQg
Y3J5cHRvL3N1YnRsZS9yc2EtaW5kZXhlZGRiLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MDcxOTQgaW5zcGVjdG9yLXByb3RvY29sL2luZGV4ZWRkYi9iYXNpY3MuaHRtbCBbIFNraXAgXQog
Ci0jIENvbXBvc2l0ZSBjYW52YXMgdGVzdHMgd2l0aCBhbHBoYSBmYWlsaW5nLgotd2Via2l0Lm9y
Zy9iLzEzMTMwMyBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLXN0cm9rZS1hbHBoYS5odG1s
IFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTMxMzAzIGZhc3QvY2FudmFzL2NhbnZhcy1jb21w
b3NpdGUtdGV4dC1hbHBoYS5odG1sIFsgRmFpbHVyZSBdCi0KICMgVGVzdCBtYXJrZWQgaW4gVGVz
dEV4cGVjdGF0aW9ucyBhcyBmYWlsaW5nIG9uIG5vbi1yZXRpbmEgZGlzcGxheXMsIHBhc3Npbmcg
b24gR1RLIHBvcnQKIHdlYmtpdC5vcmcvYi8xMjkxMTMgZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNv
bC9jbGlwcGluZy5odG1sIFsgUGFzcyBdCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYjc0NGM2Li5lY2ZhOWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTQtMDQtMTQgIERpcmsgU2NodWx6ZSAg
PGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDYW52YXMgZmlsbCBhbmQgZHJh
d0ltYWdlIHdpdGggU291cmNlSW4sIERlc3RpbmF0aW9uSW4sIFNvdXJjZU91dCwgYW5kIERlc3Rp
bmF0aW9uQXRvcCB1c2luZyB0cmFuc3BhcmVuY3lMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemUgZmlsbCgpIGFuZCBmaWxsUmVjdCgp
IG9wZXJhdGlvbnMgaW4gQ2FudmFzIG9uIGNvbXBvc2l0ZWQgY29udGV4dHMgYnkKKyAgICAgICAg
MTAgdG8gMjAgdGltZXMgb24gQ0cuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBJbWFnZUJ1ZmZl
ciBjb2RlIGJ5IHRyYW5zcGFyZW5jeSBsYXllcnMgYWxsb3dzIHRoZQorICAgICAgICBncmFwaGlj
cyBsaWJyYXJ5IHRvIG9wdGltaXplIHRoZSBkcmF3aW5nLgorCisgICAgICAgIERvaW5nIHRoZSBz
YW1lIGZvciBkcmF3SW1hZ2UoKSB3b3VsZCBnaXZlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLgor
CisgICAgICAgIEFuIGlubGluZSBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIHRyYW5zcGFyZW5jeSBs
YXllciBmb3IgQ0cuIENhaXJvIGdyYXBoaWNzCisgICAgICAgIGRvZXMgbm90IGNvbXBvc2l0ZSBj
b3JyZWN0bHkgd2hlbiBhIHRyYW5zcGFyZW5jeSBsYXllciBnZXRzIGNyZWF0ZWQuIAorICAgICAg
ICBUaGUgaW5saW5lIGZ1bmN0aW9uIGlzIGp1c3QgYSBOT09QIGZvciBDYWlyby4KKworICAgICAg
ICBUaGlzIGZpeGVzIGJ1ZyAxMzEzMDMgYXMgd2VsbC4KKworICAgICAgICBBZGRlZCBwZXJmb3Jt
YW5jZSB0ZXN0cyB3aXRoIHIxNjcxMjQgYWxyZWFkeS4KKworICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YmVnaW5Db21wb3NpdGVMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVuZENvbXBvc2l0ZUxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxD
YW52YXNDb21wb3NpdGVkRmlsbCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisKIDIwMTQtMDQtMTAgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkdMOiBuZWVkIGVycm9yIGNoZWNraW5nIGFmdGVy
IHRleHR1cmUgYW5kIGJ1ZmZlciB1cGxvYWRzIGluIHNvbWUgY2FzZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmlu
ZGV4IDdlNTk1OTkuLjZmZDdiYWQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTQxLDcgKzk0MSw5IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYg
cGF0aCwgY29uc3QgU3RyaW5nJiB3aW5kCiAgICAgICAgIGMtPnNldEZpbGxSdWxlKG5ld1dpbmRS
dWxlKTsKIAogICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1f
Z2xvYmFsQ29tcG9zaXRlKSkgewotICAgICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxs
KHBhdGgpOworICAgICAgICAgICAgYmVnaW5Db21wb3NpdGVMYXllcigpOworICAgICAgICAgICAg
Yy0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgICAgICBlbmRDb21wb3NpdGVMYXllcigpOwogICAg
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICB9IGVsc2UgaWYgKHN0YXRl
KCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICAgICAgY2xl
YXJDYW52YXMoKTsKQEAgLTk3MSw5ICs5NzMsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmICghcGF0aC5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUo
KS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKLSAgICAgICAgICAgIGMtPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoMSk7CisgICAgICAgICAgICBiZWdpbkNvbXBvc2l0ZUxheWVyKCk7CiAgICAgICAgICAg
ICBjLT5zdHJva2VQYXRoKHBhdGgpOwotICAgICAgICAgICAgYy0+ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKKyAgICAgICAgICAgIGVuZENvbXBvc2l0ZUxheWVyKCk7CiAgICAgICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5tX2dsb2JhbENv
bXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwpA
QCAtMTAwNCw2ICsxMDA2LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlw
SW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgU3RyaW5nJiB3aW5kCiAgICAgYy0+Y2Fu
dmFzQ2xpcChwYXRoLCBuZXdXaW5kUnVsZSk7CiB9CiAKK2lubGluZSB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6YmVnaW5Db21wb3NpdGVMYXllcigpCit7CisjaWYgIVVTRShDQUlSTykK
KyAgICBkcmF3aW5nQ29udGV4dCgpLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZW5kQ29tcG9zaXRl
TGF5ZXIoKQoreworI2lmICFVU0UoQ0FJUk8pCisgICAgZHJhd2luZ0NvbnRleHQoKS0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsgICAgCisjZW5kaWYKK30KKwogYm9vbCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSwgY29u
c3QgU3RyaW5nJiB3aW5kaW5nUnVsZVN0cmluZykKIHsKICAgICByZXR1cm4gaXNQb2ludEluUGF0
aEludGVybmFsKG1fcGF0aCwgeCwgeSwgd2luZGluZ1J1bGVTdHJpbmcpOwpAQCAtMTEyNiw3ICsx
MTQyLDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWkKICAgICAgICAgYy0+ZmlsbFJlY3QocmVj
dCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVs
bENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKLSAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKHJlY3QpOworICAgICAgICBiZWdpbkNvbXBvc2l0
ZUxheWVyKCk7CisgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOworICAgICAgICBlbmRDb21wb3Np
dGVMYXllcigpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAg
Y2xlYXJDYW52YXMoKTsKQEAgLTExNTgsOSArMTE3Niw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9h
dCBoCiAKICAgICBGbG9hdFJlY3QgcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewot
ICAgICAgICBjLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBiZWdpbkNvbXBv
c2l0ZUxheWVyKCk7CiAgICAgICAgIGMtPnN0cm9rZVJlY3QocmVjdCwgc3RhdGUoKS5tX2xpbmVX
aWR0aCk7Ci0gICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGVuZENv
bXBvc2l0ZUxheWVyKCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewogICAg
ICAgICBjbGVhckNhbnZhcygpOwpAQCAtMTY4MywzMCArMTcwMSw2IEBAIHRlbXBsYXRlPGNsYXNz
IFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRE
cmF3SW1hZ2UoCiAgICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyUmVjdCwg
b3ApOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKGNvbnN0IFQmIGFyZWEpCi17Ci0gICAgQVNTRVJU
KGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpOwot
Ci0gICAgSW50UmVjdCBidWZmZXJSZWN0ID0gY2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0
KGFyZWEsIDApOwotICAgIGlmIChidWZmZXJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjbGVh
ckNhbnZhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZmZXJSZWN0
KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUGF0aCBwYXRoID0g
dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGFyZWEpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgYnVmZmVyLT5jb250
ZXh0KCktPnRyYW5zbGF0ZShGbG9hdFNpemUoLWJ1ZmZlclJlY3QueCgpLCAtYnVmZmVyUmVjdC55
KCkpKTsKLSAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2ZpbGxTdHlsZS5hcHBseUZpbGxDb2xvcihi
dWZmZXItPmNvbnRleHQoKSk7Ci0KLSAgICBidWZmZXItPmNvbnRleHQoKS0+ZmlsbFBhdGgocGF0
aCk7Ci0KLSAgICBjb21wb3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBzdGF0
ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKLX0KLQogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnByZXBhcmVHcmFkaWVudEZvckRhc2hib2FyZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtMjM0Myw5ICsyMzM3
LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29u
c3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICB9CiAKICAgICBpZiAoaXNGdWxsQ2Fu
dmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewotICAgICAgICBj
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBiZWdpbkNvbXBvc2l0ZUxheWVy
KCk7CiAgICAgICAgIGMtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9u
dDo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgIGMtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CisgICAgICAgIGVuZENvbXBvc2l0ZUxheWVyKCk7CiAgICAgICAgIGRpZERyYXdF
bnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUg
PT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRl
eCA0N2ZjZGZjLi43ODJjOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzA0LDYgKzMwNCw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhclBhdGhGb3JEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlN
b2RlKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgYmVnaW5Db21wb3NpdGVMYXllcigpOworICAgIHZv
aWQgZW5kQ29tcG9zaXRlTGF5ZXIoKTsKKwogICAgIHZvaWQgZmlsbEludGVybmFsKGNvbnN0IFBh
dGgmLCBjb25zdCBTdHJpbmcmIHdpbmRpbmcpOwogICAgIHZvaWQgc3Ryb2tlSW50ZXJuYWwoY29u
c3QgUGF0aCYpOwogICAgIHZvaWQgY2xpcEludGVybmFsKGNvbnN0IFBhdGgmLCBjb25zdCBTdHJp
bmcmIHdpbmRpbmcpOwpAQCAtMzIyLDcgKzMyNSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlu
ZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QgVCYpOwogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKIAogICAgIHZvaWQgcHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50
KiBncmFkaWVudCkgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>