<?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>28268</bug_id>
          
          <creation_ts>2009-08-13 11:05:03 -0700</creation_ts>
          <short_desc>adjustLineToPixelBoundaries used in platform/GraphicsContext drawLine needs refactoring finished.</short_desc>
          <delta_ts>2009-11-24 06:35:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mike Fenton">mifenton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alp</cc>
    
    <cc>brettw</cc>
    
    <cc>eric</cc>
    
    <cc>manyoso</cc>
    
    <cc>pkasting</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>139935</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 11:05:03 -0700</bug_when>
    <thetext>The functions for drawLine in GraphicsContext share a large block of overlapping code that has already been separated out into the function adjustLineToPixelBoundaries for the Qt and Cairo ports.

This function needs to be relocated to platform/GraphicsContext.cpp and removed from the individual GraphicsContextQt.cpp and GraphicsContextCairo.cpp.

In addition to this move, the Skia and CG ports also reuse this block of code and should be updated to utilize the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139944</commentid>
    <comment_count>1</comment_count>
      <attachid>34761</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 11:25:02 -0700</bug_when>
    <thetext>Created attachment 34761
Patch to move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function.

This patch moves adjustLineToPixelBoundaries to GraphicsContext.cpp and removes it from GraphicsContextQt.cpp and GraphicsContextCairo.cpp.

Note:  This change has only been compiled under Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139951</commentid>
    <comment_count>2</comment_count>
      <attachid>34761</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 11:42:49 -0700</bug_when>
    <thetext>Comment on attachment 34761
Patch to move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function.

+        static void adjustLineToPixelBoundaries(FloatPoint&amp; p1, FloatPoint&amp; p2, float strokeWidth, const StrokeStyle&amp; penStyle);

&quot;penStyle&quot; name is not needed.

KHTML has little to do with WebKit anymore:
+    // works out.  For example, with a border width of 3, KHTML will pass us (y1+y2)/2, e.g.,
That should be &quot;WebKIt&quot;

If you were a committer, I would have you fix those tiny nits when you landed, but since you aren&apos;t (yet), please post a revised patch.

It&apos;s not clear when this function should be used.  I suspect that CoreGraphics takes care of all this automatically internally?  Is this function used to work around missing features in graphics libraries, or is this something that all ports should be using all the time?

Please add some comments to the function declaration to help others understand when (if ever) this should be used.  If it&apos;s only needed by Qt and CAiro, consider wrapping it in an #ifdef

Otherwise looks fine.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139970</commentid>
    <comment_count>3</comment_count>
      <attachid>34767</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 12:27:02 -0700</bug_when>
    <thetext>Created attachment 34767
Replacement patch for move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function based on review feedback.

This patch replaces the previous patch by correcting the comment and the definition as requested.

Patches for Skia and CG to follow as this also affects those platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139974</commentid>
    <comment_count>4</comment_count>
      <attachid>34770</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 12:30:19 -0700</bug_when>
    <thetext>Created attachment 34770
Style patch for GraphicsContext.cpp/h GraphicsContextCairo.cpp and GraphicsContextQt.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139987</commentid>
    <comment_count>5</comment_count>
      <attachid>34776</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 13:03:36 -0700</bug_when>
    <thetext>Created attachment 34776
Fix Style patch to have correct replacement for % 2 == 0.  Replaces Style patch for GraphicsContext.cpp.h GraphicsContextCairo.cpp and GraphicsContextQt.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139990</commentid>
    <comment_count>6</comment_count>
      <attachid>34777</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 13:15:35 -0700</bug_when>
    <thetext>Created attachment 34777
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code.

Note: This patch is dependent on attachment 34767 in this bug.

Note: This patch replaces code that is duplicated in the function but has not been built for the platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139994</commentid>
    <comment_count>7</comment_count>
      <attachid>34778</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-13 13:16:31 -0700</bug_when>
    <thetext>Created attachment 34778
Style patch for GraphicsContextCG.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140131</commentid>
    <comment_count>8</comment_count>
      <attachid>34776</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:13:57 -0700</bug_when>
    <thetext>Comment on attachment 34776
Fix Style patch to have correct replacement for % 2 == 0.  Replaces Style patch for GraphicsContext.cpp.h GraphicsContextCairo.cpp and GraphicsContextQt.cpp.

Looks fine, but the ChangeLog is going to break automated landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140132</commentid>
    <comment_count>9</comment_count>
      <attachid>34767</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:14:43 -0700</bug_when>
    <thetext>Comment on attachment 34767
Replacement patch for move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function based on review feedback.

Looks fine.  The commit-queue will get confused by the extra r=? patches on this bug, so I won&apos;t mark this cq+ yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140133</commentid>
    <comment_count>10</comment_count>
      <attachid>34777</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:15:36 -0700</bug_when>
    <thetext>Comment on attachment 34777
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code.

Note: This patch is dependent on attachment 34767 in this bug.

Looks fine.  The ChangeLog will confuse bugzilla-tool.  it won&apos;t know how to fix that diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140134</commentid>
    <comment_count>11</comment_count>
      <attachid>34777</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:16:26 -0700</bug_when>
    <thetext>Comment on attachment 34777
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code.

Note: This patch is dependent on attachment 34767 in this bug.

This is the same as the next patch.  I don&apos;t think this is what you meant to upload. r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140135</commentid>
    <comment_count>12</comment_count>
      <attachid>34778</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:16:54 -0700</bug_when>
    <thetext>Comment on attachment 34778
Style patch for GraphicsContextCG.cpp.

Style fixes look fine.  ChangeLog will confuse bugzilla-tool/svn-apply</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140213</commentid>
    <comment_count>13</comment_count>
      <attachid>34834</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 06:00:51 -0700</bug_when>
    <thetext>Created attachment 34834
Fix Changelog in patch #34776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140214</commentid>
    <comment_count>14</comment_count>
      <attachid>34835</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 06:18:13 -0700</bug_when>
    <thetext>Created attachment 34835
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code. Note: This patch is dependent on attachment 34767 in this bug.

Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code.

Note: This patch is dependent on attachment 34767 in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140219</commentid>
    <comment_count>15</comment_count>
      <attachid>34838</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 06:35:05 -0700</bug_when>
    <thetext>Created attachment 34838
Fix Changelog in patch #34778</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140237</commentid>
    <comment_count>16</comment_count>
      <attachid>34842</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 08:27:26 -0700</bug_when>
    <thetext>Created attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

This patch modifies drawLine in Skia to use adjustLineToPixelBoundaries and should maintain the existing functionality.

Note: This patch is dependent on attachment 34767 in this bug and has not been compiled for Skia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140238</commentid>
    <comment_count>17</comment_count>
      <attachid>34843</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 08:29:18 -0700</bug_when>
    <thetext>Created attachment 34843
Style patch for GraphicsContextSkia.cpp

Note:  This leaves the header order partially against WebKit style in order to group Skia headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140291</commentid>
    <comment_count>18</comment_count>
      <attachid>34865</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-14 11:51:35 -0700</bug_when>
    <thetext>Created attachment 34865
Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp.

Note:  This patch should be applied after other patches in this bug to avoid conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140704</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-17 07:01:46 -0700</bug_when>
    <thetext>Landed with r47359. Clearing flags...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140705</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-17 07:19:46 -0700</bug_when>
    <thetext>Landed with r47360.  Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140714</commentid>
    <comment_count>21</comment_count>
      <attachid>34767</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-17 08:08:23 -0700</bug_when>
    <thetext>Comment on attachment 34767
Replacement patch for move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function based on review feedback.

Landed with r47361.  Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140874</commentid>
    <comment_count>22</comment_count>
      <attachid>34835</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:32:27 -0700</bug_when>
    <thetext>Comment on attachment 34835
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code. Note: This patch is dependent on attachment 34767 in this bug.

Ideally this would be one patch per bug.  Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140877</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:35:41 -0700</bug_when>
    <thetext>Adding Brett so he sees the Skia changes go by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140878</commentid>
    <comment_count>24</comment_count>
      <attachid>34842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:35:50 -0700</bug_when>
    <thetext>Comment on attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

Looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140879</commentid>
    <comment_count>25</comment_count>
      <attachid>34843</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:36:24 -0700</bug_when>
    <thetext>Comment on attachment 34843
Style patch for GraphicsContextSkia.cpp

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140883</commentid>
    <comment_count>26</comment_count>
      <attachid>34865</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:42:36 -0700</bug_when>
    <thetext>Comment on attachment 34865
Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp.

These functions should be something like &quot;patternOffsetForDashes&quot; and &quot;patternWidthForDashes&quot; or similarly longer/clearer names.  Then you can use ful names like &quot;patternOffset&quot; instead of &quot;patOffset&quot; for the locals.

I was at first confused as to what these functions were for until I realized they only applied to the line decoration/stroke style code paths.

Otherwise the patch looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140886</commentid>
    <comment_count>27</comment_count>
      <attachid>34835</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:47:29 -0700</bug_when>
    <thetext>Comment on attachment 34835
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code. Note: This patch is dependent on attachment 34767 in this bug.

Rejecting patch 34835 from commit-queue.  This patch will require manual commit.

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140887</commentid>
    <comment_count>28</comment_count>
      <attachid>34842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:58:08 -0700</bug_when>
    <thetext>Comment on attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

Since the commit-queue can&apos;t build GraphicsContextSkia (And Chromium doesn&apos;t have a build bot), I don&apos;t feel comfortable having the commit-queue land these.  Especially after the CG patch failed to build.  Marking cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140888</commentid>
    <comment_count>29</comment_count>
      <attachid>34843</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:58:25 -0700</bug_when>
    <thetext>Comment on attachment 34843
Style patch for GraphicsContextSkia.cpp

Marking cq- for the same reasons as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141080</commentid>
    <comment_count>30</comment_count>
      <attachid>35040</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-18 07:17:54 -0700</bug_when>
    <thetext>Created attachment 35040
Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141089</commentid>
    <comment_count>31</comment_count>
      <attachid>35040</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 08:39:42 -0700</bug_when>
    <thetext>Comment on attachment 35040
Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

This patch is identical to the previous, or?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141096</commentid>
    <comment_count>32</comment_count>
      <attachid>35044</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2009-08-18 09:00:34 -0700</bug_when>
    <thetext>Created attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

Upload correct file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141104</commentid>
    <comment_count>33</comment_count>
      <attachid>35044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 09:28:16 -0700</bug_when>
    <thetext>Comment on attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

This seems unneeded:
+    // Special case 1px dotted borders for speed.
+    if (width == 1)
+        return 1.0f;

A few floating point divisions should not going to outweigh the cost of a function call.

We don&apos;t even have to subtract the remainder here, do we?
 602     int numSegments = (distance - remainder) / width;
unless I&apos;m forgetting how int / int works.
(It&apos;s fine to do so, just surprised to see it).

It seems that patternOffsetForDashes could probably use a bit more commentary around the math.

Looks OK though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141219</commentid>
    <comment_count>34</comment_count>
      <attachid>35044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:12:01 -0700</bug_when>
    <thetext>Comment on attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

Rejecting patch 35044 from commit-queue.  This patch will require manual commit.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141235</commentid>
    <comment_count>35</comment_count>
      <attachid>35044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:25:35 -0700</bug_when>
    <thetext>Comment on attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

Sorry, we hit https://bugs.webkit.org/show_bug.cgi?id=28436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141265</commentid>
    <comment_count>36</comment_count>
      <attachid>35044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:59:03 -0700</bug_when>
    <thetext>Comment on attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

Rejecting patch 35044 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=35044 from bug 28268 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141268</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 15:03:37 -0700</bug_when>
    <thetext>patching file WebCore/platform/graphics/cg/GraphicsContextCG.cpp
Hunk #2 FAILED at 154.
Hunk #3 succeeded at 198 (offset 24 lines).
Hunk #4 succeeded at 211 (offset 24 lines).
Hunk #5 succeeded at 271 (offset 24 lines).
Hunk #6 succeeded at 294 (offset 24 lines).
1 out of 6 hunks FAILED -- saving rejects to file WebCore/platform/graphics/cg/GraphicsContextCG.cpp.rej
patch -p0 &quot;WebCore/platform/graphics/cg/GraphicsContextCG.cpp&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141379</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-18 20:13:23 -0700</bug_when>
    <thetext>This bug is out of control.  Let&apos;s give commit-queue a try.  It doesn&apos;t matter that Skia isn&apos;t covered by the build bots.  That&apos;s what the canaries are for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141394</commentid>
    <comment_count>39</comment_count>
      <attachid>34835</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 22:42:50 -0700</bug_when>
    <thetext>Comment on attachment 34835
Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code. Note: This patch is dependent on attachment 34767 in this bug.

Rejecting patch 34835 from commit-queue.  This patch will require manual commit.

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141405</commentid>
    <comment_count>40</comment_count>
      <attachid>34842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 23:14:13 -0700</bug_when>
    <thetext>Comment on attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

Rejecting patch 34842 from commit-queue.  This patch will require manual commit.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141407</commentid>
    <comment_count>41</comment_count>
      <attachid>34843</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 23:31:34 -0700</bug_when>
    <thetext>Comment on attachment 34843
Style patch for GraphicsContextSkia.cpp

Clearing flags on attachment: 34843

Committed r47495: &lt;http://trac.webkit.org/changeset/47495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141408</commentid>
    <comment_count>42</comment_count>
      <attachid>35044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 23:31:43 -0700</bug_when>
    <thetext>Comment on attachment 35044
Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.

Rejecting patch 35044 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=35044 from bug 28268 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141430</commentid>
    <comment_count>43</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 00:34:54 -0700</bug_when>
    <thetext>patching file WebCore/platform/graphics/cg/GraphicsContextCG.cpp
Hunk #2 FAILED at 154.
Hunk #3 succeeded at 198 (offset 24 lines).
Hunk #4 succeeded at 211 (offset 24 lines).
Hunk #5 succeeded at 271 (offset 24 lines).
Hunk #6 succeeded at 294 (offset 24 lines).
1 out of 6 hunks FAILED -- saving rejects to file WebCore/platform/graphics/cg/GraphicsContextCG.cpp.rej
patch -p0 &quot;WebCore/platform/graphics/cg/GraphicsContextCG.cpp&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141431</commentid>
    <comment_count>44</comment_count>
      <attachid>34842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 00:35:50 -0700</bug_when>
    <thetext>Comment on attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

This was rejected for an out-of-date ChangeLog. I think that was just a bug in the commit-queue.  retrying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141436</commentid>
    <comment_count>45</comment_count>
      <attachid>34842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 00:47:12 -0700</bug_when>
    <thetext>Comment on attachment 34842
Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.

Clearing flags on attachment: 34842

Committed r47498: &lt;http://trac.webkit.org/changeset/47498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141437</commentid>
    <comment_count>46</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 00:47:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141568</commentid>
    <comment_count>47</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-19 13:12:21 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; (From update of attachment 34842 [details])
&gt; Clearing flags on attachment: 34842
&gt; 
&gt; Committed r47498: &lt;http://trac.webkit.org/changeset/47498&gt;

This seems to have caused the following compile errors:

ebCore\platform\graphics\skia\GraphicsContextSkia.cpp(524) : error C2065: &apos;pts&apos; : undeclared identifier
WebCore\platform\graphics\skia\GraphicsContextSkia.cpp(535) : error C2440: &apos;initializing&apos; : cannot convert from &apos;WebCore::FloatSize&apos; to &apos;WebCore::FloatPoint&apos;
        No constructor could take the source type, or constructor overload resolution was ambiguous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141584</commentid>
    <comment_count>48</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 13:52:12 -0700</bug_when>
    <thetext>I&apos;m happy to roll it out Peter, unless you&apos;d like to make a fix for Skia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141585</commentid>
    <comment_count>49</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-19 13:57:03 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; I&apos;m happy to roll it out Peter, unless you&apos;d like to make a fix for Skia.

Landed a build fix in r47526.  The code in question looked pretty simple so I think my fix is correct, but people can feel free to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166051</commentid>
    <comment_count>50</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-24 06:35:35 -0800</bug_when>
    <thetext>*** Bug 14440 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34761</attachid>
            <date>2009-08-13 11:25:02 -0700</date>
            <delta_ts>2009-08-13 12:27:02 -0700</delta_ts>
            <desc>Patch to move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function.</desc>
            <filename>0001-Move-adjustLineToPixelBoundaries-into-GraphicsContex.patch</filename>
            <type>text/plain</type>
            <size>7407</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBhNGJjNjkyZWU2YjM0MmIwNGEzNDdmYTgwNWE5YWVkMDg3ZjRhMzMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE0OjE1OjU3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gTW92ZSBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMgaW50byBHcmFwaGljc0NvbnRleHQu
Y3BwIGFuZCByZW1vdmUKIGZyb20gR3JhcGhpY3NDb250ZXh0UXQuY3BwIGFuZCBHcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNSArKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgIHwgICAyOSArKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggICAgICAgIHwgICAgMiAr
CiAuLi4vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwICAgICAgICB8ICAg
MzIgLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwIHwgICAzMSAtLS0tLS0tLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNo
YW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJlZTU5Yi4uNTA5YzRm
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAwOS0wOC0xMyAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRvbkB0
b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMgb3ZlcmxhcHBpbmcgZnVu
Y3Rpb24gdG8gR3JhcGhpY3NDb250ZXh0LmNwcAorICAgICAgICBhbmQgcmVtb3ZlIGZyb20gR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY4CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisKIDIwMDktMDgt
MTMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjQ3MTg1
LCB0aGUgZml4IGZvciA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MTg1PiwgYXMgaXQgYnJva2UgdGhlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggZjNmNGIxZi4uMmY2MGI5MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTQ2LDQgKzU0NiwzMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VTdHlsZShjb25zdCBTdHJva2VT
dHlsZSYpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1Bp
eGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9r
ZVdpZHRoLCBjb25zdCBTdHJva2VTdHlsZSYgcGVuU3R5bGUpCit7CisgICAgLy8gRm9yIG9kZCB3
aWR0aHMsIHdlIGFkZCBpbiAwLjUgdG8gdGhlIGFwcHJvcHJpYXRlIHgveSBzbyB0aGF0IHRoZSBm
bG9hdCBhcml0aG1ldGljCisgICAgLy8gd29ya3Mgb3V0LiAgRm9yIGV4YW1wbGUsIHdpdGggYSBi
b3JkZXIgd2lkdGggb2YgMywgS0hUTUwgd2lsbCBwYXNzIHVzICh5MSt5MikvMiwgZS5nLiwKKyAg
ICAvLyAoNTArNTMpLzIgPSAxMDMvMiA9IDUxIHdoZW4gd2Ugd2FudCA1MS41LiAgSXQgaXMgYWx3
YXlzIHRydWUgdGhhdCBhbiBldmVuIHdpZHRoIGdhdmUKKyAgICAvLyB1cyBhIHBlcmZlY3QgcG9z
aXRpb24sIGJ1dCBhbiBvZGQgd2lkdGggZ2F2ZSB1cyBhIHBvc2l0aW9uIHRoYXQgaXMgb2ZmIGJ5
IGV4YWN0bHkgMC41LgorICAgIGlmIChwZW5TdHlsZSA9PSBEb3R0ZWRTdHJva2UgfHwgcGVuU3R5
bGUgPT0gRGFzaGVkU3Ryb2tlKSB7CisgICAgICAgIGlmIChwMS54KCkgPT0gcDIueCgpKSB7Cisg
ICAgICAgICAgICBwMS5zZXRZKHAxLnkoKSArIHN0cm9rZVdpZHRoKTsKKyAgICAgICAgICAgIHAy
LnNldFkocDIueSgpIC0gc3Ryb2tlV2lkdGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcDEuc2V0WChwMS54KCkgKyBzdHJva2VXaWR0aCk7CisgICAgICAgICAgICBwMi5zZXRYKHAy
LngoKSAtIHN0cm9rZVdpZHRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ+KHN0cm9rZVdpZHRoKSAlIDIpIHsgLy9vZGQKKyAgICAgICAgaWYgKHAxLngoKSA9
PSBwMi54KCkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIGEgdmVydGljYWwgbGluZS4gIEFkanVz
dCBvdXIgeC4KKyAgICAgICAgICAgIHAxLnNldFgocDEueCgpICsgMC41KTsKKyAgICAgICAgICAg
IHAyLnNldFgocDIueCgpICsgMC41KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFdlJ3JlIGEgaG9yaXpvbnRhbCBsaW5lLiBBZGp1c3Qgb3VyIHkuCisgICAgICAgICAgICBwMS5z
ZXRZKHAxLnkoKSArIDAuNSk7CisgICAgICAgICAgICBwMi5zZXRZKHAyLnkoKSArIDAuNSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDUwYzk0YTkuLjI3MjAwYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDExLDYgKzQxMSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXpl
JiwgaW50IGJsdXIsIGNvbnN0IENvbG9yJik7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNo
YWRvdygpOwogCisgICAgICAgIHN0YXRpYyB2b2lkIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmll
cyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBjb25z
dCBTdHJva2VTdHlsZSYgcGVuU3R5bGUpOworCiAgICAgICAgIGludCBmb2N1c1JpbmdXaWR0aCgp
IGNvbnN0OwogICAgICAgICBpbnQgZm9jdXNSaW5nT2Zmc2V0KCkgY29uc3Q7CiAgICAgICAgIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgZm9jdXNSaW5nUmVjdHMoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKaW5kZXggNTc2NTU0Ni4uYTlkNjg3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTE0MiwzOCAr
MTQyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLS8vIEZJWE1FOiBOb3cgdGhhdCB0aGlz
IGlzIHJlZmFjdG9yZWQsIGl0IHNob3VsZCBiZSBzaGFyZWQgYnkgYWxsIGNvbnRleHRzLgotc3Rh
dGljIHZvaWQgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9h
dFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgsIFN0cm9rZVN0eWxlIHN0eWxlKQotewotICAg
IC8vIEZvciBvZGQgd2lkdGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBhcHByb3ByaWF0ZSB4L3kg
c28gdGhhdCB0aGUgZmxvYXQgYXJpdGhtZXRpYwotICAgIC8vIHdvcmtzIG91dC4gIEZvciBleGFt
cGxlLCB3aXRoIGEgYm9yZGVyIHdpZHRoIG9mIDMsIEtIVE1MIHdpbGwgcGFzcyB1cyAoeTEreTIp
LzIsIGUuZy4sCi0gICAgLy8gKDUwKzUzKS8yID0gMTAzLzIgPSA1MSB3aGVuIHdlIHdhbnQgNTEu
NS4gIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgYW4gZXZlbiB3aWR0aCBnYXZlCi0gICAgLy8gdXMg
YSBwZXJmZWN0IHBvc2l0aW9uLCBidXQgYW4gb2RkIHdpZHRoIGdhdmUgdXMgYSBwb3NpdGlvbiB0
aGF0IGlzIG9mZiBieSBleGFjdGx5IDAuNS4KLSAgICBpZiAoc3R5bGUgPT0gRG90dGVkU3Ryb2tl
IHx8IHN0eWxlID09IERhc2hlZFN0cm9rZSkgewotICAgICAgICBpZiAocDEueCgpID09IHAyLngo
KSkgewotICAgICAgICAgICAgcDEuc2V0WShwMS55KCkgKyBzdHJva2VXaWR0aCk7Ci0gICAgICAg
ICAgICBwMi5zZXRZKHAyLnkoKSAtIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHAxLnNldFgocDEueCgpICsgc3Ryb2tlV2lkdGgpOwotICAgICAg
ICAgICAgcDIuc2V0WChwMi54KCkgLSBzdHJva2VXaWR0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzdHJva2VXaWR0aCkgJSAyKSB7Ci0gICAgICAgIGlm
IChwMS54KCkgPT0gcDIueCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBhIHZlcnRpY2FsIGxp
bmUuICBBZGp1c3Qgb3VyIHguCi0gICAgICAgICAgICBwMS5zZXRYKHAxLngoKSArIDAuNSk7Ci0g
ICAgICAgICAgICBwMi5zZXRYKHAyLngoKSArIDAuNSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBhIGhvcml6b250YWwgbGluZS4gQWRqdXN0IG91ciB5
LgotICAgICAgICAgICAgcDEuc2V0WShwMS55KCkgKyAwLjUpOwotICAgICAgICAgICAgcDIuc2V0
WShwMi55KCkgKyAwLjUpOwotICAgICAgICB9Ci0gICAgfQotfQotCiAvLyBUaGlzIGlzIG9ubHkg
dXNlZCB0byBkcmF3IGJvcmRlcnMuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29u
c3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXgg
ZmViNjVlZi4uMjVjYzRmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTQzMCwzNyArNDMwLDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgcC0+c2V0UmVuZGVy
SGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5nLCBhbnRpQWxpYXMpOwogfQogCi0vLyBGSVhNRTog
Tm93IHRoYXQgdGhpcyBpcyByZWZhY3RvcmVkLCBpdCBzaG91bGQgYmUgc2hhcmVkIGJ5IGFsbCBj
b250ZXh0cy4KLXN0YXRpYyB2b2lkIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhGbG9hdFBv
aW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cm9rZVN0eWxlJiBwZW5TdHlsZSkK
LXsKLSAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlh
dGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMKLSAgICAvLyB3b3JrcyBvdXQuICBG
b3IgZXhhbXBsZSwgd2l0aCBhIGJvcmRlciB3aWR0aCBvZiAzLCBLSFRNTCB3aWxsIHBhc3MgdXMg
KHkxK3kyKS8yLCBlLmcuLAotICAgIC8vICg1MCs1MykvMiA9IDEwMy8yID0gNTEgd2hlbiB3ZSB3
YW50IDUxLjUuICBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IGFuIGV2ZW4gd2lkdGggZ2F2ZQotICAg
IC8vIHVzIGEgcGVyZmVjdCBwb3NpdGlvbiwgYnV0IGFuIG9kZCB3aWR0aCBnYXZlIHVzIGEgcG9z
aXRpb24gdGhhdCBpcyBvZmYgYnkgZXhhY3RseSAwLjUuCi0gICAgaWYgKHBlblN0eWxlID09IERv
dHRlZFN0cm9rZSB8fCBwZW5TdHlsZSA9PSBEYXNoZWRTdHJva2UpIHsKLSAgICAgICAgaWYgKHAx
LngoKSA9PSBwMi54KCkpIHsKLSAgICAgICAgICAgIHAxLnNldFkocDEueSgpICsgc3Ryb2tlV2lk
dGgpOwotICAgICAgICAgICAgcDIuc2V0WShwMi55KCkgLSBzdHJva2VXaWR0aCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBwMS5zZXRYKHAxLngoKSArIHN0cm9rZVdpZHRoKTsKLSAg
ICAgICAgICAgIHAyLnNldFgocDIueCgpIC0gc3Ryb2tlV2lkdGgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKCgoaW50KSBzdHJva2VXaWR0aCkgJSAyKSB7Ci0gICAgICAgIGlmIChwMS54
KCkgPT0gcDIueCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBhIHZlcnRpY2FsIGxpbmUuICBB
ZGp1c3Qgb3VyIHguCi0gICAgICAgICAgICBwMS5zZXRYKHAxLngoKSArIDAuNSk7Ci0gICAgICAg
ICAgICBwMi5zZXRYKHAyLngoKSArIDAuNSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAvLyBXZSdyZSBhIGhvcml6b250YWwgbGluZS4gQWRqdXN0IG91ciB5LgotICAgICAgICAgICAg
cDEuc2V0WShwMS55KCkgKyAwLjUpOwotICAgICAgICAgICAgcDIuc2V0WShwMi55KCkgKyAwLjUp
OwotICAgICAgICB9Ci0gICAgfQotfQotCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJv
cmRlcnMuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBv
aW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKIHsKLS0gCjEuNi40LjE4LmcwN2E0YQoK
</data>
<flag name="review"
          id="18966"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34767</attachid>
            <date>2009-08-13 12:27:02 -0700</date>
            <delta_ts>2009-08-17 08:08:22 -0700</delta_ts>
            <desc>Replacement patch for move adjustLineToPixelBoundaries to GraphicsContext.cpp and cleanup existing uses of function based on review feedback.</desc>
            <filename>0001-Move-adjustLineToPixelBoundaries-into-GraphicsContex.patch</filename>
            <type>text/plain</type>
            <size>7403</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA4MDI4OTljODk1M2E1MTNmNTg1NTRkZjgxZDMxOGJlNTcxYmI0NjFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE0OjE1OjU3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIE1vdmUgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzIGludG8gR3JhcGhpY3NDb250
ZXh0LmNwcCBhbmQgcmVtb3ZlCiBmcm9tIEdyYXBoaWNzQ29udGV4dFF0LmNwcCBhbmQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwLgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKysr
CiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAg
IDIgKwogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAg
fCAgIDMyIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgMzEgLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxl
cyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViZWU1OWIuLjUw
OWM0ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDgtMTMgIE1pa2UgRmVudG9uICA8bWlrZS5mZW50
b25AdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzIG92ZXJsYXBwaW5n
IGZ1bmN0aW9uIHRvIEdyYXBoaWNzQ29udGV4dC5jcHAKKyAgICAgICAgYW5kIHJlbW92ZSBmcm9t
IEdyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBhbmQgR3JhcGhpY3NDb250ZXh0UXQuY3BwLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2OAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorCiAyMDA5
LTA4LTEzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHI0
NzE4NSwgdGhlIGZpeCBmb3IgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODE4NT4sIGFzIGl0IGJyb2tlIHRoZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGYzZjRiMWYuLjEzN2M3NDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTU0Niw0ICs1NDYsMzMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoY29uc3QgU3Ry
b2tlU3R5bGUmKQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5l
VG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBz
dHJva2VXaWR0aCwgY29uc3QgU3Ryb2tlU3R5bGUmIHBlblN0eWxlKQoreworICAgIC8vIEZvciBv
ZGQgd2lkdGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBhcHByb3ByaWF0ZSB4L3kgc28gdGhhdCB0
aGUgZmxvYXQgYXJpdGhtZXRpYworICAgIC8vIHdvcmtzIG91dC4gIEZvciBleGFtcGxlLCB3aXRo
IGEgYm9yZGVyIHdpZHRoIG9mIDMsIFdlYktpdCB3aWxsIHBhc3MgdXMgKHkxK3kyKS8yLCBlLmcu
LAorICAgIC8vICg1MCs1MykvMiA9IDEwMy8yID0gNTEgd2hlbiB3ZSB3YW50IDUxLjUuICBJdCBp
cyBhbHdheXMgdHJ1ZSB0aGF0IGFuIGV2ZW4gd2lkdGggZ2F2ZQorICAgIC8vIHVzIGEgcGVyZmVj
dCBwb3NpdGlvbiwgYnV0IGFuIG9kZCB3aWR0aCBnYXZlIHVzIGEgcG9zaXRpb24gdGhhdCBpcyBv
ZmYgYnkgZXhhY3RseSAwLjUuCisgICAgaWYgKHBlblN0eWxlID09IERvdHRlZFN0cm9rZSB8fCBw
ZW5TdHlsZSA9PSBEYXNoZWRTdHJva2UpIHsKKyAgICAgICAgaWYgKHAxLngoKSA9PSBwMi54KCkp
IHsKKyAgICAgICAgICAgIHAxLnNldFkocDEueSgpICsgc3Ryb2tlV2lkdGgpOworICAgICAgICAg
ICAgcDIuc2V0WShwMi55KCkgLSBzdHJva2VXaWR0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBwMS5zZXRYKHAxLngoKSArIHN0cm9rZVdpZHRoKTsKKyAgICAgICAgICAgIHAyLnNl
dFgocDIueCgpIC0gc3Ryb2tlV2lkdGgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0
YXRpY19jYXN0PGludD4oc3Ryb2tlV2lkdGgpICUgMikgeyAvL29kZAorICAgICAgICBpZiAocDEu
eCgpID09IHAyLngoKSkgeworICAgICAgICAgICAgLy8gV2UncmUgYSB2ZXJ0aWNhbCBsaW5lLiAg
QWRqdXN0IG91ciB4LgorICAgICAgICAgICAgcDEuc2V0WChwMS54KCkgKyAwLjUpOworICAgICAg
ICAgICAgcDIuc2V0WChwMi54KCkgKyAwLjUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gV2UncmUgYSBob3Jpem9udGFsIGxpbmUuIEFkanVzdCBvdXIgeS4KKyAgICAgICAgICAg
IHAxLnNldFkocDEueSgpICsgMC41KTsKKyAgICAgICAgICAgIHAyLnNldFkocDIueSgpICsgMC41
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNTBjOTRhOS4uZWM0YjU2YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MTEsNiArNDExLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IElu
dFNpemUmLCBpbnQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRm
b3JtU2hhZG93KCk7CiAKKyAgICAgICAgc3RhdGljIHZvaWQgYWRqdXN0TGluZVRvUGl4ZWxCb3Vu
ZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgs
IGNvbnN0IFN0cm9rZVN0eWxlJik7CisKICAgICAgICAgaW50IGZvY3VzUmluZ1dpZHRoKCkgY29u
c3Q7CiAgICAgICAgIGludCBmb2N1c1JpbmdPZmZzZXQoKSBjb25zdDsKICAgICAgICAgY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiBmb2N1c1JpbmdSZWN0cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApp
bmRleCA1NzY1NTQ2Li5hOWQ2ODcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTQyLDM4ICsxNDIs
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotLy8gRklYTUU6IE5vdyB0aGF0IHRoaXMgaXMg
cmVmYWN0b3JlZCwgaXQgc2hvdWxkIGJlIHNoYXJlZCBieSBhbGwgY29udGV4dHMuCi1zdGF0aWMg
dm9pZCBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9p
bnQmIHAyLCBmbG9hdCBzdHJva2VXaWR0aCwgU3Ryb2tlU3R5bGUgc3R5bGUpCi17Ci0gICAgLy8g
Rm9yIG9kZCB3aWR0aHMsIHdlIGFkZCBpbiAwLjUgdG8gdGhlIGFwcHJvcHJpYXRlIHgveSBzbyB0
aGF0IHRoZSBmbG9hdCBhcml0aG1ldGljCi0gICAgLy8gd29ya3Mgb3V0LiAgRm9yIGV4YW1wbGUs
IHdpdGggYSBib3JkZXIgd2lkdGggb2YgMywgS0hUTUwgd2lsbCBwYXNzIHVzICh5MSt5MikvMiwg
ZS5nLiwKLSAgICAvLyAoNTArNTMpLzIgPSAxMDMvMiA9IDUxIHdoZW4gd2Ugd2FudCA1MS41LiAg
SXQgaXMgYWx3YXlzIHRydWUgdGhhdCBhbiBldmVuIHdpZHRoIGdhdmUKLSAgICAvLyB1cyBhIHBl
cmZlY3QgcG9zaXRpb24sIGJ1dCBhbiBvZGQgd2lkdGggZ2F2ZSB1cyBhIHBvc2l0aW9uIHRoYXQg
aXMgb2ZmIGJ5IGV4YWN0bHkgMC41LgotICAgIGlmIChzdHlsZSA9PSBEb3R0ZWRTdHJva2UgfHwg
c3R5bGUgPT0gRGFzaGVkU3Ryb2tlKSB7Ci0gICAgICAgIGlmIChwMS54KCkgPT0gcDIueCgpKSB7
Ci0gICAgICAgICAgICBwMS5zZXRZKHAxLnkoKSArIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgICAg
IHAyLnNldFkocDIueSgpIC0gc3Ryb2tlV2lkdGgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgcDEuc2V0WChwMS54KCkgKyBzdHJva2VXaWR0aCk7Ci0gICAgICAgICAg
ICBwMi5zZXRYKHAyLngoKSAtIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KHN0cm9rZVdpZHRoKSAlIDIpIHsKLSAgICAgICAgaWYgKHAx
LngoKSA9PSBwMi54KCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGEgdmVydGljYWwgbGluZS4g
IEFkanVzdCBvdXIgeC4KLSAgICAgICAgICAgIHAxLnNldFgocDEueCgpICsgMC41KTsKLSAgICAg
ICAgICAgIHAyLnNldFgocDIueCgpICsgMC41KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIC8vIFdlJ3JlIGEgaG9yaXpvbnRhbCBsaW5lLiBBZGp1c3Qgb3VyIHkuCi0g
ICAgICAgICAgICBwMS5zZXRZKHAxLnkoKSArIDAuNSk7Ci0gICAgICAgICAgICBwMi5zZXRZKHAy
LnkoKSArIDAuNSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIC8vIFRoaXMgaXMgb25seSB1c2Vk
IHRvIGRyYXcgYm9yZGVycy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJ
bnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCBmZWI2
NWVmLi4yNWNjNGZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNDMwLDM3ICs0MzAsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBwLT5zZXRSZW5kZXJIaW50
KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIGFudGlBbGlhcyk7CiB9CiAKLS8vIEZJWE1FOiBOb3cg
dGhhdCB0aGlzIGlzIHJlZmFjdG9yZWQsIGl0IHNob3VsZCBiZSBzaGFyZWQgYnkgYWxsIGNvbnRl
eHRzLgotc3RhdGljIHZvaWQgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQm
IHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ryb2tlU3R5bGUmIHBlblN0eWxlKQotewot
ICAgIC8vIEZvciBvZGQgd2lkdGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBhcHByb3ByaWF0ZSB4
L3kgc28gdGhhdCB0aGUgZmxvYXQgYXJpdGhtZXRpYwotICAgIC8vIHdvcmtzIG91dC4gIEZvciBl
eGFtcGxlLCB3aXRoIGEgYm9yZGVyIHdpZHRoIG9mIDMsIEtIVE1MIHdpbGwgcGFzcyB1cyAoeTEr
eTIpLzIsIGUuZy4sCi0gICAgLy8gKDUwKzUzKS8yID0gMTAzLzIgPSA1MSB3aGVuIHdlIHdhbnQg
NTEuNS4gIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgYW4gZXZlbiB3aWR0aCBnYXZlCi0gICAgLy8g
dXMgYSBwZXJmZWN0IHBvc2l0aW9uLCBidXQgYW4gb2RkIHdpZHRoIGdhdmUgdXMgYSBwb3NpdGlv
biB0aGF0IGlzIG9mZiBieSBleGFjdGx5IDAuNS4KLSAgICBpZiAocGVuU3R5bGUgPT0gRG90dGVk
U3Ryb2tlIHx8IHBlblN0eWxlID09IERhc2hlZFN0cm9rZSkgewotICAgICAgICBpZiAocDEueCgp
ID09IHAyLngoKSkgewotICAgICAgICAgICAgcDEuc2V0WShwMS55KCkgKyBzdHJva2VXaWR0aCk7
Ci0gICAgICAgICAgICBwMi5zZXRZKHAyLnkoKSAtIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHAxLnNldFgocDEueCgpICsgc3Ryb2tlV2lkdGgpOwotICAgICAg
ICAgICAgcDIuc2V0WChwMi54KCkgLSBzdHJva2VXaWR0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoKChpbnQpIHN0cm9rZVdpZHRoKSAlIDIpIHsKLSAgICAgICAgaWYgKHAxLngoKSA9
PSBwMi54KCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGEgdmVydGljYWwgbGluZS4gIEFkanVz
dCBvdXIgeC4KLSAgICAgICAgICAgIHAxLnNldFgocDEueCgpICsgMC41KTsKLSAgICAgICAgICAg
IHAyLnNldFgocDIueCgpICsgMC41KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8v
IFdlJ3JlIGEgaG9yaXpvbnRhbCBsaW5lLiBBZGp1c3Qgb3VyIHkuCi0gICAgICAgICAgICBwMS5z
ZXRZKHAxLnkoKSArIDAuNSk7Ci0gICAgICAgICAgICBwMi5zZXRZKHAyLnkoKSArIDAuNSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVy
cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQx
LCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogewotLSAKMS42LjQuMTguZzA3YTRhCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34770</attachid>
            <date>2009-08-13 12:30:19 -0700</date>
            <delta_ts>2009-08-13 13:03:36 -0700</delta_ts>
            <desc>Style patch for GraphicsContext.cpp/h GraphicsContextCairo.cpp and GraphicsContextQt.cpp</desc>
            <filename>0002-Style-changes-for-GraphicsContext.cpp-h-GraphicsCont.patch</filename>
            <type>text/plain</type>
            <size>16521</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSAwMTQ5NDBhODIyMTFkOTZjZGY1ZTk4NDhiN2I1MzgxOGU5NjAzZTRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE1OjE5OjU1IC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAyLzJdIFN0eWxlIGNoYW5nZXMgZm9yIEdyYXBoaWNzQ29udGV4dC5jcHAvaCwgR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAuCgotLS0KIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgICB8ICAgMTgg
KystLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICAg
fCAgIDMyICsrKy0tLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cCAgICAgICAgfCAgMTQwICsrKysrKysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0KIDUgZmlsZXMgY2hhbmdl
ZCwgMTIwIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA5YzRmNi4uOTc1NTkzYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTIsNiArMiwzMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisy
MDA5LTA4LTEzICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSBmaXhl
cyBiYXNlZCBvbiBjcHBfc3R5bGUucHkgYW5kIFdlYktpdCBTdHlsZSBndWlkZSBmb3IKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0LmNwcC9oLCBHcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYW5kIEdy
YXBoaWNzQ29udGV4dFF0LmNwcC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjgyNjgKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKToKKyAgICAgICAg
KEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0Ojpp
bml0Rm9jdXNSaW5nKToKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQm91bmRp
bmdSZWN0KToKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlQXJjKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExp
bmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQ2Fpcm9PcGVyYXRvcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorCiAgICAgICAgIE1v
dmUgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzIG92ZXJsYXBwaW5nIGZ1bmN0aW9uIHRvIEdy
YXBoaWNzQ29udGV4dC5jcHAKICAgICAgICAgYW5kIHJlbW92ZSBmcm9tIEdyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBhbmQgR3JhcGhpY3NDb250ZXh0UXQuY3BwLgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMTM3Yzc0Mi4uYTMxNDM2NiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAi
QmlkaVJlc29sdmVyLmgiCisjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKLSNpbmNsdWRlICJGb250Lmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNhdmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbW1vbi0+c3RhY2su
YXBwZW5kKG1fY29tbW9uLT5zdGF0ZSk7Ci0gICAgCisKICAgICBzYXZlUGxhdGZvcm1TdGF0ZSgp
OwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUo
KQogICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUgPSBtX2NvbW1vbi0+c3RhY2subGFzdCgpOwog
ICAgIG1fY29tbW9uLT5zdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgCisKICAgICByZXN0b3JlUGxh
dGZvcm1TdGF0ZSgpOwogfQogCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OnBhaW50aW5nRGlzYWJsZWQoKSBjb25zdAogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQoteyAgICAgICAgCit7CiAgICAgZHJhd0ltYWdlKGltYWdlLCBwLCBJbnRSZWN0KDAs
IDAsIC0xLCAtMSksIG9wKTsKIH0KIApAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEludFBvCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgZm9udC5kcmF3VGV4dCh0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7
CiB9CiAjZW5kaWYKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6aW5p
dEZvY3VzUmluZyhpbnQgd2lkdGgsIGludCBvZmZzZXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNsZWFyRm9jdXNSaW5nKCk7Ci0gICAgCisKICAg
ICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdXaWR0aCA9IHdpZHRoOwogICAgIG1fY29tbW9uLT5tX2Zv
Y3VzUmluZ09mZnNldCA9IG9mZnNldDsKIH0KQEAgLTM5NiwxMiArMzk2LDEyIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGVhckZvY3VzUmluZygpCiBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKIHsKICAgICBJbnRSZWN0IHJlc3VsdCA9IEludFJlY3Qo
MCwgMCwgMCwgMCk7Ci0gICAgCisKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0g
Zm9jdXNSaW5nUmVjdHMoKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5zaXplKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQogICAgICAgICBy
ZXN1bHQudW5pdGUocmVjdHNbaV0pOwotICAgICAgICAKKwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdAogICAgIGZsb2F0
IHRzaCA9IHNyYy5oZWlnaHQoKTsKICAgICBmbG9hdCB0dyA9IGRlc3Qud2lkdGgoKTsKICAgICBm
bG9hdCB0aCA9IGRlc3QuaGVpZ2h0KCk7Ci0gICAgICAgIAorCiAgICAgaWYgKHRzdyA9PSAtMSkK
ICAgICAgICAgdHN3ID0gaW1hZ2UtPndpZHRoKCk7CiAgICAgaWYgKHRzaCA9PSAtMSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGVjNGI1NmEuLmUw
ZDkyOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtNDksOCArNDksOCBAQCB0eXBlZGVmIFFQYWludGVyIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
OwogY2xhc3Mgd3hHQ0RDOwogY2xhc3Mgd3hXaW5kb3dEQzsKIAotLy8gd3hHcmFwaGljc0NvbnRl
eHQgYWxsb3dzIHVzIHRvIHN1cHBvcnQgUGF0aCwgZXRjLiAKLS8vIGJ1dCBvbiBzb21lIHBsYXRm
b3JtcywgZS5nLiBMaW51eCwgaXQgcmVxdWlyZXMgZmFpcmx5IAorLy8gd3hHcmFwaGljc0NvbnRl
eHQgYWxsb3dzIHVzIHRvIHN1cHBvcnQgUGF0aCwgZXRjLgorLy8gYnV0IG9uIHNvbWUgcGxhdGZv
cm1zLCBlLmcuIExpbnV4LCBpdCByZXF1aXJlcyBmYWlybHkKIC8vIG5ldyBzb2Z0d2FyZS4KICNp
ZiBVU0UoV1hHQykKIC8vIE9uIE9TIFgsIHd4R0NEQyBpcyBqdXN0IGEgdHlwZWRlZiBmb3Igd3hE
Qywgc28gdXNlIHd4REMgZXhwbGljaXRseSB0byBtYWtlCkBAIC0xMjIsNyArMTIyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IGludCBjVGV4dEZpbGwgPSAxOwogICAgIGNvbnN0
IGludCBjVGV4dFN0cm9rZSA9IDI7CiAgICAgY29uc3QgaW50IGNUZXh0Q2xpcCA9IDQ7Ci0gICAg
CisKICAgICBlbnVtIFN0cm9rZVN0eWxlIHsKICAgICAgICAgTm9TdHJva2UsCiAgICAgICAgIFNv
bGlkU3Ryb2tlLApAQCAtMTMwLDEyICsxMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEYXNoZWRTdHJva2UKICAgICB9OwogCi0vLyBGSVhNRTogVGhpcyBpcyBhIHBsYWNlLWhv
bGRlciB1bnRpbCB3ZSBkZWNpZGUgdG8gYWRkCi0vLyByZWFsIGNvbG9yIHNwYWNlIHN1cHBvcnQg
dG8gV2ViQ29yZS4gIEF0IHRoYXQgdGltZSwgQ29sb3JTcGFjZSB3aWxsIGJlIGEKLS8vIGNsYXNz
IGFuZCBpbnN0YW5jZXMgd2lsbCBiZSBoZWxkICBvZmYgb2YgQ29sb3JzLiAgIFRoZXJlIHdpbGwg
YmUKLS8vIHNwZWNpYWwgc2luZ2xldG9uIEdyYWRpZW50IGFuZCBQYXR0ZXJuIGNvbG9yIHNwYWNl
cyB0byBtYXJrIHdoZW4KLS8vIGEgZmlsbCBvciBzdHJva2UgaXMgdXNpbmcgYSBncmFkaWVudCBv
ciBwYXR0ZXJuIGluc3RlYWQgb2YgYSBzb2xpZCBjb2xvci4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1OAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgcGxh
Y2UtaG9sZGVyIHVudGlsIHdlIGRlY2lkZSB0byBhZGQKKyAgICAvLyByZWFsIGNvbG9yIHNwYWNl
IHN1cHBvcnQgdG8gV2ViQ29yZS4gIEF0IHRoYXQgdGltZSwgQ29sb3JTcGFjZSB3aWxsIGJlIGEK
KyAgICAvLyBjbGFzcyBhbmQgaW5zdGFuY2VzIHdpbGwgYmUgaGVsZCAgb2ZmIG9mIENvbG9ycy4g
ICBUaGVyZSB3aWxsIGJlCisgICAgLy8gc3BlY2lhbCBzaW5nbGV0b24gR3JhZGllbnQgYW5kIFBh
dHRlcm4gY29sb3Igc3BhY2VzIHRvIG1hcmsgd2hlbgorICAgIC8vIGEgZmlsbCBvciBzdHJva2Ug
aXMgdXNpbmcgYSBncmFkaWVudCBvciBwYXR0ZXJuIGluc3RlYWQgb2YgYSBzb2xpZCBjb2xvci4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTgKICAg
ICBlbnVtIENvbG9yU3BhY2UgewogICAgICAgICBTb2xpZENvbG9yU3BhY2UsCiAgICAgICAgIFBh
dHRlcm5Db2xvclNwYWNlLApAQCAtMTU0LDExICsxNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0Kik7CiAgICAgICAgIH5HcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAKKwogI2lmICFQ
TEFURk9STShXSU5DRSkgfHwgUExBVEZPUk0oUVQpCiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKICNlbmRpZgotICAgICAgICAKKwogICAg
ICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdHJv
a2VUaGlja25lc3MoZmxvYXQpOwogICAgICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNv
bnN0OwpAQCAtMjM0LDcgKzIzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdU
aWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIAorICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
IApAQCAtMjU4LDEzICsyNTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
SW50UG9pbnQmLCBpbnQgaCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgaW50IGZyb20g
PSAwLCBpbnQgdG8gPSAtMSk7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgZHJhd0xpbmVG
b3JUZXh0KGNvbnN0IEludFBvaW50JiwgaW50IHdpZHRoLCBib29sIHByaW50aW5nKTsKICAgICAg
ICAgdm9pZCBkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGNvbnN0IEludFBvaW50
JiwgaW50IHdpZHRoLCBib29sIGdyYW1tYXIpOwotICAgICAgICAKKwogICAgICAgICBib29sIHBh
aW50aW5nRGlzYWJsZWQoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQYWludGluZ0Rpc2FibGVk
KGJvb2wpOwotICAgICAgICAKKwogICAgICAgICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCk7CiAKQEAg
LTMwMyw3ICszMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcm90YXRl
KGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAgICAgICAgIEludFBvaW50IG9yaWdpbigpOwotICAgICAgICAKKwogICAgICAg
ICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAg
ICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBhOWQ2ODcyLi4yODVlYWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMzEs
NyArMzEsNiBAQAogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAKLSNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkNhaXJvUGF0aC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYXRo
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPGNhaXJvLmg+CiAj
aW5jbHVkZSA8bWF0aC5oPgpAQCAtNTMsOCArNTMsOCBAQAogI2VsaWYgUExBVEZPUk0oV0lOKQog
I2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjZW5kaWYKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fp
cm8uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAKICNpZm5kZWYgTV9Q
SQogI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYKQEAgLTIwNywyMCArMjA3LDE4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQx
LCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKICAg
ICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAxLjA7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzJTIgPT0gMDsKKyAgICAg
ICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDI7CiAgICAg
ICAgICAgICBpZiAocmVtYWluZGVyKQogICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21l
bnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwogICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJP
ZlNlZ21lbnRzKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewogICAgICAgICAg
ICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAgICAg
ICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlci8yOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5P
ZmZzZXQgPSBwYXRXaWR0aC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
IWV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZz
ZXQgKz0gcmVtYWluZGVyIC8gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMjsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlbWFp
bmRlcikKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAtIHJl
bWFpbmRlcikvMjsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0
aCAtIHJlbWFpbmRlcikgLyAyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI4Niw3
ICsyODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogCiAgICAgaWYgKHcgIT0gaCkKICAg
ICAgICAgY2Fpcm9fc2NhbGUoY3IsIDEuLCBzY2FsZUZhY3Rvcik7Ci0gICAgCisKICAgICBjYWly
b19hcmNfbmVnYXRpdmUoY3IsIHggKyBoUmFkaXVzLCAoeSArIHZSYWRpdXMpICogcmV2ZXJzZVNj
YWxlRmFjdG9yLCBoUmFkaXVzLCAtZmEgKiBNX1BJLzE4MCwgLWZhbGVuICogTV9QSS8xODApOwog
CiAgICAgaWYgKHcgIT0gaCkKQEAgLTI5NCwxNiArMjkyLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGludCBh
bmdsZVNwCiAKICAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwogICAgIGludCBw
YXRXaWR0aCA9IDA7Ci0gICAgCisKICAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICAg
ICAgY2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgICAgICBwYXRXaWR0aCA9IHN0YXRpY19jYXN0
PGludD4od2lkdGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhc2hl
ZFN0cm9rZToKLSAgICAgICAgICAgIHBhdFdpZHRoID0gMyAqIHN0YXRpY19jYXN0PGludD4od2lk
dGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6CisgICAgICAgIHBhdFdpZHRoID0gc3Rh
dGljX2Nhc3Q8aW50Pih3aWR0aCAvIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERhc2hl
ZFN0cm9rZToKKyAgICAgICAgcGF0V2lkdGggPSAzICogc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCAv
IDIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CkBAIC0zMTcsNyArMzE1LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQg
c3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgICAgIGRpc3RhbmNlID0gc3RhdGljX2Nh
c3Q8aW50PigoTV9QSSAqIGhSYWRpdXMpIC8gMi4wKTsKICAgICAgICAgZWxzZSAvLyBXZSBhcmUg
ZWxsaXB0aWNhbCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAgICAg
ICAgICAgZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChNX1BJICogc3FydGYoKGhSYWRpdXMg
KiBoUmFkaXVzICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wKSkgLyAyLjApOwotICAgICAgICAK
KwogICAgICAgICBpbnQgcmVtYWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0aDsKICAgICAgICAg
aW50IGNvdmVyYWdlID0gZGlzdGFuY2UgLSByZW1haW5kZXI7CiAgICAgICAgIGludCBudW1TZWdt
ZW50cyA9IGNvdmVyYWdlIC8gcGF0V2lkdGg7CkBAIC0zMjcsNyArMzI1LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmds
ZSwgaW50IGFuZ2xlU3AKICAgICAgICAgaWYgKHBhdFdpZHRoID09IDEpCiAgICAgICAgICAgICBw
YXR0ZXJuT2Zmc2V0ID0gMS4wOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZl
bk51bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDIgPT0gMDsKKyAgICAgICAgICAgIGJv
b2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDI7CiAgICAgICAgICAgICBp
ZiAocmVtYWluZGVyKQogICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2
ZW5OdW1iZXJPZlNlZ21lbnRzOwogICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRz
KSB7CkBAIC03OTYsMTUgKzc5NCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCiAKICAgICBjYWlyb19saW5lX2NhcF90IGNhaXJvQ2FwID0gQ0FJ
Uk9fTElORV9DQVBfQlVUVDsKICAgICBzd2l0Y2ggKGxpbmVDYXApIHsKLSAgICAgICAgY2FzZSBC
dXR0Q2FwOgotICAgICAgICAgICAgLy8gbm8tb3AKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFJvdW5kQ2FwOgotICAgICAgICAgICAgY2Fpcm9DYXAgPSBDQUlST19MSU5FX0NBUF9S
T1VORDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNxdWFyZUNhcDoKLSAgICAg
ICAgICAgIGNhaXJvQ2FwID0gQ0FJUk9fTElORV9DQVBfU1FVQVJFOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBCdXR0Q2FwOgorICAgICAgICAvLyBuby1vcAorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFJvdW5kQ2FwOgorICAgICAgICBjYWlyb0NhcCA9IENBSVJPX0xJTkVfQ0FQX1JP
VU5EOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAgY2Fpcm9D
YXAgPSBDQUlST19MSU5FX0NBUF9TUVVBUkU7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YWlyb19zZXRfbGluZV9jYXAobV9kYXRhLT5jciwgY2Fpcm9DYXApOwogfQpAQCAtODIxLDE1ICs4
MTksMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGxpbmVK
b2luKQogCiAgICAgY2Fpcm9fbGluZV9qb2luX3QgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lO
X01JVEVSOwogICAgIHN3aXRjaCAobGluZUpvaW4pIHsKLSAgICAgICAgY2FzZSBNaXRlckpvaW46
Ci0gICAgICAgICAgICAvLyBuby1vcAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Um91bmRKb2luOgotICAgICAgICAgICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lOX1JPVU5E
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmV2ZWxKb2luOgotICAgICAgICAg
ICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lOX0JFVkVMOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNaXRlckpvaW46CisgICAgICAgIC8vIG5vLW9wCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUm91bmRKb2luOgorICAgICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pPSU5f
Uk9VTkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmV2ZWxKb2luOgorICAgICAgICBjYWly
b0pvaW4gPSBDQUlST19MSU5FX0pPSU5fQkVWRUw7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYWlyb19zZXRfbGluZV9qb2luKG1fZGF0YS0+Y3IsIGNhaXJvSm9pbik7CiB9CkBAIC04NTUs
MzcgKzg1MywzNyBAQCBmbG9hdCBHcmFwaGljc0NvbnRleHQ6OmdldEFscGhhKCkKIHN0YXRpYyBp
bmxpbmUgY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJvT3BlcmF0b3IoQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIENvbXBvc2l0ZUNsZWFyOgot
ICAgICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0NMRUFSOwotICAgICAgICBjYXNlIENv
bXBvc2l0ZUNvcHk6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfU09VUkNFOwot
ICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoKLSAgICAg
ICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9JTjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVT
b3VyY2VPdXQ6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfT1VUOwotICAgICAg
ICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BF
UkFUT1JfQVRPUDsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI6Ci0gICAg
ICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfREVTVF9PVkVSOwotICAgICAgICBjYXNlIENv
bXBvc2l0ZURlc3RpbmF0aW9uSW46Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1Jf
REVTVF9JTjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKLSAgICAgICAg
ICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9ERVNUX09VVDsKLSAgICAgICAgY2FzZSBDb21wb3Np
dGVEZXN0aW5hdGlvbkF0b3A6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfREVT
VF9BVE9QOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAgIHJldHVybiBD
QUlST19PUEVSQVRPUl9YT1I7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0RhcmtlcjoKLSAg
ICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TQVRVUkFURTsKLSAgICAgICAgY2FzZSBD
b21wb3NpdGVIaWdobGlnaHQ6Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBDYWlybyBlcXVp
dmFsZW50IGZvciBDb21wb3NpdGVIaWdobGlnaHQuCi0gICAgICAgICAgICByZXR1cm4gQ0FJUk9f
T1BFUkFUT1JfT1ZFUjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzTGlnaHRlcjoKLSAgICAg
ICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9BREQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfU09VUkNFOworICAgIGNhc2UgQ29tcG9zaXRl
Q2xlYXI6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9DTEVBUjsKKyAgICBjYXNlIENv
bXBvc2l0ZUNvcHk6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7CisgICAg
Y2FzZSBDb21wb3NpdGVTb3VyY2VPdmVyOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1Jf
T1ZFUjsKKyAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAgICByZXR1cm4gQ0FJUk9f
T1BFUkFUT1JfSU47CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6CisgICAgICAgIHJldHVy
biBDQUlST19PUEVSQVRPUl9PVVQ7CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VBdG9wOgorICAg
ICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfQVRPUDsKKyAgICBjYXNlIENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3ZlcjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfT1ZFUjsKKyAg
ICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uSW46CisgICAgICAgIHJldHVybiBDQUlST19PUEVS
QVRPUl9ERVNUX0lOOworICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ6CisgICAgICAg
IHJldHVybiBDQUlST19PUEVSQVRPUl9ERVNUX09VVDsKKyAgICBjYXNlIENvbXBvc2l0ZURlc3Rp
bmF0aW9uQXRvcDoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfQVRPUDsKKyAg
ICBjYXNlIENvbXBvc2l0ZVhPUjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX1hPUjsK
KyAgICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6CisgICAgICAgIHJldHVybiBDQUlST19PUEVS
QVRPUl9TQVRVUkFURTsKKyAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKKyAgICAgICAgLy8g
VGhlcmUgaXMgbm8gQ2Fpcm8gZXF1aXZhbGVudCBmb3IgQ29tcG9zaXRlSGlnaGxpZ2h0LgorICAg
ICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfT1ZFUjsKKyAgICBjYXNlIENvbXBvc2l0ZVBsdXNM
aWdodGVyOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfQUREOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmlu
ZGV4IDI1Y2M0ZmYuLjVlMDRiODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaWZkZWYg
UV9XU19XSU4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC00Miw3ICs0Myw2IEBACiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGb250
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKQEAgLTExODgsNyArMTE4OCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKIH0KIAogI2lmZGVmIFFfV1Nf
V0lOCi0jaW5jbHVkZSA8d2luZG93cy5oPgogCiBIREMgR3JhcGhpY3NDb250ZXh0OjpnZXRXaW5k
b3dzQ29udGV4dChjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5k
LCBib29sIG1heUNyZWF0ZUJpdG1hcCkKIHsKLS0gCjEuNi40LjE4LmcwN2E0YQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34776</attachid>
            <date>2009-08-13 13:03:36 -0700</date>
            <delta_ts>2009-08-14 06:00:51 -0700</delta_ts>
            <desc>Fix Style patch to have correct replacement for % 2 == 0.  Replaces Style patch for GraphicsContext.cpp.h GraphicsContextCairo.cpp and GraphicsContextQt.cpp.</desc>
            <filename>0001-Style-changes-for-GraphicsContext.cpp-h-GraphicsCont.patch</filename>
            <type>text/plain</type>
            <size>16527</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA2NGU5NDhmOGZhNDI1NzhjMTFiMmQ3YzQwODBkMDRjMTlkYjRhZmQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE2OjAwOjE3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAxLzNdIFN0eWxlIGNoYW5nZXMgZm9yIEdyYXBoaWNzQ29udGV4dC5jcHAvaCwgR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAuCgotLS0KIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgICB8ICAgMTgg
KystLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICAg
fCAgIDMyICsrKy0tLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cCAgICAgICAgfCAgMTQwICsrKysrKysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0KIDUgZmlsZXMgY2hhbmdl
ZCwgMTIwIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA5YzRmNi4uOTc1NTkzYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTIsNiArMiwzMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisg
ICAgICAgIFN0eWxlIGZpeGVzIGJhc2VkIG9uIGNwcF9zdHlsZS5weSBhbmQgV2ViS2l0IFN0eWxl
IGd1aWRlIGZvcgorICAgICAgICBHcmFwaGljc0NvbnRleHQuY3BwL2gsIEdyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBhbmQgR3JhcGhpY3NDb250ZXh0UXQuY3BwLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2OAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQ6OmluaXRGb2N1c1JpbmcpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0
Ojpmb2N1c1JpbmdCb3VuZGluZ1JlY3QpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6dG9DYWlyb09wZXJh
dG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHA6CisKKzIwMDktMDgtMTMgIE1pa2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIE1v
dmUgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzIG92ZXJsYXBwaW5nIGZ1bmN0aW9uIHRvIEdy
YXBoaWNzQ29udGV4dC5jcHAKICAgICAgICAgYW5kIHJlbW92ZSBmcm9tIEdyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBhbmQgR3JhcGhpY3NDb250ZXh0UXQuY3BwLgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMTM3Yzc0Mi4uYTMxNDM2NiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAi
QmlkaVJlc29sdmVyLmgiCisjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKLSNpbmNsdWRlICJGb250Lmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNhdmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbW1vbi0+c3RhY2su
YXBwZW5kKG1fY29tbW9uLT5zdGF0ZSk7Ci0gICAgCisKICAgICBzYXZlUGxhdGZvcm1TdGF0ZSgp
OwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUo
KQogICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUgPSBtX2NvbW1vbi0+c3RhY2subGFzdCgpOwog
ICAgIG1fY29tbW9uLT5zdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgCisKICAgICByZXN0b3JlUGxh
dGZvcm1TdGF0ZSgpOwogfQogCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OnBhaW50aW5nRGlzYWJsZWQoKSBjb25zdAogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQoteyAgICAgICAgCit7CiAgICAgZHJhd0ltYWdlKGltYWdlLCBwLCBJbnRSZWN0KDAs
IDAsIC0xLCAtMSksIG9wKTsKIH0KIApAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEludFBvCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgZm9udC5kcmF3VGV4dCh0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7
CiB9CiAjZW5kaWYKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6aW5p
dEZvY3VzUmluZyhpbnQgd2lkdGgsIGludCBvZmZzZXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNsZWFyRm9jdXNSaW5nKCk7Ci0gICAgCisKICAg
ICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdXaWR0aCA9IHdpZHRoOwogICAgIG1fY29tbW9uLT5tX2Zv
Y3VzUmluZ09mZnNldCA9IG9mZnNldDsKIH0KQEAgLTM5NiwxMiArMzk2LDEyIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGVhckZvY3VzUmluZygpCiBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKIHsKICAgICBJbnRSZWN0IHJlc3VsdCA9IEludFJlY3Qo
MCwgMCwgMCwgMCk7Ci0gICAgCisKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0g
Zm9jdXNSaW5nUmVjdHMoKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5zaXplKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQogICAgICAgICBy
ZXN1bHQudW5pdGUocmVjdHNbaV0pOwotICAgICAgICAKKwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdAogICAgIGZsb2F0
IHRzaCA9IHNyYy5oZWlnaHQoKTsKICAgICBmbG9hdCB0dyA9IGRlc3Qud2lkdGgoKTsKICAgICBm
bG9hdCB0aCA9IGRlc3QuaGVpZ2h0KCk7Ci0gICAgICAgIAorCiAgICAgaWYgKHRzdyA9PSAtMSkK
ICAgICAgICAgdHN3ID0gaW1hZ2UtPndpZHRoKCk7CiAgICAgaWYgKHRzaCA9PSAtMSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGVjNGI1NmEuLmUw
ZDkyOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtNDksOCArNDksOCBAQCB0eXBlZGVmIFFQYWludGVyIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
OwogY2xhc3Mgd3hHQ0RDOwogY2xhc3Mgd3hXaW5kb3dEQzsKIAotLy8gd3hHcmFwaGljc0NvbnRl
eHQgYWxsb3dzIHVzIHRvIHN1cHBvcnQgUGF0aCwgZXRjLiAKLS8vIGJ1dCBvbiBzb21lIHBsYXRm
b3JtcywgZS5nLiBMaW51eCwgaXQgcmVxdWlyZXMgZmFpcmx5IAorLy8gd3hHcmFwaGljc0NvbnRl
eHQgYWxsb3dzIHVzIHRvIHN1cHBvcnQgUGF0aCwgZXRjLgorLy8gYnV0IG9uIHNvbWUgcGxhdGZv
cm1zLCBlLmcuIExpbnV4LCBpdCByZXF1aXJlcyBmYWlybHkKIC8vIG5ldyBzb2Z0d2FyZS4KICNp
ZiBVU0UoV1hHQykKIC8vIE9uIE9TIFgsIHd4R0NEQyBpcyBqdXN0IGEgdHlwZWRlZiBmb3Igd3hE
Qywgc28gdXNlIHd4REMgZXhwbGljaXRseSB0byBtYWtlCkBAIC0xMjIsNyArMTIyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IGludCBjVGV4dEZpbGwgPSAxOwogICAgIGNvbnN0
IGludCBjVGV4dFN0cm9rZSA9IDI7CiAgICAgY29uc3QgaW50IGNUZXh0Q2xpcCA9IDQ7Ci0gICAg
CisKICAgICBlbnVtIFN0cm9rZVN0eWxlIHsKICAgICAgICAgTm9TdHJva2UsCiAgICAgICAgIFNv
bGlkU3Ryb2tlLApAQCAtMTMwLDEyICsxMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEYXNoZWRTdHJva2UKICAgICB9OwogCi0vLyBGSVhNRTogVGhpcyBpcyBhIHBsYWNlLWhv
bGRlciB1bnRpbCB3ZSBkZWNpZGUgdG8gYWRkCi0vLyByZWFsIGNvbG9yIHNwYWNlIHN1cHBvcnQg
dG8gV2ViQ29yZS4gIEF0IHRoYXQgdGltZSwgQ29sb3JTcGFjZSB3aWxsIGJlIGEKLS8vIGNsYXNz
IGFuZCBpbnN0YW5jZXMgd2lsbCBiZSBoZWxkICBvZmYgb2YgQ29sb3JzLiAgIFRoZXJlIHdpbGwg
YmUKLS8vIHNwZWNpYWwgc2luZ2xldG9uIEdyYWRpZW50IGFuZCBQYXR0ZXJuIGNvbG9yIHNwYWNl
cyB0byBtYXJrIHdoZW4KLS8vIGEgZmlsbCBvciBzdHJva2UgaXMgdXNpbmcgYSBncmFkaWVudCBv
ciBwYXR0ZXJuIGluc3RlYWQgb2YgYSBzb2xpZCBjb2xvci4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1OAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgcGxh
Y2UtaG9sZGVyIHVudGlsIHdlIGRlY2lkZSB0byBhZGQKKyAgICAvLyByZWFsIGNvbG9yIHNwYWNl
IHN1cHBvcnQgdG8gV2ViQ29yZS4gIEF0IHRoYXQgdGltZSwgQ29sb3JTcGFjZSB3aWxsIGJlIGEK
KyAgICAvLyBjbGFzcyBhbmQgaW5zdGFuY2VzIHdpbGwgYmUgaGVsZCAgb2ZmIG9mIENvbG9ycy4g
ICBUaGVyZSB3aWxsIGJlCisgICAgLy8gc3BlY2lhbCBzaW5nbGV0b24gR3JhZGllbnQgYW5kIFBh
dHRlcm4gY29sb3Igc3BhY2VzIHRvIG1hcmsgd2hlbgorICAgIC8vIGEgZmlsbCBvciBzdHJva2Ug
aXMgdXNpbmcgYSBncmFkaWVudCBvciBwYXR0ZXJuIGluc3RlYWQgb2YgYSBzb2xpZCBjb2xvci4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTgKICAg
ICBlbnVtIENvbG9yU3BhY2UgewogICAgICAgICBTb2xpZENvbG9yU3BhY2UsCiAgICAgICAgIFBh
dHRlcm5Db2xvclNwYWNlLApAQCAtMTU0LDExICsxNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0Kik7CiAgICAgICAgIH5HcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAKKwogI2lmICFQ
TEFURk9STShXSU5DRSkgfHwgUExBVEZPUk0oUVQpCiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKICNlbmRpZgotICAgICAgICAKKwogICAg
ICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdHJv
a2VUaGlja25lc3MoZmxvYXQpOwogICAgICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNv
bnN0OwpAQCAtMjM0LDcgKzIzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdU
aWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIAorICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
IApAQCAtMjU4LDEzICsyNTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
SW50UG9pbnQmLCBpbnQgaCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgaW50IGZyb20g
PSAwLCBpbnQgdG8gPSAtMSk7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgZHJhd0xpbmVG
b3JUZXh0KGNvbnN0IEludFBvaW50JiwgaW50IHdpZHRoLCBib29sIHByaW50aW5nKTsKICAgICAg
ICAgdm9pZCBkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGNvbnN0IEludFBvaW50
JiwgaW50IHdpZHRoLCBib29sIGdyYW1tYXIpOwotICAgICAgICAKKwogICAgICAgICBib29sIHBh
aW50aW5nRGlzYWJsZWQoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQYWludGluZ0Rpc2FibGVk
KGJvb2wpOwotICAgICAgICAKKwogICAgICAgICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCk7CiAKQEAg
LTMwMyw3ICszMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcm90YXRl
KGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAgICAgICAgIEludFBvaW50IG9yaWdpbigpOwotICAgICAgICAKKwogICAgICAg
ICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAg
ICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBhOWQ2ODcyLi5kZThhZmIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMzEs
NyArMzEsNiBAQAogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAKLSNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkNhaXJvUGF0aC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYXRo
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPGNhaXJvLmg+CiAj
aW5jbHVkZSA8bWF0aC5oPgpAQCAtNTMsOCArNTMsOCBAQAogI2VsaWYgUExBVEZPUk0oV0lOKQog
I2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjZW5kaWYKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fp
cm8uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAKICNpZm5kZWYgTV9Q
SQogI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYKQEAgLTIwNywyMCArMjA3LDE4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQx
LCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKICAg
ICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAxLjA7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzJTIgPT0gMDsKKyAgICAg
ICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7CiAg
ICAgICAgICAgICBpZiAocmVtYWluZGVyKQogICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNl
Z21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwogICAgICAgICAgICAgaWYgKGV2ZW5OdW1i
ZXJPZlNlZ21lbnRzKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewogICAgICAg
ICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAg
ICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlci8yOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhdHRl
cm5PZmZzZXQgPSBwYXRXaWR0aC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoIWV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5P
ZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMjsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIWV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJl
bWFpbmRlcikKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAt
IHJlbWFpbmRlcikvMjsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRX
aWR0aCAtIHJlbWFpbmRlcikgLyAyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI4
Niw3ICsyODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogCiAgICAgaWYgKHcgIT0gaCkK
ICAgICAgICAgY2Fpcm9fc2NhbGUoY3IsIDEuLCBzY2FsZUZhY3Rvcik7Ci0gICAgCisKICAgICBj
YWlyb19hcmNfbmVnYXRpdmUoY3IsIHggKyBoUmFkaXVzLCAoeSArIHZSYWRpdXMpICogcmV2ZXJz
ZVNjYWxlRmFjdG9yLCBoUmFkaXVzLCAtZmEgKiBNX1BJLzE4MCwgLWZhbGVuICogTV9QSS8xODAp
OwogCiAgICAgaWYgKHcgIT0gaCkKQEAgLTI5NCwxNiArMjkyLDE2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGlu
dCBhbmdsZVNwCiAKICAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwogICAgIGlu
dCBwYXRXaWR0aCA9IDA7Ci0gICAgCisKICAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAg
ICAgICAgY2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgICAgICBwYXRXaWR0aCA9IHN0YXRpY19j
YXN0PGludD4od2lkdGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERh
c2hlZFN0cm9rZToKLSAgICAgICAgICAgIHBhdFdpZHRoID0gMyAqIHN0YXRpY19jYXN0PGludD4o
d2lkdGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6CisgICAgICAgIHBhdFdpZHRoID0g
c3RhdGljX2Nhc3Q8aW50Pih3aWR0aCAvIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERh
c2hlZFN0cm9rZToKKyAgICAgICAgcGF0V2lkdGggPSAzICogc3RhdGljX2Nhc3Q8aW50Pih3aWR0
aCAvIDIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CkBAIC0zMTcsNyArMzE1LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBp
bnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgICAgIGRpc3RhbmNlID0gc3RhdGlj
X2Nhc3Q8aW50PigoTV9QSSAqIGhSYWRpdXMpIC8gMi4wKTsKICAgICAgICAgZWxzZSAvLyBXZSBh
cmUgZWxsaXB0aWNhbCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAg
ICAgICAgICAgZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChNX1BJICogc3FydGYoKGhSYWRp
dXMgKiBoUmFkaXVzICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wKSkgLyAyLjApOwotICAgICAg
ICAKKwogICAgICAgICBpbnQgcmVtYWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0aDsKICAgICAg
ICAgaW50IGNvdmVyYWdlID0gZGlzdGFuY2UgLSByZW1haW5kZXI7CiAgICAgICAgIGludCBudW1T
ZWdtZW50cyA9IGNvdmVyYWdlIC8gcGF0V2lkdGg7CkBAIC0zMjcsNyArMzI1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRB
bmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgaWYgKHBhdFdpZHRoID09IDEpCiAgICAgICAgICAg
ICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wg
ZXZlbk51bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDIgPT0gMDsKKyAgICAgICAgICAg
IGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7CiAgICAgICAg
ICAgICBpZiAocmVtYWluZGVyKQogICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRz
ID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwogICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNl
Z21lbnRzKSB7CkBAIC03OTYsMTUgKzc5NCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCiAKICAgICBjYWlyb19saW5lX2NhcF90IGNhaXJvQ2Fw
ID0gQ0FJUk9fTElORV9DQVBfQlVUVDsKICAgICBzd2l0Y2ggKGxpbmVDYXApIHsKLSAgICAgICAg
Y2FzZSBCdXR0Q2FwOgotICAgICAgICAgICAgLy8gbm8tb3AKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFJvdW5kQ2FwOgotICAgICAgICAgICAgY2Fpcm9DYXAgPSBDQUlST19MSU5F
X0NBUF9ST1VORDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNxdWFyZUNhcDoK
LSAgICAgICAgICAgIGNhaXJvQ2FwID0gQ0FJUk9fTElORV9DQVBfU1FVQVJFOwotICAgICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBCdXR0Q2FwOgorICAgICAgICAvLyBuby1vcAorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kQ2FwOgorICAgICAgICBjYWlyb0NhcCA9IENBSVJPX0xJTkVf
Q0FQX1JPVU5EOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAg
Y2Fpcm9DYXAgPSBDQUlST19MSU5FX0NBUF9TUVVBUkU7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYWlyb19zZXRfbGluZV9jYXAobV9kYXRhLT5jciwgY2Fpcm9DYXApOwogfQpAQCAtODIx
LDE1ICs4MTksMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2lu
IGxpbmVKb2luKQogCiAgICAgY2Fpcm9fbGluZV9qb2luX3QgY2Fpcm9Kb2luID0gQ0FJUk9fTElO
RV9KT0lOX01JVEVSOwogICAgIHN3aXRjaCAobGluZUpvaW4pIHsKLSAgICAgICAgY2FzZSBNaXRl
ckpvaW46Ci0gICAgICAgICAgICAvLyBuby1vcAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgUm91bmRKb2luOgotICAgICAgICAgICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lO
X1JPVU5EOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmV2ZWxKb2luOgotICAg
ICAgICAgICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lOX0JFVkVMOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBNaXRlckpvaW46CisgICAgICAgIC8vIG5vLW9wCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRKb2luOgorICAgICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5F
X0pPSU5fUk9VTkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmV2ZWxKb2luOgorICAgICAg
ICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pPSU5fQkVWRUw7CisgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYWlyb19zZXRfbGluZV9qb2luKG1fZGF0YS0+Y3IsIGNhaXJvSm9pbik7CiB9CkBA
IC04NTUsMzcgKzg1MywzNyBAQCBmbG9hdCBHcmFwaGljc0NvbnRleHQ6OmdldEFscGhhKCkKIHN0
YXRpYyBpbmxpbmUgY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJvT3BlcmF0b3IoQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIENvbXBvc2l0ZUNs
ZWFyOgotICAgICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0NMRUFSOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZUNvcHk6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfU09V
UkNFOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAgICAgICAgICByZXR1
cm4gQ0FJUk9fT1BFUkFUT1JfT1ZFUjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoK
LSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9JTjsKLSAgICAgICAgY2FzZSBDb21w
b3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfT1VUOwot
ICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJ
Uk9fT1BFUkFUT1JfQVRPUDsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI6
Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfREVTVF9PVkVSOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uSW46Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BF
UkFUT1JfREVTVF9JTjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKLSAg
ICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9ERVNUX09VVDsKLSAgICAgICAgY2FzZSBD
b21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFU
T1JfREVTVF9BVE9QOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAgIHJl
dHVybiBDQUlST19PUEVSQVRPUl9YT1I7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0Rhcmtl
cjoKLSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TQVRVUkFURTsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVIaWdobGlnaHQ6Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBDYWly
byBlcXVpdmFsZW50IGZvciBDb21wb3NpdGVIaWdobGlnaHQuCi0gICAgICAgICAgICByZXR1cm4g
Q0FJUk9fT1BFUkFUT1JfT1ZFUjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzTGlnaHRlcjoK
LSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9BREQ7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfU09VUkNFOworICAgIGNhc2UgQ29t
cG9zaXRlQ2xlYXI6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9DTEVBUjsKKyAgICBj
YXNlIENvbXBvc2l0ZUNvcHk6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7
CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdmVyOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BF
UkFUT1JfT1ZFUjsKKyAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAgICByZXR1cm4g
Q0FJUk9fT1BFUkFUT1JfSU47CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6CisgICAgICAg
IHJldHVybiBDQUlST19PUEVSQVRPUl9PVVQ7CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VBdG9w
OgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfQVRPUDsKKyAgICBjYXNlIENvbXBvc2l0
ZURlc3RpbmF0aW9uT3ZlcjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfT1ZF
UjsKKyAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uSW46CisgICAgICAgIHJldHVybiBDQUlS
T19PUEVSQVRPUl9ERVNUX0lOOworICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ6Cisg
ICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9ERVNUX09VVDsKKyAgICBjYXNlIENvbXBvc2l0
ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfQVRP
UDsKKyAgICBjYXNlIENvbXBvc2l0ZVhPUjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9S
X1hPUjsKKyAgICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6CisgICAgICAgIHJldHVybiBDQUlS
T19PUEVSQVRPUl9TQVRVUkFURTsKKyAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKKyAgICAg
ICAgLy8gVGhlcmUgaXMgbm8gQ2Fpcm8gZXF1aXZhbGVudCBmb3IgQ29tcG9zaXRlSGlnaGxpZ2h0
LgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfT1ZFUjsKKyAgICBjYXNlIENvbXBvc2l0
ZVBsdXNMaWdodGVyOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfQUREOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQu
Y3BwCmluZGV4IDI1Y2M0ZmYuLjVlMDRiODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAj
aWZkZWYgUV9XU19XSU4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC00Miw3ICs0Myw2IEBACiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJGb250LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKQEAgLTExODgsNyArMTE4OCw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKIH0KIAogI2lmZGVm
IFFfV1NfV0lOCi0jaW5jbHVkZSA8d2luZG93cy5oPgogCiBIREMgR3JhcGhpY3NDb250ZXh0Ojpn
ZXRXaW5kb3dzQ29udGV4dChjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib29sIHN1cHBvcnRBbHBo
YUJsZW5kLCBib29sIG1heUNyZWF0ZUJpdG1hcCkKIHsKLS0gCjEuNi40LjE4LmcwN2E0YQoK
</data>
<flag name="review"
          id="18980"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34777</attachid>
            <date>2009-08-13 13:15:35 -0700</date>
            <delta_ts>2009-08-14 06:18:13 -0700</delta_ts>
            <desc>Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code.

Note: This patch is dependent on attachment 34767 in this bug.</desc>
            <filename>0001-Style-update-for-GraphicsContextCG.cpp.patch</filename>
            <type>text/plain</type>
            <size>23480</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBiYmNkY2RhNmRmNzM2YmEyOGJiODAwYzVlZTU4YmM3YzJlMzg3NTY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE1OjU0OjM0IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gU3R5bGUgdXBkYXRlIGZvciBHcmFwaGljc0NvbnRleHRDRy5jcHAuCgotLS0KIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArKwogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgfCAgMzQ2ICsr
KysrKysrKystLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspLCAx
NzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjZDk4YTk1Li43M2FjZjJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDM3IEBACiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgU3R5bGUgZml4ZXMgYmFz
ZWQgb24gY3BwX3N0eWxlLnB5IGFuZCBXZWJLaXQgU3R5bGUgZ3VpZGUgZm9yCisgICAgICAgIEdy
YXBoaWNzQ29udGV4dENHLmNwcAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODI2OAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0RWxsaXBzZUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJv
dW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRV
UkxGb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbik6CisKKzIwMDktMDgtMTMgIE1p
a2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFVwZGF0ZSBHcmFwaGljc0NvbnRleHRD
RydzIHZlcnNpb24gb2YgZHJhd0xpbmUgdG8gbWFrZSB1c2Ugb2YgdGhlIHNoYXJlZAogICAgICAg
ICBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMgZnVuY3Rpb24gYW5kIGVsaW1pbmF0aW9uIG92
ZXJsYXBwaW5nIGNvZGUuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMDE5YjVlOS4uY2Y4YjkwMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4
LDE0ICsyOCwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHQml0bWFwQ29udGV4dC5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkNvbnRleHQu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTU0LDE5ICsxNTUsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0
IEludFBvaW50JiBwb2ludDIpCiAKICAgICBpbnQgcGF0V2lkdGggPSAwOwogICAgIHN3aXRjaCAo
c3Ryb2tlU3R5bGUoKSkgewotICAgICAgICBjYXNlIE5vU3Ryb2tlOgotICAgICAgICBjYXNlIFNv
bGlkU3Ryb2tlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG90dGVkU3Ryb2tl
OgotICAgICAgICAgICAgcGF0V2lkdGggPSAoaW50KXdpZHRoOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICAgICAgcGF0V2lkdGggPSAzICog
KGludCl3aWR0aDsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9TdHJva2U6CisgICAg
Y2FzZSBTb2xpZFN0cm9rZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6
CisgICAgICAgIHBhdFdpZHRoID0gKGludCl3aWR0aDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBEYXNoZWRTdHJva2U6CisgICAgICAgIHBhdFdpZHRoID0gMyAqIChpbnQpd2lkdGg7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAgIENH
Q29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBmYWxzZSk7CiAKQEAgLTE5Nyw3ICsx
OTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBv
aW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKICAgICAgICAgaWYgKHBhdFdpZHRoID09IDEp
CiAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wZjsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gbnVtU2VnbWVudHMgJSAyID09IDA7
CisgICAgICAgICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIShudW1TZWdtZW50cyAl
IDIpOwogICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKICAgICAgICAgICAgICAgICBldmVuTnVt
YmVyT2ZTZWdtZW50cyA9ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKICAgICAgICAgICAgIGlmIChl
dmVuTnVtYmVyT2ZTZWdtZW50cykgewpAQCAtMjExLDcgKzIxMiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYg
cG9pbnQyKQogICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0g
cmVtYWluZGVyKS8yOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGNvbnN0IENHRmxvYXQgZG90dGVkTGluZVsyXSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRoIH07
CiAgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdHRlcm5PZmZzZXQsIGRv
dHRlZExpbmUsIDIpOwogICAgIH0KQEAgLTIyNCw3ICsyMjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQmIHBv
aW50MikKIAogICAgIGlmIChwYXRXaWR0aCkKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsKLSAgICAgICAgCisKICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpCiAgICAg
ICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCB0cnVlKTsKIH0KQEAgLTIz
OSw3ICsyNDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50
UmVjdCYgcmVjdCkKIAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBmbG9hdCByID0gKGZs
b2F0KXJlY3Qud2lkdGgoKSAvIDI7CkBAIC0yNTEsMjUgKzI1MiwyNSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xl
LCBpbnQgYW5nbGVTcGFuKQoteyAKK3sKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0
cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UgfHwgc3Ryb2tlVGhpY2tuZXNzKCkgPD0gMC4wZikKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgIENHQ29u
dGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMo
Y29udGV4dCwgZmFsc2UpOwotICAgIAorCiAgICAgaW50IHggPSByZWN0LngoKTsKICAgICBpbnQg
eSA9IHJlY3QueSgpOwogICAgIGZsb2F0IHcgPSAoZmxvYXQpcmVjdC53aWR0aCgpOwogICAgIGZs
b2F0IGggPSAoZmxvYXQpcmVjdC5oZWlnaHQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGgg
LyB3OwogICAgIGZsb2F0IHJldmVyc2VTY2FsZUZhY3RvciA9IHcgLyBoOwotICAgIAorCiAgICAg
aWYgKHcgIT0gaCkKICAgICAgICAgc2NhbGUoRmxvYXRTaXplKDEsIHNjYWxlRmFjdG9yKSk7Ci0g
ICAgCisKICAgICBmbG9hdCBoUmFkaXVzID0gdyAvIDI7CiAgICAgZmxvYXQgdlJhZGl1cyA9IGgg
LyAyOwogICAgIGZsb2F0IGZhID0gc3RhcnRBbmdsZTsKQEAgLTI4MCwyMiArMjgxLDIxIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0
YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAKICAgICBpZiAodyAhPSBoKQogICAgICAgICBzY2FsZShG
bG9hdFNpemUoMSwgcmV2ZXJzZVNjYWxlRmFjdG9yKSk7Ci0gICAgCi0gICAgCisKICAgICBmbG9h
dCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwogICAgIGludCBwYXRXaWR0aCA9IDA7Ci0gICAg
CisKICAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICAgICAgY2FzZSBEb3R0ZWRTdHJv
a2U6Ci0gICAgICAgICAgICBwYXRXaWR0aCA9IChpbnQpKHdpZHRoIC8gMik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoZWRTdHJva2U6Ci0gICAgICAgICAgICBwYXRXaWR0
aCA9IDMgKiAoaW50KSh3aWR0aCAvIDIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdHRlZFN0cm9rZToKKyAgICAg
ICAgcGF0V2lkdGggPSAoaW50KSh3aWR0aCAvIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IERhc2hlZFN0cm9rZToKKyAgICAgICAgcGF0V2lkdGggPSAzICogKGludCkod2lkdGggLyAyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IAorCiAgICAgaWYgKHBhdFdpZHRoKSB7CiAgICAgICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3
aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLgogICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBU
aGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludApAQCAtMzA1LDcgKzMwNSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAgICAgICAgICAgICBkaXN0YW5jZSA9IHN0YXRp
Y19jYXN0PGludD4oKHBpRmxvYXQgKiBoUmFkaXVzKSAvIDIuMGYpOwogICAgICAgICBlbHNlIC8v
IFdlIGFyZSBlbGxpcHRpY2FsIGFuZCB3aWxsIGhhdmUgdG8gZXN0aW1hdGUgdGhlIGRpc3RhbmNl
CiAgICAgICAgICAgICBkaXN0YW5jZSA9IHN0YXRpY19jYXN0PGludD4oKHBpRmxvYXQgKiBzcXJ0
ZigoaFJhZGl1cyAqIGhSYWRpdXMgKyB2UmFkaXVzICogdlJhZGl1cykgLyAyLjBmKSkgLyAyLjBm
KTsKLSAgICAgICAgCisKICAgICAgICAgaW50IHJlbWFpbmRlciA9IGRpc3RhbmNlICUgcGF0V2lk
dGg7CiAgICAgICAgIGludCBjb3ZlcmFnZSA9IGRpc3RhbmNlIC0gcmVtYWluZGVyOwogICAgICAg
ICBpbnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAvIHBhdFdpZHRoOwpAQCAtMzE1LDcgKzMxNSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAgICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQog
ICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IDEuMGY7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9PSAwOwor
ICAgICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAy
KTsKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCiAgICAgICAgICAgICAgICAgZXZlbk51bWJl
ck9mU2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7CiAgICAgICAgICAgICBpZiAoZXZl
bk51bWJlck9mU2VnbWVudHMpIHsKQEAgLTMyOSwxMyArMzI5LDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGlu
dCBhbmdsZVNwCiAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGgg
LSByZW1haW5kZXIpIC8gMi4wZjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIAorCiAg
ICAgICAgIGNvbnN0IENHRmxvYXQgZG90dGVkTGluZVsyXSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRo
IH07CiAgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdHRlcm5PZmZzZXQs
IGRvdHRlZExpbmUsIDIpOwogICAgIH0KIAogICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4
dCk7Ci0gICAgCisKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCkBA
IC0zNTEsNyArMzUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29u
KHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKIAogICAgIGlmIChhbnRp
YWxpYXNlZCAhPSBzaG91bGRBbnRpYWxpYXMoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxk
QW50aWFsaWFzKGNvbnRleHQsIGFudGlhbGlhc2VkKTsKLSAgICAKKwogICAgIENHQ29udGV4dEJl
Z2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRNb3ZlVG9Qb2ludChjb250ZXh0LCBwb2lu
dHNbMF0ueCgpLCBwb2ludHNbMF0ueSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG5w
b2ludHM7IGkrKykKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnZleFBvbHlnb24oc2l6ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cwog
ICAgIENHQ29udGV4dENsb3NlUGF0aChjb250ZXh0KTsKIAogICAgIGRyYXdQYXRoKCk7Ci0gICAg
CisKICAgICBpZiAoYW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAgIENH
Q29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzaG91bGRBbnRpYWxpYXMoKSk7CiB9
CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5
Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogewogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAKKwogICAgIENHUGF0dGVyblJlZiBwbGF0
Zm9ybVBhdHRlcm4gPSBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKS0+Y3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKGdldENUTSgpKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0aCgpCiAgICAgICAgIHN0cm9rZVBhdGgoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChzdGF0ZS5maWxsQ29sb3JTcGFjZSA9PSBQYXR0ZXJuQ29sb3JTcGFj
ZSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogICAgIGlmIChzdGF0ZS5zdHJva2VDb2xv
clNwYWNlID09IFBhdHRlcm5Db2xvclNwYWNlKQpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIENHUmVj
dCByZWN0c1syXSA9IHsgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4
dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCksIHJlY3RzLCAyKTsKQEAg
LTU4Niw3ICs1ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKHBsYXRm
b3JtQ29udGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0KHBsYXRmb3JtQ29udGV4dCgpLCBD
R0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBDR0Nv
bnRleHRBZGRFbGxpcHNlSW5SZWN0KHBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKQEAgLTYxNSwx
MyArNjE1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xp
cChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzCiAKICAgICBjbGlwKHJlY3QpOwog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgCisKICAg
ICAvLyBBZGQgb3V0ZXIgZWxsaXBzZQogICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29u
dGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogICAgIC8vIEFkZCBpbm5lciBlbGxpcHNlLgogICAgIENHQ29udGV4dEFkZEVs
bGlwc2VJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIHRoaWNrbmVzcywgcmVj
dC55KCkgKyB0aGlja25lc3MsCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtICh0aGlja25lc3MgKiAy
KSwgcmVjdC5oZWlnaHQoKSAtICh0aGlja25lc3MgKiAyKSkpOwotICAgIAorCiAgICAgQ0dDb250
ZXh0RU9DbGlwKGNvbnRleHQpOwogfQogCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
SW1hZ2VCdWZmZXIKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0KCks
IHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxl
Q1RNKHBsYXRmb3JtQ29udGV4dCgpLCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhw
bGF0Zm9ybUNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBp
bWFnZUJ1ZmZlci0+aW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKQEAgLTcxMCw3ICs3MTAsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYg
c2l6ZSwgaW50IGJsdXIsIGNvbnN0IENvbAogICAgICAgICBDR0NvbG9yUmVmIGNvbG9yQ0cgPSBj
cmVhdGVDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR1NpemVNYWtl
KHdpZHRoLCBoZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1
clJhZGl1cywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyUmFkaXVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JDRyk7CiAgICAgICAg
IENHQ29sb3JSZWxlYXNlKGNvbG9yQ0cpOwogICAgIH0KQEAgLTc3NSwxNSArNzc1LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKExpbmVDYXAgY2FwKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKGNhcCkgewotICAg
ICAgICBjYXNlIEJ1dHRDYXA6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRm
b3JtQ29udGV4dCgpLCBrQ0dMaW5lQ2FwQnV0dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBSb3VuZENhcDoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVDYXAocGxhdGZv
cm1Db250ZXh0KCksIGtDR0xpbmVDYXBSb3VuZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTcXVhcmVDYXA6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRm
b3JtQ29udGV4dCgpLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQnV0dENhcDoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChwbGF0Zm9ybUNvbnRl
eHQoKSwga0NHTGluZUNhcEJ1dHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kQ2Fw
OgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5l
Q2FwUm91bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAg
Q0dDb250ZXh0U2V0TGluZUNhcChwbGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUNhcFNxdWFyZSk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNzk3LDE1ICs3OTcsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGpvaW4pCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAoam9pbikgewotICAg
ICAgICBjYXNlIE1pdGVySm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVKb2luKHBs
YXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pbk1pdGVyKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFJvdW5kSm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVKb2lu
KHBsYXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pblJvdW5kKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEJldmVsSm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVK
b2luKHBsYXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pbkJldmVsKTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWl0ZXJKb2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihw
bGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUpvaW5NaXRlcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUm91bmRKb2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihwbGF0Zm9ybUNv
bnRleHQoKSwga0NHTGluZUpvaW5Sb3VuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmV2
ZWxKb2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihwbGF0Zm9ybUNvbnRleHQoKSwg
a0NHTGluZUpvaW5CZXZlbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtODM0LDcg
KzgzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dD
b250ZXh0QWRkUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5n
Qm94KHBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChwbGF0Zm9ybUNv
bnRleHQoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CkBAIC04ODUsOSArODg1LDkgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXggR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBjb25zdAogCiBGbG9hdFJl
Y3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKLSAgICAvLyBJdCBpcyBub3QgZW5vdWdoIGp1c3QgdG8gcm91bmQgdG8gcGl4ZWxz
IGluIGRldmljZSBzcGFjZS4gVGhlIHJvdGF0aW9uIHBhcnQgb2YgdGhlIAorICAgIC8vIEl0IGlz
IG5vdCBlbm91Z2gganVzdCB0byByb3VuZCB0byBwaXhlbHMgaW4gZGV2aWNlIHNwYWNlLiBUaGUg
cm90YXRpb24gcGFydCBvZiB0aGUKICAgICAvLyBhZmZpbmUgdHJhbnNmb3JtIG1hdHJpeCB0byBk
ZXZpY2Ugc3BhY2UgY2FuIG1lc3Mgd2l0aCB0aGlzIGNvbnZlcnNpb24gaWYgd2UgaGF2ZSBhCi0g
ICAgLy8gcm90YXRpbmcgaW1hZ2UgbGlrZSB0aGUgaGFuZHMgb2YgdGhlIHdvcmxkIGNsb2NrIHdp
ZGdldC4gV2UganVzdCBuZWVkIHRoZSBzY2FsZSwgc28gCisgICAgLy8gcm90YXRpbmcgaW1hZ2Ug
bGlrZSB0aGUgaGFuZHMgb2YgdGhlIHdvcmxkIGNsb2NrIHdpZGdldC4gV2UganVzdCBuZWVkIHRo
ZSBzY2FsZSwgc28KICAgICAvLyB3ZSBnZXQgdGhlIGFmZmluZSB0cmFuc2Zvcm0gbWF0cml4IGFu
ZCBleHRyYWN0IHRoZSBzY2FsZS4KIAogICAgIGlmIChtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJh
bnNmb3JtS25vd25Ub0JlSWRlbnRpdHkpCkBAIC05MTAsMTEgKzkxMCwxMSBAQCBGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBkZXZpY2VPcmlnaW4ueSA9IHJvdW5kZihkZXZpY2VPcmlnaW4ueSk7CiAgICAgZGV2
aWNlTG93ZXJSaWdodC54ID0gcm91bmRmKGRldmljZUxvd2VyUmlnaHQueCk7CiAgICAgZGV2aWNl
TG93ZXJSaWdodC55ID0gcm91bmRmKGRldmljZUxvd2VyUmlnaHQueSk7Ci0gICAgCisKICAgICAv
LyBEb24ndCBsZXQgdGhlIGhlaWdodCBvciB3aWR0aCByb3VuZCB0byAwIHVubGVzcyBlaXRoZXIg
d2FzIG9yaWdpbmFsbHkgMAotICAgIGlmIChkZXZpY2VPcmlnaW4ueSA9PSBkZXZpY2VMb3dlclJp
Z2h0LnkgJiYgcmVjdC5oZWlnaHQoKSAhPSAwKQorICAgIGlmIChkZXZpY2VPcmlnaW4ueSA9PSBk
ZXZpY2VMb3dlclJpZ2h0LnkgJiYgcmVjdC5oZWlnaHQoKSkKICAgICAgICAgZGV2aWNlTG93ZXJS
aWdodC55ICs9IDE7Ci0gICAgaWYgKGRldmljZU9yaWdpbi54ID09IGRldmljZUxvd2VyUmlnaHQu
eCAmJiByZWN0LndpZHRoKCkgIT0gMCkKKyAgICBpZiAoZGV2aWNlT3JpZ2luLnggPT0gZGV2aWNl
TG93ZXJSaWdodC54ICYmIHJlY3Qud2lkdGgoKSkKICAgICAgICAgZGV2aWNlTG93ZXJSaWdodC54
ICs9IDE7CiAKICAgICBGbG9hdFBvaW50IHJvdW5kZWRPcmlnaW4gPSBGbG9hdFBvaW50KGRldmlj
ZU9yaWdpbi54IC8gZGV2aWNlU2NhbGVYLCBkZXZpY2VPcmlnaW4ueSAvIGRldmljZVNjYWxlWSk7
CkBAIC05NjAsMTMgKzk2MCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JU
ZXh0KGNvbnN0IEludFBvaW50JiBwb2ludCwgaW50IHdpZHRoLCBib29sIHByaQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0
cm9rZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBz
dHJva2VDb2xvcigpKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwg
Q0dSZWN0TWFrZSh4LCB5LCBsaW5lTGVuZ3RoLCB0aGlja25lc3MpKTsKICAgICBpZiAoZmlsbENv
bG9yKCkgIT0gc3Ryb2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1D
b250ZXh0KCksIGZpbGxDb2xvcigpKTsKLSAgICAgICAgCisKICAgICBpZiAocmVzdG9yZUFudGlh
bGlhc01vZGUpCiAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNv
bnRleHQoKSwgdHJ1ZSk7CiB9CkBAIC05NzUsMTEgKzk3NSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAorCiAgICAgQ0ZVUkxSZWYgdXJsUmVmID0gbGluay5jcmVhdGVDRlVSTCgpOwogICAg
IGlmICh1cmxSZWYpIHsKICAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gR2V0IHRoZSBib3VuZGluZyBib3ggdG8g
aGFuZGxlIGNsaXBwaW5nLgogICAgICAgICBDR1JlY3QgYm94ID0gQ0dDb250ZXh0R2V0Q2xpcEJv
dW5kaW5nQm94KGNvbnRleHQpOwogCkBAIC05OTgsMjggKzk5OCwyOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eSBtb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENHSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSA9IGtDR0ludGVycG9s
YXRpb25EZWZhdWx0OwogICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIEludGVycG9s
YXRpb25EZWZhdWx0OgotICAgICAgICAgICAgcXVhbGl0eSA9IGtDR0ludGVycG9sYXRpb25EZWZh
dWx0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50ZXJwb2xhdGlvbk5vbmU6
Ci0gICAgICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbk5vbmU7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBJbnRlcnBvbGF0aW9uTG93OgotICAgICAgICAgICAgcXVh
bGl0eSA9IGtDR0ludGVycG9sYXRpb25Mb3c7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAvLyBGYWxsIHRocm91Z2ggdG8gSW50ZXJwb2xhdGlvbkhpZ2ggaWYga0NHSW50ZXJwb2xhdGlv
bk1lZGl1bSBpcyBub3QgYXZhaWxhYmxlCi0gICAgICAgIGNhc2UgSW50ZXJwb2xhdGlvbk1lZGl1
bToKKyAgICBjYXNlIEludGVycG9sYXRpb25EZWZhdWx0OgorICAgICAgICBxdWFsaXR5ID0ga0NH
SW50ZXJwb2xhdGlvbkRlZmF1bHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xh
dGlvbk5vbmU6CisgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uTm9uZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uTG93OgorICAgICAgICBxdWFsaXR5ID0g
a0NHSW50ZXJwb2xhdGlvbkxvdzsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvLyBGYWxsIHRocm91
Z2ggdG8gSW50ZXJwb2xhdGlvbkhpZ2ggaWYga0NHSW50ZXJwb2xhdGlvbk1lZGl1bSBpcyBub3Qg
YXZhaWxhYmxlCisgICAgY2FzZSBJbnRlcnBvbGF0aW9uTWVkaXVtOgogI2lmIEhBVkUoQ0dfSU5U
RVJQT0xBVElPTl9NRURJVU0pCi0gICAgICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlv
bk1lZGl1bTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJw
b2xhdGlvbk1lZGl1bTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJbnRl
cnBvbGF0aW9uSGlnaDoKLSAgICAgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uSGln
aDsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvbkhpZ2g6CisgICAg
ICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgp
LCBxdWFsaXR5KTsKIH0KQEAgLTEwMzEsMTggKzEwMzEsMTggQEAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QKIAog
ICAgIENHSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSA9IENHQ29udGV4dEdldEludGVycG9s
YXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBzd2l0Y2ggKHF1YWxpdHkpIHsK
LSAgICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKLSAgICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uTm9u
ZToKLSAgICAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTm9uZTsKLSAgICAgICAgY2FzZSBr
Q0dJbnRlcnBvbGF0aW9uTG93OgotICAgICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7
CisgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEludGVy
cG9sYXRpb25EZWZhdWx0OworICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk5vbmU6CisgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uTm9uZTsKKyAgICBjYXNlIGtDR0ludGVycG9sYXRpb25Mb3c6
CisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwogI2lmIEhBVkUoQ0dfSU5URVJQT0xB
VElPTl9NRURJVU0pCi0gICAgICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk1lZGl1bToKLSAgICAg
ICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTWVkaXVtOworICAgIGNhc2Uga0NHSW50ZXJwb2xh
dGlvbk1lZGl1bToKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25NZWRpdW07CiAjZW5kaWYK
LSAgICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDoKLSAgICAgICAgICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uSGlnaDsKKyAgICBjYXNlIGtDR0ludGVycG9sYXRpb25IaWdoOgorICAgICAg
ICByZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQogICAgIHJldHVybiBJbnRlcnBvbGF0
aW9uRGVmYXVsdDsKIH0KQEAgLTEwNTUsMzIgKzEwNTUsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQogICAgIC8vIFdvdywgd2lz
aCBDRyBoYWQgdXNlZCBiaXRzIGhlcmUuCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2FzZSBjVGV4dElu
dmlzaWJsZTogLy8gSW52aXNpYmxlCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwga0NHVGV4dEludmlzaWJsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBjVGV4dEZpbGw6IC8vIEZpbGwKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRl
eHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBjVGV4dFN0cm9rZTogLy8gU3Ryb2tlCi0gICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAzOiAvLyBGaWxsIHwgU3Ryb2tlCi0gICAgICAgICAgICBD
R0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2UpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgY1RleHRDbGlwOiAvLyBDbGlwCi0gICAg
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dENsaXAp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNTogLy8gRmlsbCB8IENsaXAKLSAg
ICAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0Rmls
bENsaXApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNjogLy8gU3Ryb2tlIHwg
Q2xpcAotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtD
R1RleHRTdHJva2VDbGlwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDc6IC8v
IEZpbGwgfCBTdHJva2UgfCBDbGlwCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2VDbGlwKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBjVGV4dElu
dmlzaWJsZTogLy8gSW52aXNpYmxlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9k
ZShjb250ZXh0LCBrQ0dUZXh0SW52aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBj
VGV4dEZpbGw6IC8vIEZpbGwKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNv
bnRleHQsIGtDR1RleHRGaWxsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBjVGV4dFN0cm9r
ZTogLy8gU3Ryb2tlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0
LCBrQ0dUZXh0U3Ryb2tlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOiAvLyBGaWxsIHwg
U3Ryb2tlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dU
ZXh0RmlsbFN0cm9rZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgY1RleHRDbGlwOiAvLyBD
bGlwCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0
Q2xpcCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNTogLy8gRmlsbCB8IENsaXAKKyAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsQ2xpcCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNjogLy8gU3Ryb2tlIHwgQ2xpcAorICAgICAgICBD
R0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZUNsaXApOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDc6IC8vIEZpbGwgfCBTdHJva2UgfCBDbGlwCisgICAg
ICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbFN0cm9r
ZUNsaXApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAg
ICB9CiB9CiAKQEAgLTExMTQsNTQgKzExMTQsNTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogCiAjaWZuZGVmIEJVSUxESU5H
X09OX1RJR0VSIC8vIFRpZ2VyJ3Mgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKCkgaXMgZGVmaW5lZCBp
biBHcmFwaGljc0NvbnRleHRNYWMubW0uCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCi17ICAgCit7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0dCbGVuZE1vZGUgdGFy
Z2V0ID0ga0NHQmxlbmRNb2RlTm9ybWFsOyAgIAorICAgIENHQmxlbmRNb2RlIHRhcmdldCA9IGtD
R0JsZW5kTW9kZU5vcm1hbDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2FzZSBDb21w
b3NpdGVDbGVhcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNsZWFyOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlQ29weToKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvcHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVTb3VyY2VPdmVyOgotICAgICAgICAgICAgLy9rQ0dCbGVuZE1vZGVOb3Jt
YWwKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlSW47Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAgICAgICB0YXJn
ZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVTb3VyY2VBdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRN
b2RlU291cmNlQXRvcDsgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3Np
dGVEZXN0aW5hdGlvbk92ZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0
aW5hdGlvbk92ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVE
ZXN0aW5hdGlvbkluOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRp
b25JbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0
aW9uT3V0OgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25PdXQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkF0
b3A6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbkF0b3A7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVYT1I6Ci0gICAgICAgICAg
ICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVYT1I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVQbHVzRGFya2VyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRN
b2RlUGx1c0RhcmtlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0
ZUhpZ2hsaWdodDoKLSAgICAgICAgICAgIC8vIGN1cnJlbnRseSB1bnN1cHBvcnRlZAotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6Ci0gICAgICAg
ICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVzTGlnaHRlcjsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9k
ZUNsZWFyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZUNvcHk6CisgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvcHk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29t
cG9zaXRlU291cmNlT3ZlcjoKKyAgICAgICAgLy9rQ0dCbGVuZE1vZGVOb3JtYWwKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoKKyAgICAgICAgdGFyZ2V0ID0ga0NH
QmxlbmRNb2RlU291cmNlSW47CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlU291
cmNlT3V0OgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgdGFyZ2V0ID0g
a0NHQmxlbmRNb2RlU291cmNlQXRvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3Np
dGVEZXN0aW5hdGlvbk92ZXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0
aW9uT3ZlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbklu
OgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbkluOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAgICAgICB0YXJnZXQg
PSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk91dDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURl
c3RpbmF0aW9uQXRvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVYT1I6Cisg
ICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVhPUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDb21wb3NpdGVQbHVzRGFya2VyOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVz
RGFya2VyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKKyAg
ICAgICAgLy8gY3VycmVudGx5IHVuc3VwcG9ydGVkCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29tcG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNM
aWdodGVyOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2Rl
KHBsYXRmb3JtQ29udGV4dCgpLCB0YXJnZXQpOwogfQotLSAKMS42LjQuMTguZzA3YTRhCgo=
</data>
<flag name="review"
          id="18981"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34778</attachid>
            <date>2009-08-13 13:16:31 -0700</date>
            <delta_ts>2009-08-14 06:35:05 -0700</delta_ts>
            <desc>Style patch for GraphicsContextCG.cpp.</desc>
            <filename>0002-Style-update-for-GraphicsContextCG.cpp.patch</filename>
            <type>text/plain</type>
            <size>23484</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBiYmNkY2RhNmRmNzM2YmEyOGJiODAwYzVlZTU4YmM3YzJlMzg3NTY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE1OjU0OjM0IC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAyLzJdIFN0eWxlIHVwZGF0ZSBmb3IgR3JhcGhpY3NDb250ZXh0Q0cuY3BwLgoKLS0tCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzEgKysK
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIHwgIDM0
NiArKysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygr
KSwgMTczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q5OGE5NS4uNzNhY2YyYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNyBAQAogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisyMDA5LTA4LTEzICBNaWtlIEZl
bnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSBmaXhlcyBiYXNlZCBvbiBjcHBfc3R5
bGUucHkgYW5kIFdlYktpdCBTdHlsZSBndWlkZSBmb3IKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4MjY4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBP
dXRFbGxpcHNlSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRk
SW5uZXJSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVK
b2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBp
eGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKToKKwogICAgICAgICBVcGRhdGUgR3JhcGhpY3NDb250
ZXh0Q0cncyB2ZXJzaW9uIG9mIGRyYXdMaW5lIHRvIG1ha2UgdXNlIG9mIHRoZSBzaGFyZWQKICAg
ICAgICAgYWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzIGZ1bmN0aW9uIGFuZCBlbGltaW5hdGlv
biBvdmVybGFwcGluZyBjb2RlLgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDAxOWI1ZTkuLmNmOGI5MDMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBA
IC0yOCwxNCArMjgsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgi
CisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKwogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTE1NCwxOSArMTU1LDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBj
b25zdCBJbnRQb2ludCYgcG9pbnQyKQogCiAgICAgaW50IHBhdFdpZHRoID0gMDsKICAgICBzd2l0
Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICAgICAgY2FzZSBOb1N0cm9rZToKLSAgICAgICAgY2Fz
ZSBTb2xpZFN0cm9rZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERvdHRlZFN0
cm9rZToKLSAgICAgICAgICAgIHBhdFdpZHRoID0gKGludCl3aWR0aDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgICAgIHBhdFdpZHRoID0g
MyAqIChpbnQpd2lkdGg7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vU3Ryb2tlOgor
ICAgIGNhc2UgU29saWRTdHJva2U6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG90dGVkU3Ry
b2tlOgorICAgICAgICBwYXRXaWR0aCA9IChpbnQpd2lkdGg7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRGFzaGVkU3Ryb2tlOgorICAgICAgICBwYXRXaWR0aCA9IDMgKiAoaW50KXdpZHRoOwor
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwotICAgIAorCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKQogICAgICAg
ICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgZmFsc2UpOwogCkBAIC0xOTcs
NyArMTk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50
JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgIGlmIChwYXRXaWR0aCA9
PSAxKQogICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IDEuMGY7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9
PSAwOworICAgICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVu
dHMgJSAyKTsKICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCiAgICAgICAgICAgICAgICAgZXZl
bk51bWJlck9mU2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7CiAgICAgICAgICAgICBp
ZiAoZXZlbk51bWJlck9mU2VnbWVudHMpIHsKQEAgLTIxMSw3ICsyMTIsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9p
bnQmIHBvaW50MikKICAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0
aCAtIHJlbWFpbmRlcikvMjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBjb25zdCBDR0Zsb2F0IGRvdHRlZExpbmVbMl0gPSB7IHBhdFdpZHRoLCBwYXRXaWR0
aCB9OwogICAgICAgICBDR0NvbnRleHRTZXRMaW5lRGFzaChjb250ZXh0LCBwYXR0ZXJuT2Zmc2V0
LCBkb3R0ZWRMaW5lLCAyKTsKICAgICB9CkBAIC0yMjQsNyArMjI1LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50
JiBwb2ludDIpCiAKICAgICBpZiAocGF0V2lkdGgpCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY29udGV4dCk7Ci0gICAgICAgIAorCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKQog
ICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgdHJ1ZSk7CiB9CkBA
IC0yMzksNyArMjQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0
IEludFJlY3QmIHJlY3QpCiAKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAorCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgZmxvYXQgciA9
IChmbG9hdClyZWN0LndpZHRoKCkgLyAyOwpAQCAtMjUxLDI1ICsyNTIsMjUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmIHJlY3QpCiAKIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRB
bmdsZSwgaW50IGFuZ2xlU3BhbikKLXsgCit7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8
fCBzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlIHx8IHN0cm9rZVRoaWNrbmVzcygpIDw9IDAuMGYp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICBD
R0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFs
aWFzKGNvbnRleHQsIGZhbHNlKTsKLSAgICAKKwogICAgIGludCB4ID0gcmVjdC54KCk7CiAgICAg
aW50IHkgPSByZWN0LnkoKTsKICAgICBmbG9hdCB3ID0gKGZsb2F0KXJlY3Qud2lkdGgoKTsKICAg
ICBmbG9hdCBoID0gKGZsb2F0KXJlY3QuaGVpZ2h0KCk7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBoIC8gdzsKICAgICBmbG9hdCByZXZlcnNlU2NhbGVGYWN0b3IgPSB3IC8gaDsKLSAgICAKKwog
ICAgIGlmICh3ICE9IGgpCiAgICAgICAgIHNjYWxlKEZsb2F0U2l6ZSgxLCBzY2FsZUZhY3Rvcikp
OwotICAgIAorCiAgICAgZmxvYXQgaFJhZGl1cyA9IHcgLyAyOwogICAgIGZsb2F0IHZSYWRpdXMg
PSBoIC8gMjsKICAgICBmbG9hdCBmYSA9IHN0YXJ0QW5nbGU7CkBAIC0yODAsMjIgKzI4MSwyMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGlu
dCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogCiAgICAgaWYgKHcgIT0gaCkKICAgICAgICAgc2Nh
bGUoRmxvYXRTaXplKDEsIHJldmVyc2VTY2FsZUZhY3RvcikpOwotICAgIAotICAgIAorCiAgICAg
ZmxvYXQgd2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKICAgICBpbnQgcGF0V2lkdGggPSAwOwot
ICAgIAorCiAgICAgc3dpdGNoIChzdHJva2VTdHlsZSgpKSB7Ci0gICAgICAgIGNhc2UgRG90dGVk
U3Ryb2tlOgotICAgICAgICAgICAgcGF0V2lkdGggPSAoaW50KSh3aWR0aCAvIDIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICAgICAgcGF0
V2lkdGggPSAzICogKGludCkod2lkdGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6Cisg
ICAgICAgIHBhdFdpZHRoID0gKGludCkod2lkdGggLyAyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBEYXNoZWRTdHJva2U6CisgICAgICAgIHBhdFdpZHRoID0gMyAqIChpbnQpKHdpZHRoIC8g
Mik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChwYXRXaWR0aCkgewogICAgICAgICAvLyBFeGFtcGxlOiA4MCBwaXhl
bHMgd2l0aCBhIHdpZHRoIG9mIDMwIHBpeGVscy4KICAgICAgICAgLy8gUmVtYWluZGVyIGlzIDIw
LiAgVGhlIG1heGltdW0gcGl4ZWxzIG9mIGxpbmUgd2UgY291bGQgcGFpbnQKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgICAgICAgICAgZGlzdGFuY2UgPSBz
dGF0aWNfY2FzdDxpbnQ+KChwaUZsb2F0ICogaFJhZGl1cykgLyAyLjBmKTsKICAgICAgICAgZWxz
ZSAvLyBXZSBhcmUgZWxsaXB0aWNhbCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0
YW5jZQogICAgICAgICAgICAgZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChwaUZsb2F0ICog
c3FydGYoKGhSYWRpdXMgKiBoUmFkaXVzICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wZikpIC8g
Mi4wZik7Ci0gICAgICAgIAorCiAgICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBh
dFdpZHRoOwogICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKICAg
ICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgICAgICBpZiAocGF0V2lkdGggPT0g
MSkKICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAxLjBmOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDIgPT0g
MDsKKyAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRz
ICUgMik7CiAgICAgICAgICAgICBpZiAocmVtYWluZGVyKQogICAgICAgICAgICAgICAgIGV2ZW5O
dW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwogICAgICAgICAgICAgaWYg
KGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7CkBAIC0zMjksMTMgKzMyOSwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xl
LCBpbnQgYW5nbGVTcAogICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdp
ZHRoIC0gcmVtYWluZGVyKSAvIDIuMGY7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAK
KwogICAgICAgICBjb25zdCBDR0Zsb2F0IGRvdHRlZExpbmVbMl0gPSB7IHBhdFdpZHRoLCBwYXRX
aWR0aCB9OwogICAgICAgICBDR0NvbnRleHRTZXRMaW5lRGFzaChjb250ZXh0LCBwYXR0ZXJuT2Zm
c2V0LCBkb3R0ZWRMaW5lLCAyKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNv
bnRleHQpOwotICAgIAorCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0K
IApAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9s
eWdvbihzaXplX3QgbnBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzCiAKICAgICBpZiAo
YW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAgIENHQ29udGV4dFNldFNo
b3VsZEFudGlhbGlhcyhjb250ZXh0LCBhbnRpYWxpYXNlZCk7Ci0gICAgCisKICAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0TW92ZVRvUG9pbnQoY29udGV4dCwg
cG9pbnRzWzBdLngoKSwgcG9pbnRzWzBdLnkoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkg
PCBucG9pbnRzOyBpKyspCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2lu
dHMKICAgICBDR0NvbnRleHRDbG9zZVBhdGgoY29udGV4dCk7CiAKICAgICBkcmF3UGF0aCgpOwot
ICAgIAorCiAgICAgaWYgKGFudGlhbGlhc2VkICE9IHNob3VsZEFudGlhbGlhcygpKQogICAgICAg
ICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc2hvdWxkQW50aWFsaWFzKCkp
OwogfQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4
UG9seWdvbihzaXplX3QgbnBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsKICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgCisKICAgICBDR1BhdHRlcm5SZWYg
cGxhdGZvcm1QYXR0ZXJuID0gbV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCktPmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihnZXRDVE0oKSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4p
CiAgICAgICAgIHJldHVybjsKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdGgoKQogICAgICAgICBzdHJva2VQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoc3RhdGUuZmlsbENvbG9yU3BhY2UgPT0gUGF0dGVybkNvbG9y
U3BhY2UpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICBpZiAoc3RhdGUuc3Ryb2tl
Q29sb3JTcGFjZSA9PSBQYXR0ZXJuQ29sb3JTcGFjZSkKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBD
R1JlY3QgcmVjdHNbMl0gPSB7IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChwbGF0Zm9ybUNv
bnRleHQoKSksIHJlY3QgfTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZvcm1Db250ZXh0
KCkpOwogICAgIENHQ29udGV4dEFkZFJlY3RzKHBsYXRmb3JtQ29udGV4dCgpLCByZWN0cywgMik7
CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNl
SW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIENHQ29udGV4dEJlZ2luUGF0aChw
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0QWRkUmVjdChwbGF0Zm9ybUNvbnRleHQo
KSwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAg
Q0dDb250ZXh0QWRkRWxsaXBzZUluUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CkBAIC02
MTUsMTMgKzYxNSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVj
dENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcwogCiAgICAgY2xpcChyZWN0
KTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgIAor
CiAgICAgLy8gQWRkIG91dGVyIGVsbGlwc2UKICAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0
KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpKTsKICAgICAvLyBBZGQgaW5uZXIgZWxsaXBzZS4KICAgICBDR0NvbnRleHRB
ZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCkgKyB0aGlja25lc3Ms
IHJlY3QueSgpICsgdGhpY2tuZXNzLAogICAgICAgICByZWN0LndpZHRoKCkgLSAodGhpY2tuZXNz
ICogMiksIHJlY3QuaGVpZ2h0KCkgLSAodGhpY2tuZXNzICogMikpKTsKLSAgICAKKwogICAgIENH
Q29udGV4dEVPQ2xpcChjb250ZXh0KTsKIH0KIApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEltYWdlQnVmZmVyCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRT
Y2FsZUNUTShwbGF0Zm9ybUNvbnRleHQoKSwgMSwgLTEpOwogICAgIENHQ29udGV4dENsaXBUb01h
c2socGxhdGZvcm1Db250ZXh0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHJlY3Quc2l6ZSgp
KSwgaW1hZ2VCdWZmZXItPmltYWdlKCktPmdldENHSW1hZ2VSZWYoKSk7CkBAIC03MTAsNyArNzEw
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEludFNp
emUmIHNpemUsIGludCBibHVyLCBjb25zdCBDb2wKICAgICAgICAgQ0dDb2xvclJlZiBjb2xvckNH
ID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dTaXpl
TWFrZSh3aWR0aCwgaGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsdXJSYWRpdXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1clJh
ZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yQ0cpOwogICAg
ICAgICBDR0NvbG9yUmVsZWFzZShjb2xvckNHKTsKICAgICB9CkBAIC03NzUsMTUgKzc3NSwxNSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGNhcCkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChjYXApIHsK
LSAgICAgICAgY2FzZSBCdXR0Q2FwOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChw
bGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUNhcEJ1dHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgUm91bmRDYXA6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBs
YXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lQ2FwUm91bmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU3F1YXJlQ2FwOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChw
bGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUNhcFNxdWFyZSk7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBjYXNlIEJ1dHRDYXA6CisgICAgICAgIENHQ29udGV4dFNldExpbmVDYXAocGxhdGZvcm1D
b250ZXh0KCksIGtDR0xpbmVDYXBCdXR0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3Vu
ZENhcDoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChwbGF0Zm9ybUNvbnRleHQoKSwga0NH
TGluZUNhcFJvdW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTcXVhcmVDYXA6CisgICAg
ICAgIENHQ29udGV4dFNldExpbmVDYXAocGxhdGZvcm1Db250ZXh0KCksIGtDR0xpbmVDYXBTcXVh
cmUpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTc5NywxNSArNzk3LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBqb2luKQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKGpvaW4pIHsK
LSAgICAgICAgY2FzZSBNaXRlckpvaW46Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9p
bihwbGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUpvaW5NaXRlcik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBSb3VuZEpvaW46Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5l
Sm9pbihwbGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUpvaW5Sb3VuZCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBCZXZlbEpvaW46Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRM
aW5lSm9pbihwbGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUpvaW5CZXZlbCk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1pdGVySm9pbjoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUpv
aW4ocGxhdGZvcm1Db250ZXh0KCksIGtDR0xpbmVKb2luTWl0ZXIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFJvdW5kSm9pbjoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUpvaW4ocGxhdGZv
cm1Db250ZXh0KCksIGtDR0xpbmVKb2luUm91bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEJldmVsSm9pbjoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUpvaW4ocGxhdGZvcm1Db250ZXh0
KCksIGtDR0xpbmVKb2luQmV2ZWwpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTgz
NCw3ICs4MzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBw
YXRoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCisKICAgICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IENHQ29udGV4dEFkZFJlY3QocGxhdGZvcm1Db250ZXh0KCksIENHQ29udGV4dEdldENsaXBCb3Vu
ZGluZ0JveChwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIENHQ29udGV4dEFkZFBhdGgocGxhdGZv
cm1Db250ZXh0KCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOwpAQCAtODg1LDkgKzg4NSw5IEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4IEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QKIAogRmxv
YXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7Ci0gICAgLy8gSXQgaXMgbm90IGVub3VnaCBqdXN0IHRvIHJvdW5kIHRvIHBp
eGVscyBpbiBkZXZpY2Ugc3BhY2UuIFRoZSByb3RhdGlvbiBwYXJ0IG9mIHRoZSAKKyAgICAvLyBJ
dCBpcyBub3QgZW5vdWdoIGp1c3QgdG8gcm91bmQgdG8gcGl4ZWxzIGluIGRldmljZSBzcGFjZS4g
VGhlIHJvdGF0aW9uIHBhcnQgb2YgdGhlCiAgICAgLy8gYWZmaW5lIHRyYW5zZm9ybSBtYXRyaXgg
dG8gZGV2aWNlIHNwYWNlIGNhbiBtZXNzIHdpdGggdGhpcyBjb252ZXJzaW9uIGlmIHdlIGhhdmUg
YQotICAgIC8vIHJvdGF0aW5nIGltYWdlIGxpa2UgdGhlIGhhbmRzIG9mIHRoZSB3b3JsZCBjbG9j
ayB3aWRnZXQuIFdlIGp1c3QgbmVlZCB0aGUgc2NhbGUsIHNvIAorICAgIC8vIHJvdGF0aW5nIGlt
YWdlIGxpa2UgdGhlIGhhbmRzIG9mIHRoZSB3b3JsZCBjbG9jayB3aWRnZXQuIFdlIGp1c3QgbmVl
ZCB0aGUgc2NhbGUsIHNvCiAgICAgLy8gd2UgZ2V0IHRoZSBhZmZpbmUgdHJhbnNmb3JtIG1hdHJp
eCBhbmQgZXh0cmFjdCB0aGUgc2NhbGUuCiAKICAgICBpZiAobV9kYXRhLT5tX3VzZXJUb0Rldmlj
ZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5KQpAQCAtOTEwLDExICs5MTAsMTEgQEAgRmxvYXRS
ZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgZGV2aWNlT3JpZ2luLnkgPSByb3VuZGYoZGV2aWNlT3JpZ2luLnkpOwogICAg
IGRldmljZUxvd2VyUmlnaHQueCA9IHJvdW5kZihkZXZpY2VMb3dlclJpZ2h0LngpOwogICAgIGRl
dmljZUxvd2VyUmlnaHQueSA9IHJvdW5kZihkZXZpY2VMb3dlclJpZ2h0LnkpOwotICAgIAorCiAg
ICAgLy8gRG9uJ3QgbGV0IHRoZSBoZWlnaHQgb3Igd2lkdGggcm91bmQgdG8gMCB1bmxlc3MgZWl0
aGVyIHdhcyBvcmlnaW5hbGx5IDAKLSAgICBpZiAoZGV2aWNlT3JpZ2luLnkgPT0gZGV2aWNlTG93
ZXJSaWdodC55ICYmIHJlY3QuaGVpZ2h0KCkgIT0gMCkKKyAgICBpZiAoZGV2aWNlT3JpZ2luLnkg
PT0gZGV2aWNlTG93ZXJSaWdodC55ICYmIHJlY3QuaGVpZ2h0KCkpCiAgICAgICAgIGRldmljZUxv
d2VyUmlnaHQueSArPSAxOwotICAgIGlmIChkZXZpY2VPcmlnaW4ueCA9PSBkZXZpY2VMb3dlclJp
Z2h0LnggJiYgcmVjdC53aWR0aCgpICE9IDApCisgICAgaWYgKGRldmljZU9yaWdpbi54ID09IGRl
dmljZUxvd2VyUmlnaHQueCAmJiByZWN0LndpZHRoKCkpCiAgICAgICAgIGRldmljZUxvd2VyUmln
aHQueCArPSAxOwogCiAgICAgRmxvYXRQb2ludCByb3VuZGVkT3JpZ2luID0gRmxvYXRQb2ludChk
ZXZpY2VPcmlnaW4ueCAvIGRldmljZVNjYWxlWCwgZGV2aWNlT3JpZ2luLnkgLyBkZXZpY2VTY2Fs
ZVkpOwpAQCAtOTYwLDEzICs5NjAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5l
Rm9yVGV4dChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGludCB3aWR0aCwgYm9vbCBwcmkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmIChmaWxsQ29sb3IoKSAh
PSBzdHJva2VDb2xvcigpKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRleHQo
KSwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0
KCksIENHUmVjdE1ha2UoeCwgeSwgbGluZUxlbmd0aCwgdGhpY2tuZXNzKSk7CiAgICAgaWYgKGZp
bGxDb2xvcigpICE9IHN0cm9rZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRm
b3JtQ29udGV4dCgpLCBmaWxsQ29sb3IoKSk7Ci0gICAgICAgIAorCiAgICAgaWYgKHJlc3RvcmVB
bnRpYWxpYXNNb2RlKQogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZv
cm1Db250ZXh0KCksIHRydWUpOwogfQpAQCAtOTc1LDExICs5NzUsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYgbGluaywgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogICAgIENGVVJMUmVmIHVybFJlZiA9IGxpbmsuY3JlYXRlQ0ZVUkwoKTsK
ICAgICBpZiAodXJsUmVmKSB7CiAgICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZv
cm1Db250ZXh0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEdldCB0aGUgYm91bmRpbmcgYm94
IHRvIGhhbmRsZSBjbGlwcGluZy4KICAgICAgICAgQ0dSZWN0IGJveCA9IENHQ29udGV4dEdldENs
aXBCb3VuZGluZ0JveChjb250ZXh0KTsKIApAQCAtOTk4LDI4ICs5OTgsMjggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1
YWxpdHkgbW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICBDR0ludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkgPSBrQ0dJbnRl
cnBvbGF0aW9uRGVmYXVsdDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2FzZSBJbnRl
cnBvbGF0aW9uRGVmYXVsdDoKLSAgICAgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9u
RGVmYXVsdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludGVycG9sYXRpb25O
b25lOgotICAgICAgICAgICAgcXVhbGl0eSA9IGtDR0ludGVycG9sYXRpb25Ob25lOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50ZXJwb2xhdGlvbkxvdzoKLSAgICAgICAgICAg
IHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uTG93OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIEludGVycG9sYXRpb25IaWdoIGlmIGtDR0ludGVycG9s
YXRpb25NZWRpdW0gaXMgbm90IGF2YWlsYWJsZQotICAgICAgICBjYXNlIEludGVycG9sYXRpb25N
ZWRpdW06CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uRGVmYXVsdDoKKyAgICAgICAgcXVhbGl0eSA9
IGtDR0ludGVycG9sYXRpb25EZWZhdWx0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVy
cG9sYXRpb25Ob25lOgorICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbk5vbmU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvbkxvdzoKKyAgICAgICAgcXVhbGl0
eSA9IGtDR0ludGVycG9sYXRpb25Mb3c7CisgICAgICAgIGJyZWFrOworCisgICAgLy8gRmFsbCB0
aHJvdWdoIHRvIEludGVycG9sYXRpb25IaWdoIGlmIGtDR0ludGVycG9sYXRpb25NZWRpdW0gaXMg
bm90IGF2YWlsYWJsZQorICAgIGNhc2UgSW50ZXJwb2xhdGlvbk1lZGl1bToKICNpZiBIQVZFKENH
X0lOVEVSUE9MQVRJT05fTUVESVVNKQotICAgICAgICAgICAgcXVhbGl0eSA9IGtDR0ludGVycG9s
YXRpb25NZWRpdW07Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgcXVhbGl0eSA9IGtDR0lu
dGVycG9sYXRpb25NZWRpdW07CisgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAgICAgIGNhc2Ug
SW50ZXJwb2xhdGlvbkhpZ2g6Ci0gICAgICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlv
bkhpZ2g7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVycG9sYXRpb25IaWdoOgor
ICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbkhpZ2g7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRl
eHQoKSwgcXVhbGl0eSk7CiB9CkBAIC0xMDMxLDE4ICsxMDMxLDE4IEBAIEludGVycG9sYXRpb25R
dWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0
CiAKICAgICBDR0ludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkgPSBDR0NvbnRleHRHZXRJbnRl
cnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgc3dpdGNoIChxdWFsaXR5
KSB7Ci0gICAgICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbkRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7Ci0gICAgICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlv
bk5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk5vbmU7Ci0gICAgICAgIGNh
c2Uga0NHSW50ZXJwb2xhdGlvbkxvdzoKLSAgICAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9u
TG93OworICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbkRlZmF1bHQ6CisgICAgICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uRGVmYXVsdDsKKyAgICBjYXNlIGtDR0ludGVycG9sYXRpb25Ob25lOgorICAg
ICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk5vbmU7CisgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9u
TG93OgorICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsKICNpZiBIQVZFKENHX0lOVEVS
UE9MQVRJT05fTUVESVVNKQotICAgICAgICBjYXNlIGtDR0ludGVycG9sYXRpb25NZWRpdW06Ci0g
ICAgICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk1lZGl1bTsKKyAgICBjYXNlIGtDR0ludGVy
cG9sYXRpb25NZWRpdW06CisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTWVkaXVtOwogI2Vu
ZGlmCi0gICAgICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbkhpZ2g6Ci0gICAgICAgICAgICByZXR1
cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CisgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDoKKyAg
ICAgICAgcmV0dXJuIEludGVycG9sYXRpb25IaWdoOwogICAgIH0KICAgICByZXR1cm4gSW50ZXJw
b2xhdGlvbkRlZmF1bHQ7CiB9CkBAIC0xMDU1LDMyICsxMDU1LDMyIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShpbnQgbW9kZSkKICAgICAvLyBXb3cs
IHdpc2ggQ0cgaGFkIHVzZWQgYml0cyBoZXJlLgogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgICAgIGNhc2UgY1Rl
eHRJbnZpc2libGU6IC8vIEludmlzaWJsZQotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERy
YXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRJbnZpc2libGUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgY1RleHRGaWxsOiAvLyBGaWxsCi0gICAgICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgY1RleHRTdHJva2U6IC8vIFN0cm9rZQotICAgICAgICAgICAgQ0dD
b250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2UpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzogLy8gRmlsbCB8IFN0cm9rZQotICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tl
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGNUZXh0Q2xpcDogLy8gQ2xpcAot
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRD
bGlwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDU6IC8vIEZpbGwgfCBDbGlw
Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4
dEZpbGxDbGlwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDY6IC8vIFN0cm9r
ZSB8IENsaXAKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0
LCBrQ0dUZXh0U3Ryb2tlQ2xpcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA3
OiAvLyBGaWxsIHwgU3Ryb2tlIHwgQ2xpcAotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERy
YXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tlQ2xpcCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgY1Rl
eHRJbnZpc2libGU6IC8vIEludmlzaWJsZQorICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwga0NHVGV4dEludmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgY1RleHRGaWxsOiAvLyBGaWxsCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9k
ZShjb250ZXh0LCBrQ0dUZXh0RmlsbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgY1RleHRT
dHJva2U6IC8vIFN0cm9rZQorICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29u
dGV4dCwga0NHVGV4dFN0cm9rZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzogLy8gRmls
bCB8IFN0cm9rZQorICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
a0NHVGV4dEZpbGxTdHJva2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGNUZXh0Q2xpcDog
Ly8gQ2xpcAorICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NH
VGV4dENsaXApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6IC8vIEZpbGwgfCBDbGlwCisg
ICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbENs
aXApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDY6IC8vIFN0cm9rZSB8IENsaXAKKyAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2VDbGlw
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA3OiAvLyBGaWxsIHwgU3Ryb2tlIHwgQ2xpcAor
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxT
dHJva2VDbGlwKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCkBAIC0xMTE0LDU0ICsxMTE0LDU0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKIAogI2lmbmRlZiBCVUlM
RElOR19PTl9USUdFUiAvLyBUaWdlcidzIHNldENvbXBvc2l0ZU9wZXJhdGlvbigpIGlzIGRlZmlu
ZWQgaW4gR3JhcGhpY3NDb250ZXh0TWFjLm1tLgogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlKQoteyAgIAorewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQmxlbmRNb2Rl
IHRhcmdldCA9IGtDR0JsZW5kTW9kZU5vcm1hbDsgICAKKyAgICBDR0JsZW5kTW9kZSB0YXJnZXQg
PSBrQ0dCbGVuZE1vZGVOb3JtYWw7CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgICAgIGNhc2Ug
Q29tcG9zaXRlQ2xlYXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVDbGVhcjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZUNvcHk6Ci0gICAgICAg
ICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVDb3B5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3ZlcjoKLSAgICAgICAgICAgIC8va0NHQmxlbmRNb2Rl
Tm9ybWFsCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJ
bjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVNvdXJjZUluOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3V0OgotICAgICAgICAgICAg
dGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlT3V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ29tcG9zaXRlU291cmNlQXRvcDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0Js
ZW5kTW9kZVNvdXJjZUF0b3A7IAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25PdmVyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2Rl
RGVzdGluYXRpb25PdmVyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9z
aXRlRGVzdGluYXRpb25JbjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3Rp
bmF0aW9uSW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0
aW5hdGlvbk91dDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9u
T3V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRp
b25BdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25BdG9w
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgotICAgICAg
ICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlWE9SOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ29tcG9zaXRlUGx1c0RhcmtlcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0Js
ZW5kTW9kZVBsdXNEYXJrZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21w
b3NpdGVIaWdobGlnaHQ6Ci0gICAgICAgICAgICAvLyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVBsdXNMaWdodGVyOgotICAg
ICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlUGx1c0xpZ2h0ZXI7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZUNsZWFyOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVu
ZE1vZGVDbGVhcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVDb3B5OgorICAg
ICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVDb3B5OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgIC8va0NHQmxlbmRNb2RlTm9ybWFsCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46CisgICAgICAgIHRhcmdldCA9
IGtDR0JsZW5kTW9kZVNvdXJjZUluOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0
ZVNvdXJjZU91dDoKKyAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlT3V0OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6CisgICAgICAgIHRhcmdl
dCA9IGtDR0JsZW5kTW9kZVNvdXJjZUF0b3A7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25PdmVyOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0
aW5hdGlvbk92ZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRp
b25JbjoKKyAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25JbjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKKyAgICAgICAgdGFy
Z2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25PdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1v
ZGVEZXN0aW5hdGlvbkF0b3A7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlWE9S
OgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVYT1I7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ29tcG9zaXRlUGx1c0RhcmtlcjoKKyAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2Rl
UGx1c0RhcmtlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVIaWdobGlnaHQ6
CisgICAgICAgIC8vIGN1cnJlbnRseSB1bnN1cHBvcnRlZAorICAgICAgICBicmVhazsKKyAgICBj
YXNlIENvbXBvc2l0ZVBsdXNMaWdodGVyOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQ
bHVzTGlnaHRlcjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIENHQ29udGV4dFNldEJsZW5k
TW9kZShwbGF0Zm9ybUNvbnRleHQoKSwgdGFyZ2V0KTsKIH0KLS0gCjEuNi40LjE4LmcwN2E0YQoK
</data>
<flag name="review"
          id="18982"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34834</attachid>
            <date>2009-08-14 06:00:51 -0700</date>
            <delta_ts>2009-08-17 07:02:03 -0700</delta_ts>
            <desc>Fix Changelog in patch #34776</desc>
            <filename>0001-Style-changes-for-GraphicsContext.cpp-h-GraphicsCont.patch</filename>
            <type>text/plain</type>
            <size>16466</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA2NGU5NDhmOGZhNDI1NzhjMTFiMmQ3YzQwODBkMDRjMTlkYjRhZmQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE2OjAwOjE3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAxLzNdIFN0eWxlIGNoYW5nZXMgZm9yIEdyYXBoaWNzQ29udGV4dC5jcHAvaCwgR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAuCgotLS0KIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgICB8ICAgMTgg
KystLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICAg
fCAgIDMyICsrKy0tLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cCAgICAgICAgfCAgMTQwICsrKysrKysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0KIDUgZmlsZXMgY2hhbmdl
ZCwgMTIwIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA5YzRmNi4uOTc1NTkzYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAwOS0wOC0xMyAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRvbkB0b3Jj
aG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3R5bGUgZml4ZXMgYmFzZWQgb24gY3BwX3N0eWxlLnB5IGFuZCBXZWJLaXQgU3R5bGUg
Z3VpZGUgZm9yCisgICAgICAgIEdyYXBoaWNzQ29udGV4dC5jcHAvaCwgR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY4CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVz
dG9yZSk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKKyAgICAgICAgKEdy
YXBoaWNzQ29udGV4dDo6aW5pdEZvY3VzUmluZyk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQ6
OmZvY3VzUmluZ0JvdW5kaW5nUmVjdCk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJDb3JlOjp0b0NhaXJvT3BlcmF0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cDoKKwogMjAwOS0wOC0xMyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmVydCByNDcxODUsIHRoZSBmaXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgxODU+LCBhcyBpdCBicm9rZSB0aGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAxMzdjNzQyLi5hMzE0MzY2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yNyw5
ICsyNyw5IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJCaWRp
UmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIkZvbnQuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtODksNyArODksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2F2ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29tbW9uLT5zdGFjay5hcHBl
bmQobV9jb21tb24tPnN0YXRlKTsKLSAgICAKKwogICAgIHNhdmVQbGF0Zm9ybVN0YXRlKCk7CiB9
CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAg
ICAgfQogICAgIG1fY29tbW9uLT5zdGF0ZSA9IG1fY29tbW9uLT5zdGFjay5sYXN0KCk7CiAgICAg
bV9jb21tb24tPnN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAKKwogICAgIHJlc3RvcmVQbGF0Zm9y
bVN0YXRlKCk7CiB9CiAKQEAgLTMwNSw3ICszMDUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6
cGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCi17ICAgICAgICAKK3sKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIHAsIEludFJlY3QoMCwgMCwg
LTEsIC0xKSwgb3ApOwogfQogCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
SW50UG8KIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBmb250LmRyYXdUZXh0KHRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0K
ICNlbmRpZgpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojppbml0Rm9j
dXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAgICAgY2xlYXJGb2N1c1JpbmcoKTsKLSAgICAKKwogICAgIG1f
Y29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRoID0gd2lkdGg7CiAgICAgbV9jb21tb24tPm1fZm9jdXNS
aW5nT2Zmc2V0ID0gb2Zmc2V0OwogfQpAQCAtMzk2LDEyICszOTYsMTIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsZWFyRm9jdXNSaW5nKCkKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpmb2N1
c1JpbmdCb3VuZGluZ1JlY3QoKQogewogICAgIEludFJlY3QgcmVzdWx0ID0gSW50UmVjdCgwLCAw
LCAwLCAwKTsKLSAgICAKKwogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1
c1JpbmdSZWN0cygpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCiAgICAgICAgIHJlc3Vs
dC51bml0ZShyZWN0c1tpXSk7Ci0gICAgICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2Uq
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0CiAgICAgZmxvYXQgdHNo
ID0gc3JjLmhlaWdodCgpOwogICAgIGZsb2F0IHR3ID0gZGVzdC53aWR0aCgpOwogICAgIGZsb2F0
IHRoID0gZGVzdC5oZWlnaHQoKTsKLSAgICAgICAgCisKICAgICBpZiAodHN3ID09IC0xKQogICAg
ICAgICB0c3cgPSBpbWFnZS0+d2lkdGgoKTsKICAgICBpZiAodHNoID09IC0xKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZWM0YjU2YS4uZTBkOTI5
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00
OSw4ICs0OSw4IEBAIHR5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyB3eEdDREM7CiBjbGFzcyB3eFdpbmRvd0RDOwogCi0vLyB3eEdyYXBoaWNzQ29udGV4dCBh
bGxvd3MgdXMgdG8gc3VwcG9ydCBQYXRoLCBldGMuIAotLy8gYnV0IG9uIHNvbWUgcGxhdGZvcm1z
LCBlLmcuIExpbnV4LCBpdCByZXF1aXJlcyBmYWlybHkgCisvLyB3eEdyYXBoaWNzQ29udGV4dCBh
bGxvd3MgdXMgdG8gc3VwcG9ydCBQYXRoLCBldGMuCisvLyBidXQgb24gc29tZSBwbGF0Zm9ybXMs
IGUuZy4gTGludXgsIGl0IHJlcXVpcmVzIGZhaXJseQogLy8gbmV3IHNvZnR3YXJlLgogI2lmIFVT
RShXWEdDKQogLy8gT24gT1MgWCwgd3hHQ0RDIGlzIGp1c3QgYSB0eXBlZGVmIGZvciB3eERDLCBz
byB1c2Ugd3hEQyBleHBsaWNpdGx5IHRvIG1ha2UKQEAgLTEyMiw3ICsxMjIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY29uc3QgaW50IGNUZXh0RmlsbCA9IDE7CiAgICAgY29uc3QgaW50
IGNUZXh0U3Ryb2tlID0gMjsKICAgICBjb25zdCBpbnQgY1RleHRDbGlwID0gNDsKLSAgICAKKwog
ICAgIGVudW0gU3Ryb2tlU3R5bGUgewogICAgICAgICBOb1N0cm9rZSwKICAgICAgICAgU29saWRT
dHJva2UsCkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IERhc2hlZFN0cm9rZQogICAgIH07CiAKLS8vIEZJWE1FOiBUaGlzIGlzIGEgcGxhY2UtaG9sZGVy
IHVudGlsIHdlIGRlY2lkZSB0byBhZGQKLS8vIHJlYWwgY29sb3Igc3BhY2Ugc3VwcG9ydCB0byBX
ZWJDb3JlLiAgQXQgdGhhdCB0aW1lLCBDb2xvclNwYWNlIHdpbGwgYmUgYQotLy8gY2xhc3MgYW5k
IGluc3RhbmNlcyB3aWxsIGJlIGhlbGQgIG9mZiBvZiBDb2xvcnMuICAgVGhlcmUgd2lsbCBiZQot
Ly8gc3BlY2lhbCBzaW5nbGV0b24gR3JhZGllbnQgYW5kIFBhdHRlcm4gY29sb3Igc3BhY2VzIHRv
IG1hcmsgd2hlbgotLy8gYSBmaWxsIG9yIHN0cm9rZSBpcyB1c2luZyBhIGdyYWRpZW50IG9yIHBh
dHRlcm4gaW5zdGVhZCBvZiBhIHNvbGlkIGNvbG9yLgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTU4CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBwbGFjZS1o
b2xkZXIgdW50aWwgd2UgZGVjaWRlIHRvIGFkZAorICAgIC8vIHJlYWwgY29sb3Igc3BhY2Ugc3Vw
cG9ydCB0byBXZWJDb3JlLiAgQXQgdGhhdCB0aW1lLCBDb2xvclNwYWNlIHdpbGwgYmUgYQorICAg
IC8vIGNsYXNzIGFuZCBpbnN0YW5jZXMgd2lsbCBiZSBoZWxkICBvZmYgb2YgQ29sb3JzLiAgIFRo
ZXJlIHdpbGwgYmUKKyAgICAvLyBzcGVjaWFsIHNpbmdsZXRvbiBHcmFkaWVudCBhbmQgUGF0dGVy
biBjb2xvciBzcGFjZXMgdG8gbWFyayB3aGVuCisgICAgLy8gYSBmaWxsIG9yIHN0cm9rZSBpcyB1
c2luZyBhIGdyYWRpZW50IG9yIHBhdHRlcm4gaW5zdGVhZCBvZiBhIHNvbGlkIGNvbG9yLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1OAogICAgIGVu
dW0gQ29sb3JTcGFjZSB7CiAgICAgICAgIFNvbGlkQ29sb3JTcGFjZSwKICAgICAgICAgUGF0dGVy
bkNvbG9yU3BhY2UsCkBAIC0xNTQsMTEgKzE1NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqKTsKICAgICAgICAgfkdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgIAorCiAjaWYgIVBMQVRG
T1JNKFdJTkNFKSB8fCBQTEFURk9STShRVCkKICAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAg
IGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCk7CiAgICAgICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3Q7
CkBAIC0yMzQsNyArMjM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgCisgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdl
OjpUaWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogCkBA
IC0yNTgsMTMgKzI1OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJh
d0hpZ2hsaWdodEZvclRleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBJbnRQ
b2ludCYsIGludCBoLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBpbnQgZnJvbSA9IDAs
IGludCB0byA9IC0xKTsKIAogICAgICAgICBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgCisKICAgICAgICAgdm9pZCBkcmF3TGluZUZvclRl
eHQoY29uc3QgSW50UG9pbnQmLCBpbnQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOwogICAgICAgICB2
b2lkIGRyYXdMaW5lRm9yTWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoY29uc3QgSW50UG9pbnQmLCBp
bnQgd2lkdGgsIGJvb2wgZ3JhbW1hcik7Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgcGFpbnRp
bmdEaXNhYmxlZCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBhaW50aW5nRGlzYWJsZWQoYm9v
bCk7Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgdXBkYXRpbmdDb250cm9sVGludHMoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRVcGRhdGluZ0NvbnRyb2xUaW50cyhib29sKTsKIApAQCAtMzAz
LDcgKzMwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByb3RhdGUoZmxv
YXQgYW5nbGVJblJhZGlhbnMpOwogICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9h
dCB5KTsKICAgICAgICAgSW50UG9pbnQgb3JpZ2luKCk7Ci0gICAgICAgIAorCiAgICAgICAgIHZv
aWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAg
IHZvaWQgY29uY2F0Q1RNKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCmluZGV4IGE5ZDY4NzIuLmRlOGFmYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpZiBQTEFURk9STShDQUlSTykKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAjaW5jbHVkZSAiQ2Fpcm9QYXRoLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBhdGguaCIK
ICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNs
dWRlIDxtYXRoLmg+CkBAIC01Myw4ICs1Myw4IEBACiAjZWxpZiBQTEFURk9STShXSU4pCiAjaW5j
bHVkZSA8Y2Fpcm8td2luMzIuaD4KICNlbmRpZgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBy
aXZhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKIAogI2lmbmRlZiBNX1BJCiAj
ZGVmaW5lIE1fUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NgpAQCAtMjA3LDIwICsyMDcsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNv
bnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQogICAgICAg
ICAgICAgcGF0dGVybk9mZnNldCA9IDEuMDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBi
b29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gbnVtU2VnbWVudHMlMiA9PSAwOworICAgICAgICAg
ICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKICAgICAg
ICAgICAgIGlmIChyZW1haW5kZXIpCiAgICAgICAgICAgICAgICAgZXZlbk51bWJlck9mU2VnbWVu
dHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7CiAgICAgICAgICAgICBpZiAoZXZlbk51bWJlck9m
U2VnbWVudHMpIHsKICAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSByZW1haW5kZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyLzI7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9m
ZnNldCA9IHBhdFdpZHRoLzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgh
ZXZlbk51bWJlck9mU2VnbWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNl
dCArPSByZW1haW5kZXIgLyAyOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gcGF0V2lkdGggLyAyOworICAgICAgICAgICAgfSBlbHNl
IGlmICghZXZlbk51bWJlck9mU2VnbWVudHMpIHsKICAgICAgICAgICAgICAgICBpZiAocmVtYWlu
ZGVyKQotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVt
YWluZGVyKS8yOworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdpZHRo
IC0gcmVtYWluZGVyKSAvIDI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjg2LDcg
KzI4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYg
cmVjdCwgaW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAKICAgICBpZiAodyAhPSBoKQogICAg
ICAgICBjYWlyb19zY2FsZShjciwgMS4sIHNjYWxlRmFjdG9yKTsKLSAgICAKKwogICAgIGNhaXJv
X2FyY19uZWdhdGl2ZShjciwgeCArIGhSYWRpdXMsICh5ICsgdlJhZGl1cykgKiByZXZlcnNlU2Nh
bGVGYWN0b3IsIGhSYWRpdXMsIC1mYSAqIE1fUEkvMTgwLCAtZmFsZW4gKiBNX1BJLzE4MCk7CiAK
ICAgICBpZiAodyAhPSBoKQpAQCAtMjk0LDE2ICsyOTIsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFu
Z2xlU3AKIAogICAgIGZsb2F0IHdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CiAgICAgaW50IHBh
dFdpZHRoID0gMDsKLSAgICAKKwogICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUoKSkgewotICAgICAg
ICBjYXNlIERvdHRlZFN0cm9rZToKLSAgICAgICAgICAgIHBhdFdpZHRoID0gc3RhdGljX2Nhc3Q8
aW50Pih3aWR0aCAvIDIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGVk
U3Ryb2tlOgotICAgICAgICAgICAgcGF0V2lkdGggPSAzICogc3RhdGljX2Nhc3Q8aW50Pih3aWR0
aCAvIDIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIERvdHRlZFN0cm9rZToKKyAgICAgICAgcGF0V2lkdGggPSBzdGF0
aWNfY2FzdDxpbnQ+KHdpZHRoIC8gMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGFzaGVk
U3Ryb2tlOgorICAgICAgICBwYXRXaWR0aCA9IDMgKiBzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoIC8g
Mik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIHNldENvbG9yKGNyLCBzdHJva2VDb2xvcigpKTsKQEAgLTMxNyw3ICszMTUsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBz
dGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgICAgICAgICAgZGlzdGFuY2UgPSBzdGF0aWNfY2Fz
dDxpbnQ+KChNX1BJICogaFJhZGl1cykgLyAyLjApOwogICAgICAgICBlbHNlIC8vIFdlIGFyZSBl
bGxpcHRpY2FsIGFuZCB3aWxsIGhhdmUgdG8gZXN0aW1hdGUgdGhlIGRpc3RhbmNlCiAgICAgICAg
ICAgICBkaXN0YW5jZSA9IHN0YXRpY19jYXN0PGludD4oKE1fUEkgKiBzcXJ0ZigoaFJhZGl1cyAq
IGhSYWRpdXMgKyB2UmFkaXVzICogdlJhZGl1cykgLyAyLjApKSAvIDIuMCk7Ci0gICAgICAgIAor
CiAgICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBhdFdpZHRoOwogICAgICAgICBp
bnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKICAgICAgICAgaW50IG51bVNlZ21l
bnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKQEAgLTMyNyw3ICszMjUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xl
LCBpbnQgYW5nbGVTcAogICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKICAgICAgICAgICAgIHBh
dHRlcm5PZmZzZXQgPSAxLjA7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBldmVu
TnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9PSAwOworICAgICAgICAgICAgYm9v
bCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKICAgICAgICAgICAg
IGlmIChyZW1haW5kZXIpCiAgICAgICAgICAgICAgICAgZXZlbk51bWJlck9mU2VnbWVudHMgPSAh
ZXZlbk51bWJlck9mU2VnbWVudHM7CiAgICAgICAgICAgICBpZiAoZXZlbk51bWJlck9mU2VnbWVu
dHMpIHsKQEAgLTc5NiwxNSArNzk0LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5l
Q2FwKExpbmVDYXAgbGluZUNhcCkKIAogICAgIGNhaXJvX2xpbmVfY2FwX3QgY2Fpcm9DYXAgPSBD
QUlST19MSU5FX0NBUF9CVVRUOwogICAgIHN3aXRjaCAobGluZUNhcCkgewotICAgICAgICBjYXNl
IEJ1dHRDYXA6Ci0gICAgICAgICAgICAvLyBuby1vcAotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUm91bmRDYXA6Ci0gICAgICAgICAgICBjYWlyb0NhcCA9IENBSVJPX0xJTkVfQ0FQ
X1JPVU5EOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3F1YXJlQ2FwOgotICAg
ICAgICAgICAgY2Fpcm9DYXAgPSBDQUlST19MSU5FX0NBUF9TUVVBUkU7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEJ1dHRDYXA6CisgICAgICAgIC8vIG5vLW9wCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRDYXA6CisgICAgICAgIGNhaXJvQ2FwID0gQ0FJUk9fTElORV9DQVBf
Uk9VTkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3F1YXJlQ2FwOgorICAgICAgICBjYWly
b0NhcCA9IENBSVJPX0xJTkVfQ0FQX1NRVUFSRTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhaXJvX3NldF9saW5lX2NhcChtX2RhdGEtPmNyLCBjYWlyb0NhcCk7CiB9CkBAIC04MjEsMTUg
KzgxOSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4oTGluZUpvaW4gbGlu
ZUpvaW4pCiAKICAgICBjYWlyb19saW5lX2pvaW5fdCBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pP
SU5fTUlURVI7CiAgICAgc3dpdGNoIChsaW5lSm9pbikgewotICAgICAgICBjYXNlIE1pdGVySm9p
bjoKLSAgICAgICAgICAgIC8vIG5vLW9wCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBSb3VuZEpvaW46Ci0gICAgICAgICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pPSU5fUk9V
TkQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCZXZlbEpvaW46Ci0gICAgICAg
ICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pPSU5fQkVWRUw7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1pdGVySm9pbjoKKyAgICAgICAgLy8gbm8tb3AKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZEpvaW46CisgICAgICAgIGNhaXJvSm9pbiA9IENBSVJPX0xJTkVfSk9J
Tl9ST1VORDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCZXZlbEpvaW46CisgICAgICAgIGNh
aXJvSm9pbiA9IENBSVJPX0xJTkVfSk9JTl9CRVZFTDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhaXJvX3NldF9saW5lX2pvaW4obV9kYXRhLT5jciwgY2Fpcm9Kb2luKTsKIH0KQEAgLTg1
NSwzNyArODUzLDM3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6Z2V0QWxwaGEoKQogc3RhdGlj
IGlubGluZSBjYWlyb19vcGVyYXRvcl90IHRvQ2Fpcm9PcGVyYXRvcihDb21wb3NpdGVPcGVyYXRv
ciBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6
Ci0gICAgICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfQ0xFQVI7Ci0gICAgICAgIGNhc2Ug
Q29tcG9zaXRlQ29weToKLSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7
Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3ZlcjoKLSAgICAgICAgICAgIHJldHVybiBD
QUlST19PUEVSQVRPUl9PVkVSOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgotICAg
ICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0lOOwotICAgICAgICBjYXNlIENvbXBvc2l0
ZVNvdXJjZU91dDoKLSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9PVVQ7Ci0gICAg
ICAgIGNhc2UgQ29tcG9zaXRlU291cmNlQXRvcDoKLSAgICAgICAgICAgIHJldHVybiBDQUlST19P
UEVSQVRPUl9BVE9QOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlcjoKLSAg
ICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9ERVNUX09WRVI7Ci0gICAgICAgIGNhc2Ug
Q29tcG9zaXRlRGVzdGluYXRpb25JbjoKLSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRP
Ul9ERVNUX0lOOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgotICAgICAg
ICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfT1VUOwotICAgICAgICBjYXNlIENvbXBv
c2l0ZURlc3RpbmF0aW9uQXRvcDoKLSAgICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9E
RVNUX0FUT1A7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgotICAgICAgICAgICAgcmV0dXJu
IENBSVJPX09QRVJBVE9SX1hPUjsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2VyOgot
ICAgICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX1NBVFVSQVRFOwotICAgICAgICBjYXNl
IENvbXBvc2l0ZUhpZ2hsaWdodDoKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIENhaXJvIGVx
dWl2YWxlbnQgZm9yIENvbXBvc2l0ZUhpZ2hsaWdodC4KLSAgICAgICAgICAgIHJldHVybiBDQUlS
T19PUEVSQVRPUl9PVkVSOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVBsdXNMaWdodGVyOgotICAg
ICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0FERDsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT1VSQ0U7CisgICAgY2FzZSBDb21wb3Np
dGVDbGVhcjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0NMRUFSOworICAgIGNhc2Ug
Q29tcG9zaXRlQ29weToKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX1NPVVJDRTsKKyAg
ICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRP
Ul9PVkVSOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46CisgICAgICAgIHJldHVybiBDQUlS
T19PUEVSQVRPUl9JTjsKKyAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU91dDoKKyAgICAgICAgcmV0
dXJuIENBSVJPX09QRVJBVE9SX09VVDsKKyAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6Cisg
ICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9BVE9QOworICAgIGNhc2UgQ29tcG9zaXRlRGVz
dGluYXRpb25PdmVyOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfREVTVF9PVkVSOwor
ICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25JbjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09Q
RVJBVE9SX0RFU1RfSU47CisgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKKyAgICAg
ICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RFU1RfT1VUOworICAgIGNhc2UgQ29tcG9zaXRlRGVz
dGluYXRpb25BdG9wOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfREVTVF9BVE9QOwor
ICAgIGNhc2UgQ29tcG9zaXRlWE9SOgorICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfWE9S
OworICAgIGNhc2UgQ29tcG9zaXRlUGx1c0RhcmtlcjoKKyAgICAgICAgcmV0dXJuIENBSVJPX09Q
RVJBVE9SX1NBVFVSQVRFOworICAgIGNhc2UgQ29tcG9zaXRlSGlnaGxpZ2h0OgorICAgICAgICAv
LyBUaGVyZSBpcyBubyBDYWlybyBlcXVpdmFsZW50IGZvciBDb21wb3NpdGVIaWdobGlnaHQuCisg
ICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9PVkVSOworICAgIGNhc2UgQ29tcG9zaXRlUGx1
c0xpZ2h0ZXI6CisgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9BREQ7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX1NPVVJDRTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAK
aW5kZXggMjVjYzRmZi4uNWUwNGI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpZmRl
ZiBRX1dTX1dJTgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTQyLDcgKzQzLDYgQEAKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZv
bnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgpAQCAtMTE4OCw3ICsxMTg4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogfQogCiAjaWZkZWYgUV9X
U19XSU4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIEhEQyBHcmFwaGljc0NvbnRleHQ6OmdldFdp
bmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxl
bmQsIGJvb2wgbWF5Q3JlYXRlQml0bWFwKQogewotLSAKMS42LjQuMTguZzA3YTRhCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34835</attachid>
            <date>2009-08-14 06:18:13 -0700</date>
            <delta_ts>2009-08-18 22:42:50 -0700</delta_ts>
            <desc>Patch for GraphicsContextCG.cpp to use adjustLineToPixelBoundaries to replace duplicated code. Note: This patch is dependent on attachment 34767 in this bug.</desc>
            <filename>0001-Update-GraphicsContextCG.cpp-to-use-adjustLineToPixe.patch</filename>
            <type>text/plain</type>
            <size>2790</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBiNjdjODI0NjJmYzYzZTZjMjc0OTI3MjMwNmY4NDAwNzdmZDQyZGE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE1OjM1OjUyIC0wNDAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIFVwZGF0ZSBHcmFwaGljc0NvbnRleHRDRy5jcHAgdG8gdXNlIGFkanVzdExpbmVUb1Bp
eGVsQm91bmRhcmllcy4KCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEyICsrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCB8ICAgMzAgKystLS0tLS0tLS0tLS0tLS0tLS0KIDIg
ZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NzU1OTNh
Li5jZDk4YTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA4LTEzICBNaWtlIEZlbnRvbiAgPG1pa2Uu
ZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgR3JhcGhpY3NDb250ZXh0Q0cncyB2ZXJzaW9uIG9mIGRy
YXdMaW5lIHRvIG1ha2UgdXNlIG9mIHRoZSBzaGFyZWQKKyAgICAgICAgYWRqdXN0TGluZVRvUGl4
ZWxCb3VuZGFyaWVzIGZ1bmN0aW9uIGFuZCBlbGltaW5hdGlvbiBvdmVybGFwcGluZyBjb2RlLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2OAor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisKIDIwMDktMDgt
MTMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjQ3MTg1
LCB0aGUgZml4IGZvciA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MTg1PiwgYXMgaXQgYnJva2UgdGhlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGFiOGViM2MuLjAxOWI1ZTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBA
IC0xNDksMzMgKzE0OSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJ
bnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIEZsb2F0UG9pbnQg
cDEgPSBwb2ludDE7CiAgICAgRmxvYXRQb2ludCBwMiA9IHBvaW50MjsKICAgICBib29sIGlzVmVy
dGljYWxMaW5lID0gKHAxLngoKSA9PSBwMi54KCkpOwotICAgIAotICAgIC8vIEZvciBvZGQgd2lk
dGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBhcHByb3ByaWF0ZSB4L3kgc28gdGhhdCB0aGUgZmxv
YXQgYXJpdGhtZXRpYwotICAgIC8vIHdvcmtzIG91dC4gIEZvciBleGFtcGxlLCB3aXRoIGEgYm9y
ZGVyIHdpZHRoIG9mIDMsIEtIVE1MIHdpbGwgcGFzcyB1cyAoeTEreTIpLzIsIGUuZy4sCi0gICAg
Ly8gKDUwKzUzKS8yID0gMTAzLzIgPSA1MSB3aGVuIHdlIHdhbnQgNTEuNS4gIEl0IGlzIGFsd2F5
cyB0cnVlIHRoYXQgYW4gZXZlbiB3aWR0aCBnYXZlCi0gICAgLy8gdXMgYSBwZXJmZWN0IHBvc2l0
aW9uLCBidXQgYW4gb2RkIHdpZHRoIGdhdmUgdXMgYSBwb3NpdGlvbiB0aGF0IGlzIG9mZiBieSBl
eGFjdGx5IDAuNS4KLSAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBEb3R0ZWRTdHJva2UgfHwgc3Ry
b2tlU3R5bGUoKSA9PSBEYXNoZWRTdHJva2UpIHsKLSAgICAgICAgaWYgKGlzVmVydGljYWxMaW5l
KSB7Ci0gICAgICAgICAgICBwMS5tb3ZlKDAsIHdpZHRoKTsKLSAgICAgICAgICAgIHAyLm1vdmUo
MCwgLXdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHAxLm1vdmUod2lkdGgs
IDApOwotICAgICAgICAgICAgcDIubW92ZSgtd2lkdGgsIDApOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIGlmICgoKGludCl3aWR0aCkgJSAyKSB7Ci0gICAgICAgIGlmIChpc1ZlcnRpY2Fs
TGluZSkgewotICAgICAgICAgICAgLy8gV2UncmUgYSB2ZXJ0aWNhbCBsaW5lLiAgQWRqdXN0IG91
ciB4LgotICAgICAgICAgICAgcDEubW92ZSgwLjVmLCAwLjBmKTsKLSAgICAgICAgICAgIHAyLm1v
dmUoMC41ZiwgMC4wZik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBh
IGhvcml6b250YWwgbGluZS4gQWRqdXN0IG91ciB5LgotICAgICAgICAgICAgcDEubW92ZSgwLjBm
LCAwLjVmKTsKLSAgICAgICAgICAgIHAyLm1vdmUoMC4wZiwgMC41Zik7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCisKKyAgICBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0
aCwgc3R5bGUpOworCiAgICAgaW50IHBhdFdpZHRoID0gMDsKICAgICBzd2l0Y2ggKHN0cm9rZVN0
eWxlKCkpIHsKICAgICAgICAgY2FzZSBOb1N0cm9rZToKLS0gCjEuNi40LjE4LmcwN2E0YQoK
</data>
<flag name="review"
          id="19032"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="19176"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34838</attachid>
            <date>2009-08-14 06:35:05 -0700</date>
            <delta_ts>2009-08-17 07:27:23 -0700</delta_ts>
            <desc>Fix Changelog in patch #34778</desc>
            <filename>0001-Style-update-for-GraphicsContextCG.cpp.patch</filename>
            <type>text/plain</type>
            <size>23420</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBiYmNkY2RhNmRmNzM2YmEyOGJiODAwYzVlZTU4YmM3YzJlMzg3NTY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE1OjU0OjM0IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gU3R5bGUgdXBkYXRlIGZvciBHcmFwaGljc0NvbnRleHRDRy5jcHAuCgotLS0KIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArKwogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgfCAgMzQ2ICsr
KysrKysrKystLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspLCAx
NzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjZDk4YTk1Li43M2FjZjJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA4
LTEzICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSBmaXhlcyBiYXNl
ZCBvbiBjcHBfc3R5bGUucHkgYW5kIFdlYktpdCBTdHlsZSBndWlkZSBmb3IKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4MjY4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cm91
bmRUb0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVS
TEZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKToKKwogMjAwOS0wOC0xMyAgTWFy
ayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByNDcxODUsIHRoZSBm
aXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxODU+LCBh
cyBpdCBicm9rZSB0aGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggMDE5YjVlOS4uY2Y4YjkwMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4LDE0
ICsyOCwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJGbG9h
dENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NH
Qml0bWFwQ29udGV4dC5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkNvbnRleHQuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTU0LDE5ICsxNTUsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IElu
dFBvaW50JiBwb2ludDIpCiAKICAgICBpbnQgcGF0V2lkdGggPSAwOwogICAgIHN3aXRjaCAoc3Ry
b2tlU3R5bGUoKSkgewotICAgICAgICBjYXNlIE5vU3Ryb2tlOgotICAgICAgICBjYXNlIFNvbGlk
U3Ryb2tlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG90dGVkU3Ryb2tlOgot
ICAgICAgICAgICAgcGF0V2lkdGggPSAoaW50KXdpZHRoOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICAgICAgcGF0V2lkdGggPSAzICogKGlu
dCl3aWR0aDsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9TdHJva2U6CisgICAgY2Fz
ZSBTb2xpZFN0cm9rZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6Cisg
ICAgICAgIHBhdFdpZHRoID0gKGludCl3aWR0aDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBE
YXNoZWRTdHJva2U6CisgICAgICAgIHBhdFdpZHRoID0gMyAqIChpbnQpd2lkdGg7CisgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBmYWxzZSk7CiAKQEAgLTE5Nyw3ICsxOTgs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50
MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKICAgICAgICAgaWYgKHBhdFdpZHRoID09IDEpCiAg
ICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wZjsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gbnVtU2VnbWVudHMgJSAyID09IDA7Cisg
ICAgICAgICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIShudW1TZWdtZW50cyAlIDIp
OwogICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKICAgICAgICAgICAgICAgICBldmVuTnVtYmVy
T2ZTZWdtZW50cyA9ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKICAgICAgICAgICAgIGlmIChldmVu
TnVtYmVyT2ZTZWdtZW50cykgewpAQCAtMjExLDcgKzIxMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9p
bnQyKQogICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVt
YWluZGVyKS8yOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IGNvbnN0IENHRmxvYXQgZG90dGVkTGluZVsyXSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRoIH07CiAg
ICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdHRlcm5PZmZzZXQsIGRvdHRl
ZExpbmUsIDIpOwogICAgIH0KQEAgLTIyNCw3ICsyMjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50
MikKIAogICAgIGlmIChwYXRXaWR0aCkKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShj
b250ZXh0KTsKLSAgICAgICAgCisKICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCB0cnVlKTsKIH0KQEAgLTIzOSw3
ICsyNDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50UmVj
dCYgcmVjdCkKIAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBmbG9hdCByID0gKGZsb2F0
KXJlY3Qud2lkdGgoKSAvIDI7CkBAIC0yNTEsMjUgKzI1MiwyNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xlLCBp
bnQgYW5nbGVTcGFuKQoteyAKK3sKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0cm9r
ZVN0eWxlKCkgPT0gTm9TdHJva2UgfHwgc3Ryb2tlVGhpY2tuZXNzKCkgPD0gMC4wZikKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgIENHQ29udGV4
dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29u
dGV4dCwgZmFsc2UpOwotICAgIAorCiAgICAgaW50IHggPSByZWN0LngoKTsKICAgICBpbnQgeSA9
IHJlY3QueSgpOwogICAgIGZsb2F0IHcgPSAoZmxvYXQpcmVjdC53aWR0aCgpOwogICAgIGZsb2F0
IGggPSAoZmxvYXQpcmVjdC5oZWlnaHQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGggLyB3
OwogICAgIGZsb2F0IHJldmVyc2VTY2FsZUZhY3RvciA9IHcgLyBoOwotICAgIAorCiAgICAgaWYg
KHcgIT0gaCkKICAgICAgICAgc2NhbGUoRmxvYXRTaXplKDEsIHNjYWxlRmFjdG9yKSk7Ci0gICAg
CisKICAgICBmbG9hdCBoUmFkaXVzID0gdyAvIDI7CiAgICAgZmxvYXQgdlJhZGl1cyA9IGggLyAy
OwogICAgIGZsb2F0IGZhID0gc3RhcnRBbmdsZTsKQEAgLTI4MCwyMiArMjgxLDIxIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0
QW5nbGUsIGludCBhbmdsZVNwCiAKICAgICBpZiAodyAhPSBoKQogICAgICAgICBzY2FsZShGbG9h
dFNpemUoMSwgcmV2ZXJzZVNjYWxlRmFjdG9yKSk7Ci0gICAgCi0gICAgCisKICAgICBmbG9hdCB3
aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwogICAgIGludCBwYXRXaWR0aCA9IDA7Ci0gICAgCisK
ICAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICAgICAgY2FzZSBEb3R0ZWRTdHJva2U6
Ci0gICAgICAgICAgICBwYXRXaWR0aCA9IChpbnQpKHdpZHRoIC8gMik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEYXNoZWRTdHJva2U6Ci0gICAgICAgICAgICBwYXRXaWR0aCA9
IDMgKiAoaW50KSh3aWR0aCAvIDIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdHRlZFN0cm9rZToKKyAgICAgICAg
cGF0V2lkdGggPSAoaW50KSh3aWR0aCAvIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERh
c2hlZFN0cm9rZToKKyAgICAgICAgcGF0V2lkdGggPSAzICogKGludCkod2lkdGggLyAyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKHBhdFdpZHRoKSB7CiAgICAgICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRo
IGEgd2lkdGggb2YgMzAgcGl4ZWxzLgogICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUg
bWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludApAQCAtMzA1LDcgKzMwNSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50
IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAgICAgICAgICAgICBkaXN0YW5jZSA9IHN0YXRpY19j
YXN0PGludD4oKHBpRmxvYXQgKiBoUmFkaXVzKSAvIDIuMGYpOwogICAgICAgICBlbHNlIC8vIFdl
IGFyZSBlbGxpcHRpY2FsIGFuZCB3aWxsIGhhdmUgdG8gZXN0aW1hdGUgdGhlIGRpc3RhbmNlCiAg
ICAgICAgICAgICBkaXN0YW5jZSA9IHN0YXRpY19jYXN0PGludD4oKHBpRmxvYXQgKiBzcXJ0Zigo
aFJhZGl1cyAqIGhSYWRpdXMgKyB2UmFkaXVzICogdlJhZGl1cykgLyAyLjBmKSkgLyAyLjBmKTsK
LSAgICAgICAgCisKICAgICAgICAgaW50IHJlbWFpbmRlciA9IGRpc3RhbmNlICUgcGF0V2lkdGg7
CiAgICAgICAgIGludCBjb3ZlcmFnZSA9IGRpc3RhbmNlIC0gcmVtYWluZGVyOwogICAgICAgICBp
bnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAvIHBhdFdpZHRoOwpAQCAtMzE1LDcgKzMxNSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50
IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAgICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQogICAg
ICAgICAgICAgcGF0dGVybk9mZnNldCA9IDEuMGY7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9PSAwOworICAg
ICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsK
ICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCiAgICAgICAgICAgICAgICAgZXZlbk51bWJlck9m
U2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7CiAgICAgICAgICAgICBpZiAoZXZlbk51
bWJlck9mU2VnbWVudHMpIHsKQEAgLTMyOSwxMyArMzI5LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGludCBh
bmdsZVNwCiAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSBy
ZW1haW5kZXIpIC8gMi4wZjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIAorCiAgICAg
ICAgIGNvbnN0IENHRmxvYXQgZG90dGVkTGluZVsyXSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRoIH07
CiAgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdHRlcm5PZmZzZXQsIGRv
dHRlZExpbmUsIDIpOwogICAgIH0KIAogICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7
Ci0gICAgCisKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCkBAIC0z
NTEsNyArMzUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNp
emVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKIAogICAgIGlmIChhbnRpYWxp
YXNlZCAhPSBzaG91bGRBbnRpYWxpYXMoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50
aWFsaWFzKGNvbnRleHQsIGFudGlhbGlhc2VkKTsKLSAgICAKKwogICAgIENHQ29udGV4dEJlZ2lu
UGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRNb3ZlVG9Qb2ludChjb250ZXh0LCBwb2ludHNb
MF0ueCgpLCBwb2ludHNbMF0ueSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG5wb2lu
dHM7IGkrKykKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Nv
bnZleFBvbHlnb24oc2l6ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cwogICAg
IENHQ29udGV4dENsb3NlUGF0aChjb250ZXh0KTsKIAogICAgIGRyYXdQYXRoKCk7Ci0gICAgCisK
ICAgICBpZiAoYW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCiAgICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzaG91bGRBbnRpYWxpYXMoKSk7CiB9CkBA
IC0zNjcsNyArMzY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29u
KHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogewogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAKKwogICAgIENHUGF0dGVyblJlZiBwbGF0Zm9y
bVBhdHRlcm4gPSBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKS0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGdldENUTSgpKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGF0aCgpCiAgICAgICAgIHN0cm9rZVBhdGgoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChzdGF0ZS5maWxsQ29sb3JTcGFjZSA9PSBQYXR0ZXJuQ29sb3JTcGFjZSkK
ICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogICAgIGlmIChzdGF0ZS5zdHJva2VDb2xvclNw
YWNlID09IFBhdHRlcm5Db2xvclNwYWNlKQpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIENHUmVjdCBy
ZWN0c1syXSA9IHsgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4dCgp
KSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7CiAg
ICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCksIHJlY3RzLCAyKTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKHBsYXRmb3Jt
Q29udGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0KHBsYXRmb3JtQ29udGV4dCgpLCBDR0Nv
bnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBDR0NvbnRl
eHRBZGRFbGxpcHNlSW5SZWN0KHBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKQEAgLTYxNSwxMyAr
NjE1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChj
b25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzCiAKICAgICBjbGlwKHJlY3QpOwogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgCisKICAgICAv
LyBBZGQgb3V0ZXIgZWxsaXBzZQogICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29udGV4
dCwgQ0dSZWN0TWFrZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSkpOwogICAgIC8vIEFkZCBpbm5lciBlbGxpcHNlLgogICAgIENHQ29udGV4dEFkZEVsbGlw
c2VJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIHRoaWNrbmVzcywgcmVjdC55
KCkgKyB0aGlja25lc3MsCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtICh0aGlja25lc3MgKiAyKSwg
cmVjdC5oZWlnaHQoKSAtICh0aGlja25lc3MgKiAyKSkpOwotICAgIAorCiAgICAgQ0dDb250ZXh0
RU9DbGlwKGNvbnRleHQpOwogfQogCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXIKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0KCksIHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RN
KHBsYXRmb3JtQ29udGV4dCgpLCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0
Zm9ybUNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBpbWFn
ZUJ1ZmZlci0+aW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKQEAgLTcxMCw3ICs3MTAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYgc2l6
ZSwgaW50IGJsdXIsIGNvbnN0IENvbAogICAgICAgICBDR0NvbG9yUmVmIGNvbG9yQ0cgPSBjcmVh
dGVDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR1NpemVNYWtlKHdp
ZHRoLCBoZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1clJh
ZGl1cywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyUmFkaXVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JDRyk7CiAgICAgICAgIENH
Q29sb3JSZWxlYXNlKGNvbG9yQ0cpOwogICAgIH0KQEAgLTc3NSwxNSArNzc1LDE1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKExpbmVDYXAgY2FwKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKGNhcCkgewotICAgICAg
ICBjYXNlIEJ1dHRDYXA6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRmb3Jt
Q29udGV4dCgpLCBrQ0dMaW5lQ2FwQnV0dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBSb3VuZENhcDoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVDYXAocGxhdGZvcm1D
b250ZXh0KCksIGtDR0xpbmVDYXBSb3VuZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTcXVhcmVDYXA6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRmb3Jt
Q29udGV4dCgpLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQnV0dENhcDoKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChwbGF0Zm9ybUNvbnRleHQo
KSwga0NHTGluZUNhcEJ1dHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kQ2FwOgor
ICAgICAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKHBsYXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lQ2Fw
Um91bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAgQ0dD
b250ZXh0U2V0TGluZUNhcChwbGF0Zm9ybUNvbnRleHQoKSwga0NHTGluZUNhcFNxdWFyZSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNzk3LDE1ICs3OTcsMTUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGpvaW4pCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAoam9pbikgewotICAgICAg
ICBjYXNlIE1pdGVySm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVKb2luKHBsYXRm
b3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pbk1pdGVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFJvdW5kSm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVKb2luKHBs
YXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pblJvdW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEJldmVsSm9pbjoKLSAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVKb2lu
KHBsYXRmb3JtQ29udGV4dCgpLCBrQ0dMaW5lSm9pbkJldmVsKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTWl0ZXJKb2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihwbGF0
Zm9ybUNvbnRleHQoKSwga0NHTGluZUpvaW5NaXRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUm91bmRKb2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihwbGF0Zm9ybUNvbnRl
eHQoKSwga0NHTGluZUpvaW5Sb3VuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmV2ZWxK
b2luOgorICAgICAgICBDR0NvbnRleHRTZXRMaW5lSm9pbihwbGF0Zm9ybUNvbnRleHQoKSwga0NH
TGluZUpvaW5CZXZlbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtODM0LDcgKzgz
NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
KwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250
ZXh0QWRkUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94
KHBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChwbGF0Zm9ybUNvbnRl
eHQoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CkBAIC04ODUsOSArODg1LDkgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBjb25zdAogCiBGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKLSAgICAvLyBJdCBpcyBub3QgZW5vdWdoIGp1c3QgdG8gcm91bmQgdG8gcGl4ZWxzIGlu
IGRldmljZSBzcGFjZS4gVGhlIHJvdGF0aW9uIHBhcnQgb2YgdGhlIAorICAgIC8vIEl0IGlzIG5v
dCBlbm91Z2gganVzdCB0byByb3VuZCB0byBwaXhlbHMgaW4gZGV2aWNlIHNwYWNlLiBUaGUgcm90
YXRpb24gcGFydCBvZiB0aGUKICAgICAvLyBhZmZpbmUgdHJhbnNmb3JtIG1hdHJpeCB0byBkZXZp
Y2Ugc3BhY2UgY2FuIG1lc3Mgd2l0aCB0aGlzIGNvbnZlcnNpb24gaWYgd2UgaGF2ZSBhCi0gICAg
Ly8gcm90YXRpbmcgaW1hZ2UgbGlrZSB0aGUgaGFuZHMgb2YgdGhlIHdvcmxkIGNsb2NrIHdpZGdl
dC4gV2UganVzdCBuZWVkIHRoZSBzY2FsZSwgc28gCisgICAgLy8gcm90YXRpbmcgaW1hZ2UgbGlr
ZSB0aGUgaGFuZHMgb2YgdGhlIHdvcmxkIGNsb2NrIHdpZGdldC4gV2UganVzdCBuZWVkIHRoZSBz
Y2FsZSwgc28KICAgICAvLyB3ZSBnZXQgdGhlIGFmZmluZSB0cmFuc2Zvcm0gbWF0cml4IGFuZCBl
eHRyYWN0IHRoZSBzY2FsZS4KIAogICAgIGlmIChtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNm
b3JtS25vd25Ub0JlSWRlbnRpdHkpCkBAIC05MTAsMTEgKzkxMCwxMSBAQCBGbG9hdFJlY3QgR3Jh
cGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICBkZXZpY2VPcmlnaW4ueSA9IHJvdW5kZihkZXZpY2VPcmlnaW4ueSk7CiAgICAgZGV2aWNl
TG93ZXJSaWdodC54ID0gcm91bmRmKGRldmljZUxvd2VyUmlnaHQueCk7CiAgICAgZGV2aWNlTG93
ZXJSaWdodC55ID0gcm91bmRmKGRldmljZUxvd2VyUmlnaHQueSk7Ci0gICAgCisKICAgICAvLyBE
b24ndCBsZXQgdGhlIGhlaWdodCBvciB3aWR0aCByb3VuZCB0byAwIHVubGVzcyBlaXRoZXIgd2Fz
IG9yaWdpbmFsbHkgMAotICAgIGlmIChkZXZpY2VPcmlnaW4ueSA9PSBkZXZpY2VMb3dlclJpZ2h0
LnkgJiYgcmVjdC5oZWlnaHQoKSAhPSAwKQorICAgIGlmIChkZXZpY2VPcmlnaW4ueSA9PSBkZXZp
Y2VMb3dlclJpZ2h0LnkgJiYgcmVjdC5oZWlnaHQoKSkKICAgICAgICAgZGV2aWNlTG93ZXJSaWdo
dC55ICs9IDE7Ci0gICAgaWYgKGRldmljZU9yaWdpbi54ID09IGRldmljZUxvd2VyUmlnaHQueCAm
JiByZWN0LndpZHRoKCkgIT0gMCkKKyAgICBpZiAoZGV2aWNlT3JpZ2luLnggPT0gZGV2aWNlTG93
ZXJSaWdodC54ICYmIHJlY3Qud2lkdGgoKSkKICAgICAgICAgZGV2aWNlTG93ZXJSaWdodC54ICs9
IDE7CiAKICAgICBGbG9hdFBvaW50IHJvdW5kZWRPcmlnaW4gPSBGbG9hdFBvaW50KGRldmljZU9y
aWdpbi54IC8gZGV2aWNlU2NhbGVYLCBkZXZpY2VPcmlnaW4ueSAvIGRldmljZVNjYWxlWSk7CkBA
IC05NjAsMTMgKzk2MCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0
KGNvbnN0IEludFBvaW50JiBwb2ludCwgaW50IHdpZHRoLCBib29sIHByaQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0cm9r
ZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBzdHJv
a2VDb2xvcigpKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dS
ZWN0TWFrZSh4LCB5LCBsaW5lTGVuZ3RoLCB0aGlja25lc3MpKTsKICAgICBpZiAoZmlsbENvbG9y
KCkgIT0gc3Ryb2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250
ZXh0KCksIGZpbGxDb2xvcigpKTsKLSAgICAgICAgCisKICAgICBpZiAocmVzdG9yZUFudGlhbGlh
c01vZGUpCiAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRl
eHQoKSwgdHJ1ZSk7CiB9CkBAIC05NzUsMTEgKzk3NSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorCiAgICAgQ0ZVUkxSZWYgdXJsUmVmID0gbGluay5jcmVhdGVDRlVSTCgpOwogICAgIGlm
ICh1cmxSZWYpIHsKICAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gR2V0IHRoZSBib3VuZGluZyBib3ggdG8gaGFu
ZGxlIGNsaXBwaW5nLgogICAgICAgICBDR1JlY3QgYm94ID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5k
aW5nQm94KGNvbnRleHQpOwogCkBAIC05OTgsMjggKzk5OCwyOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBt
b2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIENHSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSA9IGtDR0ludGVycG9sYXRp
b25EZWZhdWx0OwogICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIEludGVycG9sYXRp
b25EZWZhdWx0OgotICAgICAgICAgICAgcXVhbGl0eSA9IGtDR0ludGVycG9sYXRpb25EZWZhdWx0
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50ZXJwb2xhdGlvbk5vbmU6Ci0g
ICAgICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbk5vbmU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBJbnRlcnBvbGF0aW9uTG93OgotICAgICAgICAgICAgcXVhbGl0
eSA9IGtDR0ludGVycG9sYXRpb25Mb3c7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAv
LyBGYWxsIHRocm91Z2ggdG8gSW50ZXJwb2xhdGlvbkhpZ2ggaWYga0NHSW50ZXJwb2xhdGlvbk1l
ZGl1bSBpcyBub3QgYXZhaWxhYmxlCi0gICAgICAgIGNhc2UgSW50ZXJwb2xhdGlvbk1lZGl1bToK
KyAgICBjYXNlIEludGVycG9sYXRpb25EZWZhdWx0OgorICAgICAgICBxdWFsaXR5ID0ga0NHSW50
ZXJwb2xhdGlvbkRlZmF1bHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlv
bk5vbmU6CisgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uTm9uZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uTG93OgorICAgICAgICBxdWFsaXR5ID0ga0NH
SW50ZXJwb2xhdGlvbkxvdzsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvLyBGYWxsIHRocm91Z2gg
dG8gSW50ZXJwb2xhdGlvbkhpZ2ggaWYga0NHSW50ZXJwb2xhdGlvbk1lZGl1bSBpcyBub3QgYXZh
aWxhYmxlCisgICAgY2FzZSBJbnRlcnBvbGF0aW9uTWVkaXVtOgogI2lmIEhBVkUoQ0dfSU5URVJQ
T0xBVElPTl9NRURJVU0pCi0gICAgICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbk1l
ZGl1bTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xh
dGlvbk1lZGl1bTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJbnRlcnBv
bGF0aW9uSGlnaDoKLSAgICAgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvbkhpZ2g6CisgICAgICAg
IHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpLCBx
dWFsaXR5KTsKIH0KQEAgLTEwMzEsMTggKzEwMzEsMTggQEAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
R3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QKIAogICAg
IENHSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSA9IENHQ29udGV4dEdldEludGVycG9sYXRp
b25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBzd2l0Y2ggKHF1YWxpdHkpIHsKLSAg
ICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uRGVmYXVsdDsKLSAgICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uTm9uZToK
LSAgICAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTm9uZTsKLSAgICAgICAgY2FzZSBrQ0dJ
bnRlcnBvbGF0aW9uTG93OgotICAgICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7Cisg
ICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEludGVycG9s
YXRpb25EZWZhdWx0OworICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk5vbmU6CisgICAgICAgIHJl
dHVybiBJbnRlcnBvbGF0aW9uTm9uZTsKKyAgICBjYXNlIGtDR0ludGVycG9sYXRpb25Mb3c6Cisg
ICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwogI2lmIEhBVkUoQ0dfSU5URVJQT0xBVElP
Tl9NRURJVU0pCi0gICAgICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk1lZGl1bToKLSAgICAgICAg
ICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTWVkaXVtOworICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlv
bk1lZGl1bToKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25NZWRpdW07CiAjZW5kaWYKLSAg
ICAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDoKLSAgICAgICAgICAgIHJldHVybiBJbnRl
cnBvbGF0aW9uSGlnaDsKKyAgICBjYXNlIGtDR0ludGVycG9sYXRpb25IaWdoOgorICAgICAgICBy
ZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQogICAgIHJldHVybiBJbnRlcnBvbGF0aW9u
RGVmYXVsdDsKIH0KQEAgLTEwNTUsMzIgKzEwNTUsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQogICAgIC8vIFdvdywgd2lzaCBD
RyBoYWQgdXNlZCBiaXRzIGhlcmUuCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2FzZSBjVGV4dEludmlz
aWJsZTogLy8gSW52aXNpYmxlCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01v
ZGUoY29udGV4dCwga0NHVGV4dEludmlzaWJsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBjVGV4dEZpbGw6IC8vIEZpbGwKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRE
cmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBjVGV4dFN0cm9rZTogLy8gU3Ryb2tlCi0gICAgICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSAzOiAvLyBGaWxsIHwgU3Ryb2tlCi0gICAgICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2UpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgY1RleHRDbGlwOiAvLyBDbGlwCi0gICAgICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dENsaXApOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNTogLy8gRmlsbCB8IENsaXAKLSAgICAg
ICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbENs
aXApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNjogLy8gU3Ryb2tlIHwgQ2xp
cAotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1Rl
eHRTdHJva2VDbGlwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDc6IC8vIEZp
bGwgfCBTdHJva2UgfCBDbGlwCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01v
ZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2VDbGlwKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBjVGV4dEludmlz
aWJsZTogLy8gSW52aXNpYmxlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShj
b250ZXh0LCBrQ0dUZXh0SW52aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBjVGV4
dEZpbGw6IC8vIEZpbGwKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRl
eHQsIGtDR1RleHRGaWxsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBjVGV4dFN0cm9rZTog
Ly8gU3Ryb2tlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBr
Q0dUZXh0U3Ryb2tlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOiAvLyBGaWxsIHwgU3Ry
b2tlCisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0
RmlsbFN0cm9rZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgY1RleHRDbGlwOiAvLyBDbGlw
CisgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0Q2xp
cCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNTogLy8gRmlsbCB8IENsaXAKKyAgICAgICAg
Q0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsQ2xpcCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgNjogLy8gU3Ryb2tlIHwgQ2xpcAorICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZUNsaXApOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDc6IC8vIEZpbGwgfCBTdHJva2UgfCBDbGlwCisgICAgICAg
IENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbFN0cm9rZUNs
aXApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKQEAgLTExMTQsNTQgKzExMTQsNTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogCiAjaWZuZGVmIEJVSUxESU5HX09O
X1RJR0VSIC8vIFRpZ2VyJ3Mgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKCkgaXMgZGVmaW5lZCBpbiBH
cmFwaGljc0NvbnRleHRNYWMubW0uCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCi17ICAgCit7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0dCbGVuZE1vZGUgdGFyZ2V0
ID0ga0NHQmxlbmRNb2RlTm9ybWFsOyAgIAorICAgIENHQmxlbmRNb2RlIHRhcmdldCA9IGtDR0Js
ZW5kTW9kZU5vcm1hbDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2FzZSBDb21wb3Np
dGVDbGVhcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNsZWFyOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlQ29weToKLSAgICAgICAgICAgIHRh
cmdldCA9IGtDR0JsZW5kTW9kZUNvcHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDb21wb3NpdGVTb3VyY2VPdmVyOgotICAgICAgICAgICAgLy9rQ0dCbGVuZE1vZGVOb3JtYWwK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgotICAg
ICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlSW47Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAgICAgICB0YXJnZXQg
PSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDb21wb3NpdGVTb3VyY2VBdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2Rl
U291cmNlQXRvcDsgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVE
ZXN0aW5hdGlvbk92ZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5h
dGlvbk92ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0
aW5hdGlvbkluOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25J
bjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9u
T3V0OgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25PdXQ7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbkF0b3A7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVYT1I6Ci0gICAgICAgICAgICB0
YXJnZXQgPSBrQ0dCbGVuZE1vZGVYT1I7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDb21wb3NpdGVQbHVzRGFya2VyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2Rl
UGx1c0RhcmtlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZUhp
Z2hsaWdodDoKLSAgICAgICAgICAgIC8vIGN1cnJlbnRseSB1bnN1cHBvcnRlZAotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6Ci0gICAgICAgICAg
ICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVzTGlnaHRlcjsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNs
ZWFyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZUNvcHk6CisgICAgICAgIHRh
cmdldCA9IGtDR0JsZW5kTW9kZUNvcHk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9z
aXRlU291cmNlT3ZlcjoKKyAgICAgICAgLy9rQ0dCbGVuZE1vZGVOb3JtYWwKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoKKyAgICAgICAgdGFyZ2V0ID0ga0NHQmxl
bmRNb2RlU291cmNlSW47CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNl
T3V0OgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgdGFyZ2V0ID0ga0NH
QmxlbmRNb2RlU291cmNlQXRvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVE
ZXN0aW5hdGlvbk92ZXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9u
T3ZlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkluOgor
ICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbkluOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAgICAgICB0YXJnZXQgPSBr
Q0dCbGVuZE1vZGVEZXN0aW5hdGlvbk91dDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21w
b3NpdGVEZXN0aW5hdGlvbkF0b3A6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3Rp
bmF0aW9uQXRvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb21wb3NpdGVYT1I6CisgICAg
ICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVhPUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b21wb3NpdGVQbHVzRGFya2VyOgorICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVzRGFy
a2VyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKKyAgICAg
ICAgLy8gY3VycmVudGx5IHVuc3VwcG9ydGVkCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29t
cG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNMaWdo
dGVyOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKHBs
YXRmb3JtQ29udGV4dCgpLCB0YXJnZXQpOwogfQotLSAKMS42LjQuMTguZzA3YTRhCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34842</attachid>
            <date>2009-08-14 08:27:26 -0700</date>
            <delta_ts>2009-08-19 00:47:12 -0700</delta_ts>
            <desc>Patch for GraphicsContextSkia.cpp to use adjustLineToPixelBoundaries.</desc>
            <filename>0001-Update-GraphicsContextSkia.cpp-to-use-adjustLineToPi.patch</filename>
            <type>text/plain</type>
            <size>4620</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA0OWQ0ZTYwMWMyY2YyZTQ3NjE5ZmZiNTExYjk2OGYyOWUyYjFjZGFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDA5OjI1OjQ0IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gVXBkYXRlIEdyYXBoaWNzQ29udGV4dFNraWEuY3BwIHRvIHVzZSBhZGp1c3RMaW5lVG9QaXhl
bEJvdW5kYXJpZXMuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMiArKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0U2tpYS5jcHAgfCAgIDQ0ICsrKysrLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVz
IGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhY2YyYS4uMjll
YTBjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0xNCAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRv
bkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIEdyYXBoaWNzQ29udGV4dFNraWEncyB2ZXJzaW9uIG9mIGRyYXdM
aW5lIHRvIG1ha2UgdXNlIG9mIHRoZSBzaGFyZWQKKyAgICAgICAgYWRqdXN0TGluZVRvUGl4ZWxC
b3VuZGFyaWVzIGZ1bmN0aW9uIGFuZCBlbGltaW5hdGlvbiBvdmVybGFwcGluZyBjb2RlLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2OAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorCiAyMDA5LTA4
LTEzICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCBiYmI0MmM5Li5l
YmNhZWE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhp
Y3NDb250ZXh0U2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC01MjEsMjYgKzUyMSwyOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQm
IHBvaW50MikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2tQYWludCBwYWludDsKLSAgICBTa1Bv
aW50IHB0c1syXSA9IHsgKFNrUG9pbnQpcG9pbnQxLCAoU2tQb2ludClwb2ludDIgfTsKICAgICBp
ZiAoIWlzUG9pbnRTa2lhU2FmZShnZXRDVE0oKSwgcHRzWzBdKSB8fCAhaXNQb2ludFNraWFTYWZl
KGdldENUTSgpLCBwdHNbMV0pKQogICAgICAgICByZXR1cm47CiAKKyAgICBGbG9hdFBvaW50IHAx
ID0gcG9pbnQxOworICAgIEZsb2F0UG9pbnQgcDIgPSBwb2ludDI7CisgICAgYm9vbCBpc1ZlcnRp
Y2FsTGluZSA9IChwMS54KCkgPT0gcDIueCgpKTsKKyAgICBpbnQgd2lkdGggPSByb3VuZGYoc3Ry
b2tlVGhpY2tuZXNzKCkpOworCiAgICAgLy8gV2Uga25vdyB0aGVzZSBhcmUgdmVydGljYWwgb3Ig
aG9yaXpvbnRhbCBsaW5lcywgc28gdGhlIGxlbmd0aCB3aWxsIGp1c3QKICAgICAvLyBiZSB0aGUg
c3VtIG9mIHRoZSBkaXNwbGFjZW1lbnQgY29tcG9uZW50IHZlY3RvcnMgZ2l2ZSBvciB0YWtlIDEg
LQogICAgIC8vIHByb2JhYmx5IHdvcnRoIHRoZSBzcGVlZCB1cCBvZiBubyBzcXVhcmUgcm9vdCwg
d2hpY2ggYWxzbyB3b24ndCBiZSBleGFjdC4KLSAgICBTa1BvaW50IGRpc3AgPSBwdHNbMV0gLSBw
dHNbMF07Ci0gICAgaW50IGxlbmd0aCA9IFNrU2NhbGFyUm91bmQoZGlzcC5mWCArIGRpc3AuZlkp
OworICAgIEZsb2F0UG9pbnQgZGlzcCA9IHAyIC0gcDE7CisgICAgaW50IGxlbmd0aCA9IFNrU2Nh
bGFyUm91bmQoZGlzcC54KCkgKyBkaXNwLnkoKSk7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNl
dHVwUGFpbnRGb3JTdHJva2luZygmcGFpbnQsIDAsIGxlbmd0aCk7Ci0gICAgaW50IHdpZHRoID0g
cm91bmRmKHN0cm9rZVRoaWNrbmVzcygpKTsKLSAgICBib29sIGlzVmVydGljYWxMaW5lID0gcHRz
WzBdLmZYID09IHB0c1sxXS5mWDsKIAogICAgIGlmIChzdHJva2VTdHlsZSgpID09IERvdHRlZFN0
cm9rZSB8fCBzdHJva2VTdHlsZSgpID09IERhc2hlZFN0cm9rZSkgewogICAgICAgICAvLyBEbyBh
IHJlY3QgZmlsbCBvZiBvdXIgZW5kcG9pbnRzLiAgVGhpcyBlbnN1cmVzIHdlIGFsd2F5cyBoYXZl
IHRoZQogICAgICAgICAvLyBhcHBlYXJhbmNlIG9mIGJlaW5nIGEgYm9yZGVyLiAgV2UgdGhlbiBk
cmF3IHRoZSBhY3R1YWwgZG90dGVkL2Rhc2hlZCBsaW5lLgogCiAgICAgICAgIFNrUmVjdCByMSwg
cjI7Ci0gICAgICAgIHIxLnNldChwdHNbMF0uZlgsIHB0c1swXS5mWSwgcHRzWzBdLmZYICsgd2lk
dGgsIHB0c1swXS5mWSArIHdpZHRoKTsKLSAgICAgICAgcjIuc2V0KHB0c1sxXS5mWCwgcHRzWzFd
LmZZLCBwdHNbMV0uZlggKyB3aWR0aCwgcHRzWzFdLmZZICsgd2lkdGgpOworICAgICAgICByMS5z
ZXQocDEueCgpLCBwMS55KCksIHAxLngoKSArIHdpZHRoLCBwMS55KCkgKyB3aWR0aCk7CisgICAg
ICAgIHIyLnNldChwMi54KCksIHAyLnkoKSwgcDIueCgpICsgd2lkdGgsIHAyLnkoKSArIHdpZHRo
KTsKIAogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgIHIxLm9mZnNl
dCgtd2lkdGggLyAyLCAwKTsKQEAgLTU1MywzNSArNTU1LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9p
bnQyKQogICAgICAgICBmaWxsUGFpbnQuc2V0Q29sb3IocGFpbnQuZ2V0Q29sb3IoKSk7CiAgICAg
ICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJhd1JlY3QocjEsIGZpbGxQYWludCk7
CiAgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJhd1JlY3QocjIsIGZpbGxQ
YWludCk7Ci0KLSAgICAgICAgLy8gU2luY2Ugd2UndmUgYWxyZWFkeSByZW5kZXJlZCB0aGUgZW5k
Y2FwcywgYWRqdXN0IHRoZSBlbmRwb2ludHMgdG8KLSAgICAgICAgLy8gZXhjbHVkZSB0aGVtIGZy
b20gdGhlIGxpbmUgaXRzZWxmLgotICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKLSAgICAg
ICAgICAgIHB0c1swXS5mWSArPSB3aWR0aDsKLSAgICAgICAgICAgIHB0c1sxXS5mWSAtPSB3aWR0
aDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB0c1swXS5mWCArPSB3aWR0aDsKLSAg
ICAgICAgICAgIHB0c1sxXS5mWCAtPSB3aWR0aDsKLSAgICAgICAgfQogICAgIH0KIAotICAgIC8v
ICJCb3Jyb3dlZCIgdGhpcyBjb21tZW50IGFuZCBpZGVhIGZyb20gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCi0gICAgLy8KLSAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGluIDAuNSB0byB0aGUg
YXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0Ci0gICAgLy8gYXJpdGhtZXRpYyB3b3Jr
cyBvdXQuICBGb3IgZXhhbXBsZSwgd2l0aCBhIGJvcmRlciB3aWR0aCBvZiAzLCBLSFRNTCB3aWxs
Ci0gICAgLy8gcGFzcyB1cyAoeTEreTIpLzIsIGUuZy4sICg1MCs1MykvMiA9IDEwMy8yID0gNTEg
d2hlbiB3ZSB3YW50IDUxLjUuICBJdCBpcwotICAgIC8vIGFsd2F5cyB0cnVlIHRoYXQgYW4gZXZl
biB3aWR0aCBnYXZlIHVzIGEgcGVyZmVjdCBwb3NpdGlvbiwgYnV0IGFuIG9kZAotICAgIC8vIHdp
ZHRoIGdhdmUgdXMgYSBwb3NpdGlvbiB0aGF0IGlzIG9mZiBieSBleGFjdGx5IDAuNS4KKyAgICBh
ZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0aCwgcGVuU3R5bGUpOworICAg
IFNrUG9pbnQgcHRzWzJdID0geyAoU2tQb2ludClwMSwgKFNrUG9pbnQpcDIgfTsKIAotICAgIGlm
ICh3aWR0aCAmIDEpIHsgIC8vIE9kZC4KLSAgICAgICAgaWYgKGlzVmVydGljYWxMaW5lKSB7Ci0g
ICAgICAgICAgICBwdHNbMF0uZlggPSBwdHNbMF0uZlggKyBTS19TY2FsYXJIYWxmOwotICAgICAg
ICAgICAgcHRzWzFdLmZYID0gcHRzWzBdLmZYOwotICAgICAgICB9IGVsc2UgeyAgLy8gSG9yaXpv
bnRhbCBsaW5lCi0gICAgICAgICAgICBwdHNbMF0uZlkgPSBwdHNbMF0uZlkgKyBTS19TY2FsYXJI
YWxmOwotICAgICAgICAgICAgcHRzWzFdLmZZID0gcHRzWzBdLmZZOwotICAgICAgICB9Ci0gICAg
fQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJhd1BvaW50cyhTa0NhbnZhczo6
a0xpbmVzX1BvaW50TW9kZSwgMiwgcHRzLCBwYWludCk7CiB9CiAKLS0gCjEuNi40LjE4LmcwN2E0
YQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34843</attachid>
            <date>2009-08-14 08:29:18 -0700</date>
            <delta_ts>2009-08-18 23:31:33 -0700</delta_ts>
            <desc>Style patch for GraphicsContextSkia.cpp</desc>
            <filename>0001-Style-update-for-GraphicsContextSkia.cpp.patch</filename>
            <type>text/plain</type>
            <size>4465</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA5MDAwZGMxYmFmNjdiM2I0NjlhOWFkMzZjM2YyOTdmZjIzOGQ2N2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDA5OjMyOjA5IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gU3R5bGUgdXBkYXRlIGZvciBHcmFwaGljc0NvbnRleHRTa2lhLmNwcC4KCi0tLQogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysr
KysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcCB8ICAgMjIgKysrKysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5z
ZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOWVhMGNkLi41ZjZlOTk3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDA5LTA4LTE0ICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHls
ZSBmaXhlcyBiYXNlZCBvbiBjcHBfc3R5bGUucHkgYW5kIFdlYktpdCBTdHlsZSBndWlkZSBmb3IK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjgKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lRGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAwOS0wOC0xMyAgTWlrZSBGZW50b24g
IDxtaWtlLmZlbnRvbkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggZWJjYWVhNS4uZjQyNGRjYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGUuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
Q29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTQ2LDkgKzQ2
LDkgQEAKICNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2luY2x1ZGUgIlNrQmx1ckRyYXdMb29wZXIu
aCIKICNpbmNsdWRlICJTa0Nvcm5lclBhdGhFZmZlY3QuaCIKLSNpbmNsdWRlICJza2lhL2V4dC9w
bGF0Zm9ybV9jYW52YXMuaCIKLSNpbmNsdWRlICJTa2lhVXRpbHMuaCIKICNpbmNsdWRlICJTa1No
YWRlci5oIgorI2luY2x1ZGUgIlNraWFVdGlscy5oIgorI2luY2x1ZGUgInNraWEvZXh0L3BsYXRm
b3JtX2NhbnZhcy5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVy
Um91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0aGlja25lc3MKICAgICBw
YXRoLmFkZE92YWwociwgU2tQYXRoOjprQ1dfRGlyZWN0aW9uKTsKICAgICAvLyBvbmx5IHBlcmZv
cm0gdGhlIGluc2V0IGlmIHdlIHdvbid0IGludmVydCByCiAgICAgaWYgKDIgKiB0aGlja25lc3Mg
PCByZWN0LndpZHRoKCkgJiYgMiAqIHRoaWNrbmVzcyA8IHJlY3QuaGVpZ2h0KCkpIHsKLSAgICAg
ICAgci5pbnNldChTa0ludFRvU2NhbGFyKHRoaWNrbmVzcykgLFNrSW50VG9TY2FsYXIodGhpY2tu
ZXNzKSk7CisgICAgICAgIHIuaW5zZXQoU2tJbnRUb1NjYWxhcih0aGlja25lc3MpLCBTa0ludFRv
U2NhbGFyKHRoaWNrbmVzcykpOwogICAgICAgICBwYXRoLmFkZE92YWwociwgU2tQYXRoOjprQ0NX
X0RpcmVjdGlvbik7CiAgICAgfQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+Y2xp
cFBhdGgocGF0aCk7CkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdGb2N1c1JpbmcoY29uc3QgQ29sb3ImIGNvbG9yKQogCiAgICAgY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiByZWN0cyA9IGZvY3VzUmluZ1JlY3RzKCk7CiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0g
cmVjdHMuc2l6ZSgpOwotICAgIGlmICgwID09IHJlY3RDb3VudCkKKyAgICBpZiAoIXJlY3RDb3Vu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2tSZWdpb24gZm9jdXNSaW5nUmVnaW9uOwpAQCAt
ODIyLDkgKzgyMiw5IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQ
aXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGRldmljZUxvd2VyUmlnaHQuc2V0WShy
b3VuZGYoZGV2aWNlTG93ZXJSaWdodC55KCkpKTsKIAogICAgIC8vIERvbid0IGxldCB0aGUgaGVp
Z2h0IG9yIHdpZHRoIHJvdW5kIHRvIDAgdW5sZXNzIGVpdGhlciB3YXMgb3JpZ2luYWxseSAwCi0g
ICAgaWYgKGRldmljZU9yaWdpbi55KCkgPT0gZGV2aWNlTG93ZXJSaWdodC55KCkgJiYgcmVjdC5o
ZWlnaHQoKSAhPSAwKQorICAgIGlmIChkZXZpY2VPcmlnaW4ueSgpID09IGRldmljZUxvd2VyUmln
aHQueSgpICYmIHJlY3QuaGVpZ2h0KCkpCiAgICAgICAgIGRldmljZUxvd2VyUmlnaHQubW92ZSgw
LCAxKTsKLSAgICBpZiAoZGV2aWNlT3JpZ2luLngoKSA9PSBkZXZpY2VMb3dlclJpZ2h0LngoKSAm
JiByZWN0LndpZHRoKCkgIT0gMCkKKyAgICBpZiAoZGV2aWNlT3JpZ2luLngoKSA9PSBkZXZpY2VM
b3dlclJpZ2h0LngoKSAmJiByZWN0LndpZHRoKCkpCiAgICAgICAgIGRldmljZUxvd2VyUmlnaHQu
bW92ZSgxLCAwKTsKIAogICAgIEZsb2F0UG9pbnQgcm91bmRlZE9yaWdpbihkZXZpY2VPcmlnaW4u
eCgpIC8gZGV2aWNlU2NhbGVYLApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNl
dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNpemVfdCBjb3VudCA9IChkYXNoTGVu
Z3RoICUgMikgPT0gMCA/IGRhc2hMZW5ndGggOiBkYXNoTGVuZ3RoICogMjsKKyAgICBzaXplX3Qg
Y291bnQgPSAhKGRhc2hMZW5ndGggJSAyKSA/IGRhc2hMZW5ndGggOiBkYXNoTGVuZ3RoICogMjsK
ICAgICBTa1NjYWxhciogaW50ZXJ2YWxzID0gbmV3IFNrU2NhbGFyW2NvdW50XTsKIAogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKQEAgLTk2OCw4ICs5NjgsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYg
c2l6ZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRGV0ZWN0IHdoZW4gdGhlcmUncyBubyBl
ZmZlY3RpdmUgc2hhZG93IGFuZCBjbGVhciB0aGUgbG9vcGVyLgotICAgIGlmIChzaXplLndpZHRo
KCkgPT0gMCAmJiBzaXplLmhlaWdodCgpID09IDAgJiYgYmx1ckludCA9PSAwKSB7Ci0gICAgICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5zZXREcmF3TG9vcGVyKE5VTEwpOworICAgIGlmICghc2l6ZS53
aWR0aCgpICYmICFzaXplLmhlaWdodCgpICYmICFibHVySW50KSB7CisgICAgICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zZXREcmF3TG9vcGVyKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0t
IAoxLjYuNC4xOC5nMDdhNGEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34865</attachid>
            <date>2009-08-14 11:51:35 -0700</date>
            <delta_ts>2009-08-18 07:17:54 -0700</delta_ts>
            <desc>Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp.</desc>
            <filename>0001-Refactor-patternWidth-and-patternOffset.patch</filename>
            <type>text/plain</type>
            <size>14890</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA1Yjg2OGY3MTQ1YTk4YTUyNWY1OGIwYTUxYWZiYjc1NTdkOGNjMjRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDExOjM4OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gUmVmYWN0b3IgcGF0dGVybldpZHRoIGFuZCBwYXR0ZXJuT2Zmc2V0LgoKLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysr
CiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgICB8ICAg
NDMgKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oICAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcCAgICAgICAgfCAgIDcwICsrLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIHwgICA3MyArKy0tLS0tLS0tLS0t
LS0tLS0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHAgfCAgIDQyICstLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCsp
LCAxNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1ZjZlOTk3Li4zNjY3NWEyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDA5
LTA4LTE0ICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBwYXR0
ZXJuV2lkdGggYW5kIHBhdHRlcm5PZmZzZXQgY2FsY3VsYXRpb25zIG91dCBvZiBHcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGFuZCBHcmFwaGlj
c0NvbnRleHRRdC5jcHAgaW50byBHcmFwaGljc0NvbnRleHQuY3BwLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2OAorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGF0dGVybldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGF0dGVybk9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisKIDIwMDktMDgtMTMgIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjQ3MTg1LCB0aGUgZml4IGZvciA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MTg1PiwgYXMgaXQgYnJva2UgdGhl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
YTMxNDM2Ni4uOWI4YzcyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNTc1LDQgKzU3NSw0NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBw
MgogICAgIH0KIH0KIAoraW50IEdyYXBoaWNzQ29udGV4dDo6cGF0dGVybldpZHRoKGZsb2F0IHN0
cm9rZVdpZHRoLCBjb25zdCBTdHJva2VTdHlsZSYgc3Ryb2tlU3R5bGUpCit7CisgICAgaWYgKHN0
cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oc3Ryb2tlV2lkdGgpOworCisgICAgaWYgKHN0cm9rZVN0eWxlID09IERhc2hlZFN0cm9rZSkK
KyAgICAgICAgcmV0dXJuIDMgKiBzdGF0aWNfY2FzdDxpbnQ+KHN0cm9rZVdpZHRoKTsKKworICAg
IHJldHVybiAwOworfQorCitmbG9hdCBHcmFwaGljc0NvbnRleHQ6OnBhdHRlcm5PZmZzZXQoaW50
IHdpZHRoLCBpbnQgZGlzdGFuY2UpCit7CisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgcmV0dXJu
IDAuMGY7CisKKyAgICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVl
ZC4KKyAgICBpZiAod2lkdGggPT0gMSkKKyAgICAgICAgcmV0dXJuIDEuMGY7CisKKyAgICAvLyBF
eGFtcGxlOiA4MCBwaXhlbHMgd2l0aCBhIHdpZHRoIG9mIDMwIHBpeGVscy4KKyAgICAvLyBSZW1h
aW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAor
ICAgIC8vIHdpbGwgYmUgNTAgcGl4ZWxzLgorICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAl
IHdpZHRoOworICAgIGludCBudW1TZWdtZW50cyA9IChkaXN0YW5jZSAtIHJlbWFpbmRlcikgLyB3
aWR0aDsKKworICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUg
Mik7CisgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgZXZlbk51bWJlck9mU2VnbWVudHMgPSAh
ZXZlbk51bWJlck9mU2VnbWVudHM7CisKKyAgICBpZiAoZXZlbk51bWJlck9mU2VnbWVudHMpIHsK
KyAgICAgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgICAgIHJldHVybiB3aWR0aCAtIChyZW1h
aW5kZXIgLyAyKTsKKworICAgICAgICByZXR1cm4gd2lkdGggLyAyOworICAgIH0KKworICAgIGlm
IChyZW1haW5kZXIpCisgICAgICAgIHJldHVybiAod2lkdGggLSByZW1haW5kZXIpIC8gMjsKKwor
ICAgIHJldHVybiAwLjBmOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAppbmRleCBlMGQ5Mjk0Li4yNDM1OGUxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxMiw2ICs0MTIsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwogCiAgICAg
ICAgIHN0YXRpYyB2b2lkIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBw
MSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBjb25zdCBTdHJva2VTdHlsZSYp
OworICAgICAgICBzdGF0aWMgaW50IHBhdHRlcm5XaWR0aChmbG9hdCBzdHJva2VXaWR0aCwgY29u
c3QgU3Ryb2tlU3R5bGUmKTsKKyAgICAgICAgc3RhdGljIGZsb2F0IHBhdHRlcm5PZmZzZXQoaW50
IHdpZHRoLCBpbnQgZGlzdGFuY2UpOwogCiAgICAgICAgIGludCBmb2N1c1JpbmdXaWR0aCgpIGNv
bnN0OwogICAgICAgICBpbnQgZm9jdXNSaW5nT2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CmluZGV4IGRlOGFmYjMuLmQ0NmIwYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNjYsMTkgKzE2
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9p
bnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIGFkanVzdExpbmVUb1BpeGVsQm91bmRh
cmllcyhwMSwgcDIsIHdpZHRoLCBzdHlsZSk7CiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3Is
IHdpZHRoKTsKIAotICAgIGludCBwYXRXaWR0aCA9IDA7Ci0gICAgc3dpdGNoIChzdHlsZSkgewot
ICAgIGNhc2UgTm9TdHJva2U6Ci0gICAgY2FzZSBTb2xpZFN0cm9rZToKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgIHBhdFdpZHRoID0gc3RhdGljX2Nhc3Q8
aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAg
ICAgICBwYXRXaWR0aCA9IDMqc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQorICAgIGludCBwYXRXaWR0aCA9IHBhdHRlcm5XaWR0aCh3aWR0aCwgc3R5bGUp
OwogICAgIHNldENvbG9yKGNyLCBzdHJva2VDb2xvcigpKTsKIAogICAgIGNhaXJvX3NldF9hbnRp
YWxpYXMoY3IsIENBSVJPX0FOVElBTElBU19OT05FKTsKQEAgLTE5NCwzNiArMTgyLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25z
dCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICAgICAgZmlsbFJlY3RTb3VyY2VPdmVyKGNyLCBG
bG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0aC8yLCB3aWR0aCwgd2lkdGgpLCBzdHJva2VD
b2xvcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRo
IGEgd2lkdGggb2YgMzAgcGl4ZWxzLgotICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUg
bWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAotICAgICAgICAvLyB3aWxsIGJl
IDUwIHBpeGVscy4KICAgICAgICAgaW50IGRpc3RhbmNlID0gKGlzVmVydGljYWxMaW5lID8gKHBv
aW50Mi55KCkgLSBwb2ludDEueSgpKSA6IChwb2ludDIueCgpIC0gcG9pbnQxLngoKSkpIC0gMipz
dGF0aWNfY2FzdDxpbnQ+KHdpZHRoKTsKLSAgICAgICAgaW50IHJlbWFpbmRlciA9IGRpc3RhbmNl
JXBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZS1yZW1haW5kZXI7Ci0g
ICAgICAgIGludCBudW1TZWdtZW50cyA9IGNvdmVyYWdlL3BhdFdpZHRoOwotCi0gICAgICAgIGZs
b2F0IHBhdHRlcm5PZmZzZXQgPSAwOwotICAgICAgICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRl
ZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAgICAgaWYgKHBhdFdpZHRoID09IDEpCi0gICAgICAg
ICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJv
b2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAg
ICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0g
IWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21l
bnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAg
ICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAg
ICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlciAvIDI7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDI7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFldmVuTnVtYmVyT2ZTZWdtZW50cykgewotICAgICAg
ICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZz
ZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpIC8gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQorICAgICAgICBmbG9hdCBwYXRPZmZzZXQgPSBwYXR0ZXJuT2Zmc2V0KHBhdFdpZHRoLCBkaXN0
YW5jZSk7CiAKICAgICAgICAgZG91YmxlIGRhc2ggPSBwYXRXaWR0aDsKLSAgICAgICAgY2Fpcm9f
c2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXR0ZXJuT2Zmc2V0KTsKKyAgICAgICAgY2Fpcm9fc2V0
X2Rhc2goY3IsICZkYXNoLCAxLCBwYXRPZmZzZXQpOwogICAgIH0KIAogICAgIGNhaXJvX21vdmVf
dG8oY3IsIHAxLngoKSwgcDEueSgpKTsKQEAgLTMxNiwzMiArMjc5LDkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwg
aW50IGFuZ2xlU3AKICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxsaXB0aWNhbCBhbmQgd2lsbCBo
YXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAgICAgICAgICAgZGlzdGFuY2UgPSBzdGF0
aWNfY2FzdDxpbnQ+KChNX1BJICogc3FydGYoKGhSYWRpdXMgKiBoUmFkaXVzICsgdlJhZGl1cyAq
IHZSYWRpdXMpIC8gMi4wKSkgLyAyLjApOwogCi0gICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0
YW5jZSAlIHBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFp
bmRlcjsKLSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKLQot
ICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMC4wOwotICAgICAgICAvLyBTcGVjaWFsIGNh
c2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAgICAgaWYgKHBhdFdpZHRoID09
IDEpCi0gICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7
Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJP
ZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAgICAgICAgICAgaWYgKGV2ZW5O
dW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewotICAg
ICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwot
ICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlciAvIDIuMDsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9
IHBhdFdpZHRoIC8gMi4wOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gKHBhdFdp
ZHRoIC0gcmVtYWluZGVyKSAvIDIuMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCisgICAg
ICAgIGZsb2F0IHBhdE9mZnNldCA9IHBhdHRlcm5PZmZzZXQocGF0V2lkdGgsIGRpc3RhbmNlKTsK
ICAgICAgICAgZG91YmxlIGRhc2ggPSBwYXRXaWR0aDsKLSAgICAgICAgY2Fpcm9fc2V0X2Rhc2go
Y3IsICZkYXNoLCAxLCBwYXR0ZXJuT2Zmc2V0KTsKKyAgICAgICAgY2Fpcm9fc2V0X2Rhc2goY3Is
ICZkYXNoLCAxLCBwYXRPZmZzZXQpOwogICAgIH0KIAogICAgIGNhaXJvX3N0cm9rZShjcik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CmluZGV4IGNmOGI5MDMuLmFmZDhiYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNDIsNyArMTQyLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IElu
dFBvaW50JiBwb2ludDIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCisgICAgU3Ryb2tlU3R5
bGUgc3R5bGUgPSBzdHJva2VTdHlsZSgpOworICAgIGlmIChzdHlsZSA9PSBOb1N0cm9rZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgd2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKQEAg
LTE1MywxOSArMTU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAKICAgICBhZGp1c3RMaW5l
VG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0aCwgc3R5bGUpOwogCi0gICAgaW50IHBhdFdp
ZHRoID0gMDsKLSAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICBjYXNlIE5vU3Ryb2tl
OgotICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG90dGVk
U3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IChpbnQpd2lkdGg7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IDMgKiAoaW50KXdpZHRo
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICBpbnQgcGF0V2lkdGggPSBwYXR0ZXJuV2lk
dGgod2lkdGgsIHN0eWxlKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKQpAQCAtMTg1LDM2ICsxNzQsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEs
IGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChj
b250ZXh0LCBGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0aCAvIDIsIHdpZHRoLCB3aWR0
aCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRXhhbXBsZTogODAgcGl4ZWxzIHdpdGggYSB3
aWR0aCBvZiAzMCBwaXhlbHMuCi0gICAgICAgIC8vIFJlbWFpbmRlciBpcyAyMC4gIFRoZSBtYXhp
bXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50Ci0gICAgICAgIC8vIHdpbGwgYmUgNTAg
cGl4ZWxzLgogICAgICAgICBpbnQgZGlzdGFuY2UgPSAoaXNWZXJ0aWNhbExpbmUgPyAocG9pbnQy
LnkoKSAtIHBvaW50MS55KCkpIDogKHBvaW50Mi54KCkgLSBwb2ludDEueCgpKSkgLSAyKihpbnQp
d2lkdGg7Ci0gICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBhdFdpZHRoOwotICAg
ICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKLSAgICAgICAgaW50IG51
bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKLQotICAgICAgICBmbG9hdCBwYXR0ZXJu
T2Zmc2V0ID0gMC4wZjsKLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlIDFweCBkb3R0ZWQgYm9yZGVy
cyBmb3Igc3BlZWQuCi0gICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQotICAgICAgICAgICAgcGF0
dGVybk9mZnNldCA9IDEuMGY7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBldmVu
TnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKLSAgICAgICAgICAgIGlmIChy
ZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhZXZlbk51
bWJlck9mU2VnbWVudHM7Ci0gICAgICAgICAgICBpZiAoZXZlbk51bWJlck9mU2VnbWVudHMpIHsK
LSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBh
dHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSByZW1haW5kZXI7Ci0gICAgICAgICAgICAgICAgICAg
IHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKLSAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMjsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAgICAgICAg
ICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAtIHJlbWFpbmRlcikvMjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmbG9hdCBwYXRPZmZzZXQgPSBwYXR0ZXJu
T2Zmc2V0KHBhdFdpZHRoLCBkaXN0YW5jZSk7CiAKICAgICAgICAgY29uc3QgQ0dGbG9hdCBkb3R0
ZWRMaW5lWzJdID0geyBwYXRXaWR0aCwgcGF0V2lkdGggfTsKLSAgICAgICAgQ0dDb250ZXh0U2V0
TGluZURhc2goY29udGV4dCwgcGF0dGVybk9mZnNldCwgZG90dGVkTGluZSwgMik7CisgICAgICAg
IENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdE9mZnNldCwgZG90dGVkTGluZSwgMik7
CiAgICAgfQogCiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwpAQCAtMzA2LDMyICsy
NzAsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgICAgICBlbHNlIC8vIFdlIGFyZSBl
bGxpcHRpY2FsIGFuZCB3aWxsIGhhdmUgdG8gZXN0aW1hdGUgdGhlIGRpc3RhbmNlCiAgICAgICAg
ICAgICBkaXN0YW5jZSA9IHN0YXRpY19jYXN0PGludD4oKHBpRmxvYXQgKiBzcXJ0ZigoaFJhZGl1
cyAqIGhSYWRpdXMgKyB2UmFkaXVzICogdlJhZGl1cykgLyAyLjBmKSkgLyAyLjBmKTsKIAotICAg
ICAgICBpbnQgcmVtYWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0aDsKLSAgICAgICAgaW50IGNv
dmVyYWdlID0gZGlzdGFuY2UgLSByZW1haW5kZXI7Ci0gICAgICAgIGludCBudW1TZWdtZW50cyA9
IGNvdmVyYWdlIC8gcGF0V2lkdGg7Ci0KLSAgICAgICAgZmxvYXQgcGF0dGVybk9mZnNldCA9IDAu
MGY7Ci0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVk
LgotICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKLSAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQg
PSAxLjBmOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2Vn
bWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQot
ICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21l
bnRzOwotICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0
ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zm
c2V0ICs9IHJlbWFpbmRlciAvIDIuMGY7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDIuMGY7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpIC8gMi4wZjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCisgICAgICAgIGZsb2F0IHBhdE9mZnNldCA9IHBhdHRl
cm5PZmZzZXQocGF0V2lkdGgsIGRpc3RhbmNlKTsKICAgICAgICAgY29uc3QgQ0dGbG9hdCBkb3R0
ZWRMaW5lWzJdID0geyBwYXRXaWR0aCwgcGF0V2lkdGggfTsKLSAgICAgICAgQ0dDb250ZXh0U2V0
TGluZURhc2goY29udGV4dCwgcGF0dGVybk9mZnNldCwgZG90dGVkTGluZSwgMik7CisgICAgICAg
IENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdE9mZnNldCwgZG90dGVkTGluZSwgMik7
CiAgICAgfQogCiAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggNWUw
NGI4NS4uZThhNGFjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTQ2MywxOCArNDYzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBw
b2ludDIpCiAgICAgICAgIHAtPnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICBpbnQgcGF0V2lkdGgg
PSAwOwotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIE5vU3Ryb2tlOgotICAgIGNhc2Ug
U29saWRTdHJva2U6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAg
ICAgICBwYXRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4od2lkdGgpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgcGF0V2lkdGggPSAzICogc3RhdGljX2Nh
c3Q8aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBpbnQgcGF0V2lkdGgg
PSBwYXR0ZXJuV2lkdGgod2lkdGgsIHN0eWxlKTsKIAogICAgIGlmIChwYXRXaWR0aCkgewogICAg
ICAgICBwLT5zYXZlKCk7CkBAIC00ODksMzMgKzQ3OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQy
KQogICAgICAgICAgICAgcC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHAyLngoKSwgcDIueSgpIC0gd2lk
dGggLyAyLCB3aWR0aCwgd2lkdGgpLCBRQ29sb3IoY29sb3IpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLgotICAg
ICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBj
b3VsZCBwYWludAotICAgICAgICAvLyB3aWxsIGJlIDUwIHBpeGVscy4KICAgICAgICAgaW50IGRp
c3RhbmNlID0gKGlzVmVydGljYWxMaW5lID8gKHBvaW50Mi55KCkgLSBwb2ludDEueSgpKSA6IChw
b2ludDIueCgpIC0gcG9pbnQxLngoKSkpIC0gMiooaW50KXdpZHRoOwotICAgICAgICBpbnQgcmVt
YWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0aDsKLSAgICAgICAgaW50IGNvdmVyYWdlID0gZGlz
dGFuY2UgLSByZW1haW5kZXI7Ci0gICAgICAgIGludCBudW1TZWdtZW50cyA9IGNvdmVyYWdlIC8g
cGF0V2lkdGg7Ci0KLSAgICAgICAgZmxvYXQgcGF0dGVybk9mZnNldCA9IDAuMGY7Ci0gICAgICAg
IC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVkLgotICAgICAgICBp
ZiAocGF0V2lkdGggPT0gMSkKLSAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAxLjBmOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51
bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAg
ICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAgICAg
ICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJl
bWFpbmRlcikgewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRo
IC0gcmVtYWluZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFp
bmRlciAvIDI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBh
dHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZz
ZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpLzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICAgICAgZmxvYXQgcGF0T2Zmc2V0ID0gcGF0dGVybk9mZnNldChwYXRXaWR0aCwgZGlzdGFu
Y2UpOwogCiAgICAgICAgIFFWZWN0b3I8cXJlYWw+IGRhc2hlczsKICAgICAgICAgZGFzaGVzIDw8
IHFyZWFsKHBhdFdpZHRoKSAvIHdpZHRoIDw8IHFyZWFsKHBhdFdpZHRoKSAvIHdpZHRoOwpAQCAt
NTI0LDcgKzQ4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQ
b2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICBwZW4uc2V0V2lk
dGhGKHdpZHRoKTsKICAgICAgICAgcGVuLnNldENhcFN0eWxlKFF0OjpGbGF0Q2FwKTsKICAgICAg
ICAgcGVuLnNldERhc2hQYXR0ZXJuKGRhc2hlcyk7Ci0gICAgICAgIHBlbi5zZXREYXNoT2Zmc2V0
KHBhdHRlcm5PZmZzZXQgLyB3aWR0aCk7CisgICAgICAgIHBlbi5zZXREYXNoT2Zmc2V0KHBhdE9m
ZnNldCAvIHdpZHRoKTsKICAgICAgICAgcC0+c2V0UGVuKHBlbik7CiAgICAgfQogCi0tIAoxLjYu
NC4xOC5nMDdhNGEKCg==
</data>
<flag name="review"
          id="19059"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35040</attachid>
            <date>2009-08-18 07:17:54 -0700</date>
            <delta_ts>2009-08-18 09:00:34 -0700</delta_ts>
            <desc>Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.</desc>
            <filename>0001-Refactor-patternWidthForDashes-and-patternOffsetForD.patch</filename>
            <type>text/plain</type>
            <size>14908</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBkZTVhZGQ0OGQzYjYwODEzODUxNDQzNzJkYTc2MjI5NzVmMjAwY2ExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDExOjM4OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gUmVmYWN0b3IgcGF0dGVybldpZHRoRm9yRGFzaGVzIGFuZCBwYXR0ZXJuT2Zmc2V0Rm9yRGFz
aGVzLgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjIgKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgICAgICB8ICAgNDMgKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAgfCAgIDcwICsrLS0tLS0tLS0tLS0tLS0t
LS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIHwg
ICA3MyArKy0tLS0tLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAgfCAgIDQyICstLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2Vk
LCA4MiBpbnNlcnRpb25zKCspLCAxNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZjZlOTk3Li4zNjY3NWEyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDA5LTA4LTE0ICBNaWtlIEZlbnRvbiAgPG1pa2UuZmVudG9uQHRvcmNo
bW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBwYXR0ZXJuV2lkdGggYW5kIHBhdHRlcm5PZmZzZXQgY2FsY3VsYXRpb25z
IG91dCBvZiBHcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
Q0cuY3BwIGFuZCBHcmFwaGljc0NvbnRleHRRdC5jcHAgaW50byBHcmFwaGljc0NvbnRleHQuY3Bw
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2
OAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGF0dGVybldpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGF0dGVybk9mZnNldCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUFyYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisKIDIwMDktMDgtMTMg
IE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjQ3MTg1LCB0
aGUgZml4IGZvciA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MTg1
PiwgYXMgaXQgYnJva2UgdGhlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggYTMxNDM2Ni4uOWI4YzcyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTc1LDQgKzU3NSw0NyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQm
IHAxLCBGbG9hdFBvaW50JiBwMgogICAgIH0KIH0KIAoraW50IEdyYXBoaWNzQ29udGV4dDo6cGF0
dGVybldpZHRoKGZsb2F0IHN0cm9rZVdpZHRoLCBjb25zdCBTdHJva2VTdHlsZSYgc3Ryb2tlU3R5
bGUpCit7CisgICAgaWYgKHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oc3Ryb2tlV2lkdGgpOworCisgICAgaWYgKHN0cm9rZVN0eWxl
ID09IERhc2hlZFN0cm9rZSkKKyAgICAgICAgcmV0dXJuIDMgKiBzdGF0aWNfY2FzdDxpbnQ+KHN0
cm9rZVdpZHRoKTsKKworICAgIHJldHVybiAwOworfQorCitmbG9hdCBHcmFwaGljc0NvbnRleHQ6
OnBhdHRlcm5PZmZzZXQoaW50IHdpZHRoLCBpbnQgZGlzdGFuY2UpCit7CisgICAgaWYgKCF3aWR0
aCkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRl
ZCBib3JkZXJzIGZvciBzcGVlZC4KKyAgICBpZiAod2lkdGggPT0gMSkKKyAgICAgICAgcmV0dXJu
IDEuMGY7CisKKyAgICAvLyBFeGFtcGxlOiA4MCBwaXhlbHMgd2l0aCBhIHdpZHRoIG9mIDMwIHBp
eGVscy4KKyAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGlu
ZSB3ZSBjb3VsZCBwYWludAorICAgIC8vIHdpbGwgYmUgNTAgcGl4ZWxzLgorICAgIGludCByZW1h
aW5kZXIgPSBkaXN0YW5jZSAlIHdpZHRoOworICAgIGludCBudW1TZWdtZW50cyA9IChkaXN0YW5j
ZSAtIHJlbWFpbmRlcikgLyB3aWR0aDsKKworICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMg
PSAhKG51bVNlZ21lbnRzICUgMik7CisgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgZXZlbk51
bWJlck9mU2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7CisKKyAgICBpZiAoZXZlbk51
bWJlck9mU2VnbWVudHMpIHsKKyAgICAgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgICAgIHJl
dHVybiB3aWR0aCAtIChyZW1haW5kZXIgLyAyKTsKKworICAgICAgICByZXR1cm4gd2lkdGggLyAy
OworICAgIH0KKworICAgIGlmIChyZW1haW5kZXIpCisgICAgICAgIHJldHVybiAod2lkdGggLSBy
ZW1haW5kZXIpIC8gMjsKKworICAgIHJldHVybiAwLjBmOworfQorCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBlMGQ5Mjk0Li4yNDM1OGUxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxMiw2
ICs0MTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9y
bVNoYWRvdygpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGFkanVzdExpbmVUb1BpeGVsQm91bmRh
cmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBj
b25zdCBTdHJva2VTdHlsZSYpOworICAgICAgICBzdGF0aWMgaW50IHBhdHRlcm5XaWR0aChmbG9h
dCBzdHJva2VXaWR0aCwgY29uc3QgU3Ryb2tlU3R5bGUmKTsKKyAgICAgICAgc3RhdGljIGZsb2F0
IHBhdHRlcm5PZmZzZXQoaW50IHdpZHRoLCBpbnQgZGlzdGFuY2UpOwogCiAgICAgICAgIGludCBm
b2N1c1JpbmdXaWR0aCgpIGNvbnN0OwogICAgICAgICBpbnQgZm9jdXNSaW5nT2Zmc2V0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGRlOGFmYjMuLmQ0NmIwYWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC0xNjYsMTkgKzE2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShj
b25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIGFkanVz
dExpbmVUb1BpeGVsQm91bmRhcmllcyhwMSwgcDIsIHdpZHRoLCBzdHlsZSk7CiAgICAgY2Fpcm9f
c2V0X2xpbmVfd2lkdGgoY3IsIHdpZHRoKTsKIAotICAgIGludCBwYXRXaWR0aCA9IDA7Ci0gICAg
c3dpdGNoIChzdHlsZSkgewotICAgIGNhc2UgTm9TdHJva2U6Ci0gICAgY2FzZSBTb2xpZFN0cm9r
ZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgIHBhdFdp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RGFzaGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IDMqc3RhdGljX2Nhc3Q8aW50Pih3aWR0
aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQorICAgIGludCBwYXRXaWR0aCA9IHBhdHRlcm5X
aWR0aCh3aWR0aCwgc3R5bGUpOwogICAgIHNldENvbG9yKGNyLCBzdHJva2VDb2xvcigpKTsKIAog
ICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3IsIENBSVJPX0FOVElBTElBU19OT05FKTsKQEAgLTE5
NCwzNiArMTgyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQ
b2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICAgICAgZmlsbFJl
Y3RTb3VyY2VPdmVyKGNyLCBGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0aC8yLCB3aWR0
aCwgd2lkdGgpLCBzdHJva2VDb2xvcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEV4YW1w
bGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLgotICAgICAgICAvLyBSZW1h
aW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAot
ICAgICAgICAvLyB3aWxsIGJlIDUwIHBpeGVscy4KICAgICAgICAgaW50IGRpc3RhbmNlID0gKGlz
VmVydGljYWxMaW5lID8gKHBvaW50Mi55KCkgLSBwb2ludDEueSgpKSA6IChwb2ludDIueCgpIC0g
cG9pbnQxLngoKSkpIC0gMipzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKTsKLSAgICAgICAgaW50IHJl
bWFpbmRlciA9IGRpc3RhbmNlJXBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0
YW5jZS1yZW1haW5kZXI7Ci0gICAgICAgIGludCBudW1TZWdtZW50cyA9IGNvdmVyYWdlL3BhdFdp
ZHRoOwotCi0gICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSAwOwotICAgICAgICAvLyBTcGVj
aWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAgICAgaWYgKHBhdFdp
ZHRoID09IDEpCi0gICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRz
ICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgIGV2ZW5O
dW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAgICAgICAgICAgaWYg
KGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikg
ewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWlu
ZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlciAvIDI7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZz
ZXQgPSBwYXRXaWR0aCAvIDI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFldmVuTnVtYmVyT2ZT
ZWdtZW50cykgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpIC8gMjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmbG9hdCBwYXRPZmZzZXQgPSBwYXR0ZXJuT2Zm
c2V0KHBhdFdpZHRoLCBkaXN0YW5jZSk7CiAKICAgICAgICAgZG91YmxlIGRhc2ggPSBwYXRXaWR0
aDsKLSAgICAgICAgY2Fpcm9fc2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXR0ZXJuT2Zmc2V0KTsK
KyAgICAgICAgY2Fpcm9fc2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXRPZmZzZXQpOwogICAgIH0K
IAogICAgIGNhaXJvX21vdmVfdG8oY3IsIHAxLngoKSwgcDEueSgpKTsKQEAgLTMxNiwzMiArMjc5
LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0
LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxs
aXB0aWNhbCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAgICAgICAg
ICAgZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChNX1BJICogc3FydGYoKGhSYWRpdXMgKiBo
UmFkaXVzICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wKSkgLyAyLjApOwogCi0gICAgICAgIGlu
dCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2Ug
PSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKLSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJh
Z2UgLyBwYXRXaWR0aDsKLQotICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMC4wOwotICAg
ICAgICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAg
ICAgaWYgKHBhdFdpZHRoID09IDEpCi0gICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAh
KG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAg
ICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAg
ICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdp
ZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJl
bWFpbmRlciAvIDIuMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMi4wOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKSAvIDIuMDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCisgICAgICAgIGZsb2F0IHBhdE9mZnNldCA9IHBhdHRlcm5PZmZzZXQocGF0
V2lkdGgsIGRpc3RhbmNlKTsKICAgICAgICAgZG91YmxlIGRhc2ggPSBwYXRXaWR0aDsKLSAgICAg
ICAgY2Fpcm9fc2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXR0ZXJuT2Zmc2V0KTsKKyAgICAgICAg
Y2Fpcm9fc2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXRPZmZzZXQpOwogICAgIH0KIAogICAgIGNh
aXJvX3N0cm9rZShjcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGNmOGI5MDMuLmFmZDhiYjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNDIs
NyArMTQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50
JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJv
a2UpCisgICAgU3Ryb2tlU3R5bGUgc3R5bGUgPSBzdHJva2VTdHlsZSgpOworICAgIGlmIChzdHls
ZSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgd2lkdGggPSBzdHJv
a2VUaGlja25lc3MoKTsKQEAgLTE1MywxOSArMTU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIp
CiAKICAgICBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0aCwgc3R5bGUp
OwogCi0gICAgaW50IHBhdFdpZHRoID0gMDsKLSAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsK
LSAgICBjYXNlIE5vU3Ryb2tlOgotICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IChpbnQpd2lkdGg7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0
aCA9IDMgKiAoaW50KXdpZHRoOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICBpbnQgcGF0
V2lkdGggPSBwYXR0ZXJuV2lkdGgod2lkdGgsIHN0eWxlKTsKICAgICBDR0NvbnRleHRSZWYgY29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKQpA
QCAtMTg1LDM2ICsxNzQsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0
IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgICAgICBD
R0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0
aCAvIDIsIHdpZHRoLCB3aWR0aCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRXhhbXBsZTog
ODAgcGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAzMCBwaXhlbHMuCi0gICAgICAgIC8vIFJlbWFpbmRl
ciBpcyAyMC4gIFRoZSBtYXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50Ci0gICAg
ICAgIC8vIHdpbGwgYmUgNTAgcGl4ZWxzLgogICAgICAgICBpbnQgZGlzdGFuY2UgPSAoaXNWZXJ0
aWNhbExpbmUgPyAocG9pbnQyLnkoKSAtIHBvaW50MS55KCkpIDogKHBvaW50Mi54KCkgLSBwb2lu
dDEueCgpKSkgLSAyKihpbnQpd2lkdGg7Ci0gICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5j
ZSAlIHBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRl
cjsKLSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKLQotICAg
ICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMC4wZjsKLSAgICAgICAgLy8gU3BlY2lhbCBjYXNl
IDFweCBkb3R0ZWQgYm9yZGVycyBmb3Igc3BlZWQuCi0gICAgICAgIGlmIChwYXRXaWR0aCA9PSAx
KQotICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IDEuMGY7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsK
LSAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgZXZlbk51bWJlck9m
U2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7Ci0gICAgICAgICAgICBpZiAoZXZlbk51
bWJlck9mU2VnbWVudHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSByZW1haW5kZXI7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBh
dFdpZHRoIC8gMjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJl
bWFpbmRlcikKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAt
IHJlbWFpbmRlcikvMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmbG9hdCBw
YXRPZmZzZXQgPSBwYXR0ZXJuT2Zmc2V0KHBhdFdpZHRoLCBkaXN0YW5jZSk7CiAKICAgICAgICAg
Y29uc3QgQ0dGbG9hdCBkb3R0ZWRMaW5lWzJdID0geyBwYXRXaWR0aCwgcGF0V2lkdGggfTsKLSAg
ICAgICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgcGF0dGVybk9mZnNldCwgZG90dGVk
TGluZSwgMik7CisgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdE9mZnNl
dCwgZG90dGVkTGluZSwgMik7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRl
eHQpOwpAQCAtMzA2LDMyICsyNzAsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJj
KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgICAg
ICBlbHNlIC8vIFdlIGFyZSBlbGxpcHRpY2FsIGFuZCB3aWxsIGhhdmUgdG8gZXN0aW1hdGUgdGhl
IGRpc3RhbmNlCiAgICAgICAgICAgICBkaXN0YW5jZSA9IHN0YXRpY19jYXN0PGludD4oKHBpRmxv
YXQgKiBzcXJ0ZigoaFJhZGl1cyAqIGhSYWRpdXMgKyB2UmFkaXVzICogdlJhZGl1cykgLyAyLjBm
KSkgLyAyLjBmKTsKIAotICAgICAgICBpbnQgcmVtYWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0
aDsKLSAgICAgICAgaW50IGNvdmVyYWdlID0gZGlzdGFuY2UgLSByZW1haW5kZXI7Ci0gICAgICAg
IGludCBudW1TZWdtZW50cyA9IGNvdmVyYWdlIC8gcGF0V2lkdGg7Ci0KLSAgICAgICAgZmxvYXQg
cGF0dGVybk9mZnNldCA9IDAuMGY7Ci0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVk
IGJvcmRlcnMgZm9yIHNwZWVkLgotICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKLSAgICAgICAg
ICAgIHBhdHRlcm5PZmZzZXQgPSAxLjBmOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJv
b2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAg
ICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0g
IWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21l
bnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAg
ICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAg
ICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlciAvIDIuMGY7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAv
IDIuMGY7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5k
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1h
aW5kZXIpIC8gMi4wZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCisgICAgICAgIGZsb2F0
IHBhdE9mZnNldCA9IHBhdHRlcm5PZmZzZXQocGF0V2lkdGgsIGRpc3RhbmNlKTsKICAgICAgICAg
Y29uc3QgQ0dGbG9hdCBkb3R0ZWRMaW5lWzJdID0geyBwYXRXaWR0aCwgcGF0V2lkdGggfTsKLSAg
ICAgICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgcGF0dGVybk9mZnNldCwgZG90dGVk
TGluZSwgMik7CisgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdE9mZnNl
dCwgZG90dGVkTGluZSwgMik7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKaW5kZXggNWUwNGI4NS4uZThhNGFjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTQ2MywxOCArNDYzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEs
IGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgIHAtPnJlc3RvcmUoKTsKICAgICB9CiAK
LSAgICBpbnQgcGF0V2lkdGggPSAwOwotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIE5v
U3Ryb2tlOgotICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RG90dGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4od2lkdGgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgcGF0V2lk
dGggPSAzICogc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
KyAgICBpbnQgcGF0V2lkdGggPSBwYXR0ZXJuV2lkdGgod2lkdGgsIHN0eWxlKTsKIAogICAgIGlm
IChwYXRXaWR0aCkgewogICAgICAgICBwLT5zYXZlKCk7CkBAIC00ODksMzMgKzQ3OCw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25z
dCBJbnRQb2ludCYgcG9pbnQyKQogICAgICAgICAgICAgcC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHAy
LngoKSwgcDIueSgpIC0gd2lkdGggLyAyLCB3aWR0aCwgd2lkdGgpLCBRQ29sb3IoY29sb3IpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGgg
b2YgMzAgcGl4ZWxzLgotICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBw
aXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAotICAgICAgICAvLyB3aWxsIGJlIDUwIHBpeGVs
cy4KICAgICAgICAgaW50IGRpc3RhbmNlID0gKGlzVmVydGljYWxMaW5lID8gKHBvaW50Mi55KCkg
LSBwb2ludDEueSgpKSA6IChwb2ludDIueCgpIC0gcG9pbnQxLngoKSkpIC0gMiooaW50KXdpZHRo
OwotICAgICAgICBpbnQgcmVtYWluZGVyID0gZGlzdGFuY2UgJSBwYXRXaWR0aDsKLSAgICAgICAg
aW50IGNvdmVyYWdlID0gZGlzdGFuY2UgLSByZW1haW5kZXI7Ci0gICAgICAgIGludCBudW1TZWdt
ZW50cyA9IGNvdmVyYWdlIC8gcGF0V2lkdGg7Ci0KLSAgICAgICAgZmxvYXQgcGF0dGVybk9mZnNl
dCA9IDAuMGY7Ci0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9y
IHNwZWVkLgotICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKLSAgICAgICAgICAgIHBhdHRlcm5P
ZmZzZXQgPSAxLjBmOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJl
ck9mU2VnbWVudHMgPSAhKG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWlu
ZGVyKQotICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJP
ZlNlZ21lbnRzOwotICAgICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJu
T2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ICs9IHJlbWFpbmRlciAvIDI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDI7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpLzI7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgZmxvYXQgcGF0T2Zmc2V0ID0gcGF0dGVybk9mZnNl
dChwYXRXaWR0aCwgZGlzdGFuY2UpOwogCiAgICAgICAgIFFWZWN0b3I8cXJlYWw+IGRhc2hlczsK
ICAgICAgICAgZGFzaGVzIDw8IHFyZWFsKHBhdFdpZHRoKSAvIHdpZHRoIDw8IHFyZWFsKHBhdFdp
ZHRoKSAvIHdpZHRoOwpAQCAtNTI0LDcgKzQ4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQog
ICAgICAgICBwZW4uc2V0V2lkdGhGKHdpZHRoKTsKICAgICAgICAgcGVuLnNldENhcFN0eWxlKFF0
OjpGbGF0Q2FwKTsKICAgICAgICAgcGVuLnNldERhc2hQYXR0ZXJuKGRhc2hlcyk7Ci0gICAgICAg
IHBlbi5zZXREYXNoT2Zmc2V0KHBhdHRlcm5PZmZzZXQgLyB3aWR0aCk7CisgICAgICAgIHBlbi5z
ZXREYXNoT2Zmc2V0KHBhdE9mZnNldCAvIHdpZHRoKTsKICAgICAgICAgcC0+c2V0UGVuKHBlbik7
CiAgICAgfQogCi0tIAoxLjYuNC4xOC5nMDdhNGEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35044</attachid>
            <date>2009-08-18 09:00:34 -0700</date>
            <delta_ts>2009-08-18 23:31:43 -0700</delta_ts>
            <desc>Correct version of Rename functions in patch - Refactor patternWidth and patternOffset calculations from GraphicsContextQt/Cairo/CG.cpp into GraphicsContext.cpp as requested.</desc>
            <filename>0001-Refactor-patternWidthForDashes-and-patternOffsetForD.patch</filename>
            <type>text/plain</type>
            <size>17511</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBhMDhlOWVmYTkxMTE1N2M5N2E0YzM0YjY1MThmNTY0YmNlYzUyMjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDExOjM4OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRD
SF0gUmVmYWN0b3IgcGF0dGVybldpZHRoRm9yRGFzaGVzIGFuZCBwYXR0ZXJuT2Zmc2V0Rm9yRGFz
aGVzLgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjIgKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCAgICAgIHwgICA0MyArKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAgfCAgIDgwICsrKy0tLS0tLS0tLS0tLS0tLS0K
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIHwgICA4
NSArKystLS0tLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAgfCAgIDQ2ICstLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDk1
IGluc2VydGlvbnMoKyksIDE4MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNmU5OTcuLjM2Njc1YTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMDktMDgtMTQgIE1pa2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2Jp
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yIHBhdHRlcm5XaWR0aCBhbmQgcGF0dGVybk9mZnNldCBjYWxjdWxhdGlvbnMgb3V0
IG9mIEdyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorICAgICAgICBHcmFwaGljc0NvbnRleHRDRy5j
cHAgYW5kIEdyYXBoaWNzQ29udGV4dFF0LmNwcCBpbnRvIEdyYXBoaWNzQ29udGV4dC5jcHAuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY4CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwYXR0ZXJuV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwYXR0ZXJuT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlQXJjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKToKKwogMjAwOS0wOC0xMyAgTWFy
ayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByNDcxODUsIHRoZSBm
aXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxODU+LCBh
cyBpdCBicm9rZSB0aGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCBhMzE0MzY2Li42NTg1MTk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC01NzUsNCArNTc1LDQ3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEs
IEZsb2F0UG9pbnQmIHAyCiAgICAgfQogfQogCitpbnQgR3JhcGhpY3NDb250ZXh0OjpwYXR0ZXJu
V2lkdGhGb3JEYXNoZXMoZmxvYXQgc3Ryb2tlV2lkdGgsIGNvbnN0IFN0cm9rZVN0eWxlJiBzdHJv
a2VTdHlsZSkKK3sKKyAgICBpZiAoc3Ryb2tlU3R5bGUgPT0gRG90dGVkU3Ryb2tlKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdHJva2VXaWR0aCk7CisKKyAgICBpZiAoc3Ryb2tl
U3R5bGUgPT0gRGFzaGVkU3Ryb2tlKQorICAgICAgICByZXR1cm4gMyAqIHN0YXRpY19jYXN0PGlu
dD4oc3Ryb2tlV2lkdGgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2Zsb2F0IEdyYXBoaWNzQ29u
dGV4dDo6cGF0dGVybk9mZnNldEZvckRhc2hlcyhpbnQgd2lkdGgsIGludCBkaXN0YW5jZSkKK3sK
KyAgICBpZiAoIXdpZHRoKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIC8vIFNwZWNpYWwg
Y2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVkLgorICAgIGlmICh3aWR0aCA9PSAxKQor
ICAgICAgICByZXR1cm4gMS4wZjsKKworICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEg
d2lkdGggb2YgMzAgcGl4ZWxzLgorICAgIC8vIFJlbWFpbmRlciBpcyAyMC4gIFRoZSBtYXhpbXVt
IHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50CisgICAgLy8gd2lsbCBiZSA1MCBwaXhlbHMu
CisgICAgaW50IHJlbWFpbmRlciA9IGRpc3RhbmNlICUgd2lkdGg7CisgICAgaW50IG51bVNlZ21l
bnRzID0gKGRpc3RhbmNlIC0gcmVtYWluZGVyKSAvIHdpZHRoOworCisgICAgYm9vbCBldmVuTnVt
YmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKKyAgICBpZiAocmVtYWluZGVyKQor
ICAgICAgICBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKKwor
ICAgIGlmIChldmVuTnVtYmVyT2ZTZWdtZW50cykgeworICAgICAgICBpZiAocmVtYWluZGVyKQor
ICAgICAgICAgICAgcmV0dXJuIHdpZHRoIC0gKHJlbWFpbmRlciAvIDIpOworCisgICAgICAgIHJl
dHVybiB3aWR0aCAvIDI7CisgICAgfQorCisgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgcmV0
dXJuICh3aWR0aCAtIHJlbWFpbmRlcikgLyAyOworCisgICAgcmV0dXJuIDAuMGY7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGUwZDky
OTQuLmNkZjllYTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDEyLDYgKzQxMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgYWRqdXN0TGlu
ZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQg
c3Ryb2tlV2lkdGgsIGNvbnN0IFN0cm9rZVN0eWxlJik7CisgICAgICAgIHN0YXRpYyBpbnQgcGF0
dGVybldpZHRoRm9yRGFzaGVzKGZsb2F0IHN0cm9rZVdpZHRoLCBjb25zdCBTdHJva2VTdHlsZSYp
OworICAgICAgICBzdGF0aWMgZmxvYXQgcGF0dGVybk9mZnNldEZvckRhc2hlcyhpbnQgd2lkdGgs
IGludCBkaXN0YW5jZSk7CiAKICAgICAgICAgaW50IGZvY3VzUmluZ1dpZHRoKCkgY29uc3Q7CiAg
ICAgICAgIGludCBmb2N1c1JpbmdPZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
ZGU4YWZiMy4uNGQzMWYxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTE2NiwyNCArMTY2LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBj
b25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhw
MSwgcDIsIHdpZHRoLCBzdHlsZSk7CiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3IsIHdpZHRo
KTsKIAotICAgIGludCBwYXRXaWR0aCA9IDA7Ci0gICAgc3dpdGNoIChzdHlsZSkgewotICAgIGNh
c2UgTm9TdHJva2U6Ci0gICAgY2FzZSBTb2xpZFN0cm9rZToKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgIHBhdFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih3
aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICBw
YXRXaWR0aCA9IDMqc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQorICAgIGludCBwYXR0ZXJuV2lkdGggPSBwYXR0ZXJuV2lkdGhGb3JEYXNoZXMod2lkdGgs
IHN0eWxlKTsKICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CiAKICAgICBjYWlyb19z
ZXRfYW50aWFsaWFzKGNyLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CiAKLSAgICBpZiAocGF0V2lk
dGgpIHsKKyAgICBpZiAocGF0dGVybldpZHRoKSB7CiAgICAgICAgIC8vIERvIGEgcmVjdCBmaWxs
IG9mIG91ciBlbmRwb2ludHMuICBUaGlzIGVuc3VyZXMgd2UgYWx3YXlzIGhhdmUgdGhlCiAgICAg
ICAgIC8vIGFwcGVhcmFuY2Ugb2YgYmVpbmcgYSBib3JkZXIuICBXZSB0aGVuIGRyYXcgdGhlIGFj
dHVhbCBkb3R0ZWQvZGFzaGVkIGxpbmUuCiAgICAgICAgIGlmIChpc1ZlcnRpY2FsTGluZSkgewpA
QCAtMTk0LDM1ICsxODIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0
IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgICAgICBm
aWxsUmVjdFNvdXJjZU92ZXIoY3IsIEZsb2F0UmVjdChwMi54KCksIHAyLnkoKSAtIHdpZHRoLzIs
IHdpZHRoLCB3aWR0aCksIHN0cm9rZUNvbG9yKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
RXhhbXBsZTogODAgcGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAzMCBwaXhlbHMuCi0gICAgICAgIC8v
IFJlbWFpbmRlciBpcyAyMC4gIFRoZSBtYXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBh
aW50Ci0gICAgICAgIC8vIHdpbGwgYmUgNTAgcGl4ZWxzLgogICAgICAgICBpbnQgZGlzdGFuY2Ug
PSAoaXNWZXJ0aWNhbExpbmUgPyAocG9pbnQyLnkoKSAtIHBvaW50MS55KCkpIDogKHBvaW50Mi54
KCkgLSBwb2ludDEueCgpKSkgLSAyKnN0YXRpY19jYXN0PGludD4od2lkdGgpOwotICAgICAgICBp
bnQgcmVtYWluZGVyID0gZGlzdGFuY2UlcGF0V2lkdGg7Ci0gICAgICAgIGludCBjb3ZlcmFnZSA9
IGRpc3RhbmNlLXJlbWFpbmRlcjsKLSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2Uv
cGF0V2lkdGg7Ci0KLSAgICAgICAgZmxvYXQgcGF0dGVybk9mZnNldCA9IDA7Ci0gICAgICAgIC8v
IFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVkLgotICAgICAgICBpZiAo
cGF0V2lkdGggPT0gMSkKLSAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgPSAxLjA7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2Vn
bWVudHMgJSAyKTsKLSAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAg
ZXZlbk51bWJlck9mU2VnbWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7Ci0gICAgICAgICAg
ICBpZiAoZXZlbk51bWJlck9mU2VnbWVudHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVtYWlu
ZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSBy
ZW1haW5kZXI7Ci0gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVy
IC8gMjsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVy
bk9mZnNldCA9IHBhdFdpZHRoIC8gMjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIWV2ZW5OdW1i
ZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAgICAgICAg
ICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAtIHJlbWFpbmRlcikgLyAyOwot
ICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSBw
YXR0ZXJuT2Zmc2V0Rm9yRGFzaGVzKHBhdHRlcm5XaWR0aCwgZGlzdGFuY2UpOwogCi0gICAgICAg
IGRvdWJsZSBkYXNoID0gcGF0V2lkdGg7CisgICAgICAgIGRvdWJsZSBkYXNoID0gcGF0dGVybldp
ZHRoOwogICAgICAgICBjYWlyb19zZXRfZGFzaChjciwgJmRhc2gsIDEsIHBhdHRlcm5PZmZzZXQp
OwogICAgIH0KIApAQCAtMjkxLDE0ICsyNTQsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AK
ICAgICAgICAgY2Fpcm9fc2NhbGUoY3IsIDEuLCByZXZlcnNlU2NhbGVGYWN0b3IpOwogCiAgICAg
ZmxvYXQgd2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKLSAgICBpbnQgcGF0V2lkdGggPSAwOwor
ICAgIGludCBwYXR0ZXJuV2lkdGggPSAwOwogCiAgICAgc3dpdGNoIChzdHJva2VTdHlsZSgpKSB7
CiAgICAgY2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgIHBhdFdpZHRoID0gc3RhdGljX2Nhc3Q8
aW50Pih3aWR0aCAvIDIpOworICAgICAgICBwYXR0ZXJuV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+
KHdpZHRoIC8gMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAg
ICAgICBwYXRXaWR0aCA9IDMgKiBzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoIC8gMik7CisgICAgICAg
IHBhdHRlcm5XaWR0aCA9IDMgKiBzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoIC8gMik7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzA2LDcgKzI2OSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50
IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwCiAKICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3Io
KSk7CiAKLSAgICBpZiAocGF0V2lkdGgpIHsKKyAgICBpZiAocGF0dGVybldpZHRoKSB7CiAgICAg
ICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLgogICAg
ICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBj
b3VsZCBwYWludAogICAgICAgICAvLyB3aWxsIGJlIDUwIHBpeGVscy4KQEAgLTMxNiwzMSArMjc5
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0
LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxs
aXB0aWNhbCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAgICAgICAg
ICAgZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChNX1BJICogc3FydGYoKGhSYWRpdXMgKiBo
UmFkaXVzICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wKSkgLyAyLjApOwogCi0gICAgICAgIGlu
dCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2Ug
PSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKLSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJh
Z2UgLyBwYXRXaWR0aDsKLQotICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMC4wOwotICAg
ICAgICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAg
ICAgaWYgKHBhdFdpZHRoID09IDEpCi0gICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgZXZlbk51bWJlck9mU2VnbWVudHMgPSAh
KG51bVNlZ21lbnRzICUgMik7Ci0gICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAg
ICAgICAgIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOwotICAg
ICAgICAgICAgaWYgKGV2ZW5OdW1iZXJPZlNlZ21lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHJlbWFpbmRlcikgewotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdp
ZHRoIC0gcmVtYWluZGVyOwotICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHJl
bWFpbmRlciAvIDIuMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMi4wOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKSAvIDIuMDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGRvdWJsZSBkYXNoID0gcGF0V2lkdGg7CisgICAgICAgIGZs
b2F0IHBhdHRlcm5PZmZzZXQgPSBwYXR0ZXJuT2Zmc2V0Rm9yRGFzaGVzKHBhdHRlcm5XaWR0aCwg
ZGlzdGFuY2UpOworICAgICAgICBkb3VibGUgZGFzaCA9IHBhdHRlcm5XaWR0aDsKICAgICAgICAg
Y2Fpcm9fc2V0X2Rhc2goY3IsICZkYXNoLCAxLCBwYXR0ZXJuT2Zmc2V0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
aW5kZXggY2Y4YjkwMy4uYzJiOTMxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE0Miw3ICsxNDIsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50
UG9pbnQmIHBvaW50MikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKKyAgICBTdHJva2VTdHls
ZSBzdHlsZSA9IHN0cm9rZVN0eWxlKCk7CisgICAgaWYgKHN0eWxlID09IE5vU3Ryb2tlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwpAQCAt
MTUzLDI1ICsxNTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAKICAgICBhZGp1c3RMaW5l
VG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0aCwgc3R5bGUpOwogCi0gICAgaW50IHBhdFdp
ZHRoID0gMDsKLSAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKCkpIHsKLSAgICBjYXNlIE5vU3Ryb2tl
OgotICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG90dGVk
U3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IChpbnQpd2lkdGg7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IDMgKiAoaW50KXdpZHRo
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICBpbnQgcGF0dGVybldpZHRoID0gcGF0dGVy
bldpZHRoRm9yRGFzaGVzKHdpZHRoLCBzdHlsZSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIGlmIChzaG91bGRBbnRpYWxpYXMoKSkKICAgICAg
ICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIGZhbHNlKTsKIAotICAgIGlm
IChwYXRXaWR0aCkgeworICAgIGlmIChwYXR0ZXJuV2lkdGgpIHsKICAgICAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgICAgICAvLyBEbyBhIHJlY3QgZmlsbCBvZiBvdXIg
ZW5kcG9pbnRzLiAgVGhpcyBlbnN1cmVzIHdlIGFsd2F5cyBoYXZlIHRoZQpAQCAtMTg1LDM1ICsx
NzQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBw
b2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgICAgICBDR0NvbnRleHRGaWxs
UmVjdChjb250ZXh0LCBGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0aCAvIDIsIHdpZHRo
LCB3aWR0aCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRXhhbXBsZTogODAgcGl4ZWxzIHdp
dGggYSB3aWR0aCBvZiAzMCBwaXhlbHMuCi0gICAgICAgIC8vIFJlbWFpbmRlciBpcyAyMC4gIFRo
ZSBtYXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50Ci0gICAgICAgIC8vIHdpbGwg
YmUgNTAgcGl4ZWxzLgogICAgICAgICBpbnQgZGlzdGFuY2UgPSAoaXNWZXJ0aWNhbExpbmUgPyAo
cG9pbnQyLnkoKSAtIHBvaW50MS55KCkpIDogKHBvaW50Mi54KCkgLSBwb2ludDEueCgpKSkgLSAy
KihpbnQpd2lkdGg7Ci0gICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAlIHBhdFdpZHRo
OwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKLSAgICAgICAg
aW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKLQotICAgICAgICBmbG9hdCBw
YXR0ZXJuT2Zmc2V0ID0gMC4wZjsKLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlIDFweCBkb3R0ZWQg
Ym9yZGVycyBmb3Igc3BlZWQuCi0gICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQotICAgICAgICAg
ICAgcGF0dGVybk9mZnNldCA9IDEuMGY7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9v
bCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKLSAgICAgICAgICAg
IGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgZXZlbk51bWJlck9mU2VnbWVudHMgPSAh
ZXZlbk51bWJlck9mU2VnbWVudHM7Ci0gICAgICAgICAgICBpZiAoZXZlbk51bWJlck9mU2VnbWVu
dHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhdHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSByZW1haW5kZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBhdFdpZHRoIC8gMjsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAg
ICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAtIHJlbWFpbmRlcikv
MjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0
ID0gcGF0dGVybk9mZnNldEZvckRhc2hlcyhwYXR0ZXJuV2lkdGgsIGRpc3RhbmNlKTsKIAotICAg
ICAgICBjb25zdCBDR0Zsb2F0IGRvdHRlZExpbmVbMl0gPSB7IHBhdFdpZHRoLCBwYXRXaWR0aCB9
OworICAgICAgICBjb25zdCBDR0Zsb2F0IGRvdHRlZExpbmVbMl0gPSB7IHBhdHRlcm5XaWR0aCwg
cGF0dGVybldpZHRoIH07CiAgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBh
dHRlcm5PZmZzZXQsIGRvdHRlZExpbmUsIDIpOwogICAgIH0KIApAQCAtMjIzLDcgKzE4Nyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBj
b25zdCBJbnRQb2ludCYgcG9pbnQyKQogCiAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0
KTsKIAotICAgIGlmIChwYXRXaWR0aCkKKyAgICBpZiAocGF0dGVybldpZHRoKQogICAgICAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgaWYgKHNob3VsZEFudGlhbGlh
cygpKQpAQCAtMjgzLDIwICsyNDcsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFy
Yyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAg
ICAgc2NhbGUoRmxvYXRTaXplKDEsIHJldmVyc2VTY2FsZUZhY3RvcikpOwogCiAgICAgZmxvYXQg
d2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKLSAgICBpbnQgcGF0V2lkdGggPSAwOworICAgIGlu
dCBwYXR0ZXJuV2lkdGggPSAwOwogCiAgICAgc3dpdGNoIChzdHJva2VTdHlsZSgpKSB7CiAgICAg
Y2FzZSBEb3R0ZWRTdHJva2U6Ci0gICAgICAgIHBhdFdpZHRoID0gKGludCkod2lkdGggLyAyKTsK
KyAgICAgICAgcGF0dGVybldpZHRoID0gKGludCkod2lkdGggLyAyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEYXNoZWRTdHJva2U6Ci0gICAgICAgIHBhdFdpZHRoID0gMyAqIChpbnQpKHdp
ZHRoIC8gMik7CisgICAgICAgIHBhdHRlcm5XaWR0aCA9IDMgKiAoaW50KSh3aWR0aCAvIDIpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBpZiAocGF0V2lkdGgpIHsKKyAgICBpZiAocGF0dGVybldpZHRoKSB7CiAgICAgICAgIC8vIEV4
YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLgogICAgICAgICAvLyBS
ZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWlu
dAogICAgICAgICAvLyB3aWxsIGJlIDUwIHBpeGVscy4KQEAgLTMwNiwzMSArMjcwLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3Rh
cnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxsaXB0aWNhbCBh
bmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQogICAgICAgICAgICAgZGlzdGFu
Y2UgPSBzdGF0aWNfY2FzdDxpbnQ+KChwaUZsb2F0ICogc3FydGYoKGhSYWRpdXMgKiBoUmFkaXVz
ICsgdlJhZGl1cyAqIHZSYWRpdXMpIC8gMi4wZikpIC8gMi4wZik7CiAKLSAgICAgICAgaW50IHJl
bWFpbmRlciA9IGRpc3RhbmNlICUgcGF0V2lkdGg7Ci0gICAgICAgIGludCBjb3ZlcmFnZSA9IGRp
c3RhbmNlIC0gcmVtYWluZGVyOwotICAgICAgICBpbnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAv
IHBhdFdpZHRoOwotCi0gICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSAwLjBmOwotICAgICAg
ICAvLyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KLSAgICAgICAg
aWYgKHBhdFdpZHRoID09IDEpCi0gICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wZjsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIShu
dW1TZWdtZW50cyAlIDIpOwotICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAgICAgICAgICAg
ICAgICBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKLSAgICAg
ICAgICAgIGlmIChldmVuTnVtYmVyT2ZTZWdtZW50cykgewotICAgICAgICAgICAgICAgIGlmIChy
ZW1haW5kZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSBwYXRXaWR0
aCAtIHJlbWFpbmRlcjsKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSByZW1h
aW5kZXIgLyAyLjBmOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBwYXR0ZXJuT2Zmc2V0ID0gcGF0V2lkdGggLyAyLjBmOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKQotICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKSAvIDIuMGY7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBDR0Zsb2F0IGRvdHRlZExpbmVbMl0gPSB7IHBh
dFdpZHRoLCBwYXRXaWR0aCB9OworICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gcGF0dGVy
bk9mZnNldEZvckRhc2hlcyhwYXR0ZXJuV2lkdGgsIGRpc3RhbmNlKTsKKyAgICAgICAgY29uc3Qg
Q0dGbG9hdCBkb3R0ZWRMaW5lWzJdID0geyBwYXR0ZXJuV2lkdGgsIHBhdHRlcm5XaWR0aCB9Owog
ICAgICAgICBDR0NvbnRleHRTZXRMaW5lRGFzaChjb250ZXh0LCBwYXR0ZXJuT2Zmc2V0LCBkb3R0
ZWRMaW5lLCAyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggNWUwNGI4NS4uZWM2MjNlNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAg
LTQ2MywyMCArNDYzLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgIHAtPnJlc3Rv
cmUoKTsKICAgICB9CiAKLSAgICBpbnQgcGF0V2lkdGggPSAwOwotICAgIHN3aXRjaCAoc3R5bGUp
IHsKLSAgICBjYXNlIE5vU3Ryb2tlOgotICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAgICAgICBwYXRXaWR0aCA9IHN0YXRpY19j
YXN0PGludD4od2lkdGgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERhc2hlZFN0cm9rZToK
LSAgICAgICAgcGF0V2lkdGggPSAzICogc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KKyAgICBpbnQgcGF0dGVybldpZHRoID0gcGF0dGVybldpZHRoRm9yRGFz
aGVzKHdpZHRoLCBzdHlsZSk7CiAKLSAgICBpZiAocGF0V2lkdGgpIHsKKyAgICBpZiAocGF0dGVy
bldpZHRoKSB7CiAgICAgICAgIHAtPnNhdmUoKTsKIAogICAgICAgICAvLyBEbyBhIHJlY3QgZmls
bCBvZiBvdXIgZW5kcG9pbnRzLiAgVGhpcyBlbnN1cmVzIHdlIGFsd2F5cyBoYXZlIHRoZQpAQCAt
NDg5LDM2ICs0NzgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgICAgICBwLT5m
aWxsUmVjdChGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3aWR0aCAvIDIsIHdpZHRoLCB3aWR0
aCksIFFDb2xvcihjb2xvcikpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRXhhbXBsZTogODAg
cGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAzMCBwaXhlbHMuCi0gICAgICAgIC8vIFJlbWFpbmRlciBp
cyAyMC4gIFRoZSBtYXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50Ci0gICAgICAg
IC8vIHdpbGwgYmUgNTAgcGl4ZWxzLgogICAgICAgICBpbnQgZGlzdGFuY2UgPSAoaXNWZXJ0aWNh
bExpbmUgPyAocG9pbnQyLnkoKSAtIHBvaW50MS55KCkpIDogKHBvaW50Mi54KCkgLSBwb2ludDEu
eCgpKSkgLSAyKihpbnQpd2lkdGg7Ci0gICAgICAgIGludCByZW1haW5kZXIgPSBkaXN0YW5jZSAl
IHBhdFdpZHRoOwotICAgICAgICBpbnQgY292ZXJhZ2UgPSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsK
LSAgICAgICAgaW50IG51bVNlZ21lbnRzID0gY292ZXJhZ2UgLyBwYXRXaWR0aDsKLQotICAgICAg
ICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMC4wZjsKLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlIDFw
eCBkb3R0ZWQgYm9yZGVycyBmb3Igc3BlZWQuCi0gICAgICAgIGlmIChwYXRXaWR0aCA9PSAxKQot
ICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IDEuMGY7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgYm9vbCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICEobnVtU2VnbWVudHMgJSAyKTsKLSAg
ICAgICAgICAgIGlmIChyZW1haW5kZXIpCi0gICAgICAgICAgICAgICAgZXZlbk51bWJlck9mU2Vn
bWVudHMgPSAhZXZlbk51bWJlck9mU2VnbWVudHM7Ci0gICAgICAgICAgICBpZiAoZXZlbk51bWJl
ck9mU2VnbWVudHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcGF0V2lkdGggLSByZW1haW5kZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IHBhdFdp
ZHRoIC8gMjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFp
bmRlcikKLSAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9IChwYXRXaWR0aCAtIHJl
bWFpbmRlcikvMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmbG9hdCBwYXR0
ZXJuT2Zmc2V0ID0gcGF0dGVybk9mZnNldEZvckRhc2hlcyhwYXR0ZXJuV2lkdGgsIGRpc3RhbmNl
KTsKIAogICAgICAgICBRVmVjdG9yPHFyZWFsPiBkYXNoZXM7Ci0gICAgICAgIGRhc2hlcyA8PCBx
cmVhbChwYXRXaWR0aCkgLyB3aWR0aCA8PCBxcmVhbChwYXRXaWR0aCkgLyB3aWR0aDsKKyAgICAg
ICAgZGFzaGVzIDw8IHFyZWFsKHBhdHRlcm5XaWR0aCkgLyB3aWR0aCA8PCBxcmVhbChwYXR0ZXJu
V2lkdGgpIC8gd2lkdGg7CiAKICAgICAgICAgUVBlbiBwZW4gPSBwLT5wZW4oKTsKICAgICAgICAg
cGVuLnNldFdpZHRoRih3aWR0aCk7CkBAIC01MzAsNyArNDk0LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBw
b2ludDIpCiAKICAgICBwLT5kcmF3TGluZShwMSwgcDIpOwogCi0gICAgaWYgKHBhdFdpZHRoKQor
ICAgIGlmIChwYXR0ZXJuV2lkdGgpCiAgICAgICAgIHAtPnJlc3RvcmUoKTsKIAogICAgIHAtPnNl
dFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgYW50aUFsaWFzKTsKLS0gCjEuNi40
LjE4LmcwN2E0YQoK
</data>
<flag name="review"
          id="19230"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="19233"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>