<?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>43259</bug_id>
          
          <creation_ts>2010-07-30 10:03:06 -0700</creation_ts>
          <short_desc>Add the shadow offset as a parameter to the GraphicsContext::setShadow</short_desc>
          <delta_ts>2010-08-24 09:31:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258248</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-30 10:03:06 -0700</bug_when>
    <thetext>In order to draw fast shadow using tiling (bug 39582) we need to know the shadow offset defined in the html. My proposal is to add a parameter to GraphicsContext::setShadow, and store if in the GraphicsContext. Current API is: 

void GraphicsContext::setShadow(const FloatSize&amp; size, float blur, const Color&amp; color, ColorSpace colorSpace)

We will modify it to add this one:

void GraphicsContext::setShadow(const FloatSize&amp; size, const FloatSize&amp; offset, float blur, const Color&amp; color, ColorSpace colorSpace)

We will add there the offset and the spread if required to point out the distance from the border of the shadow to the figure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258267</commentid>
    <comment_count>1</comment_count>
      <attachid>63075</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-30 10:22:43 -0700</bug_when>
    <thetext>Created attachment 63075
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258395</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 14:44:02 -0700</bug_when>
    <thetext>Attachment 63075 did not build on win:
Build output: http://queues.webkit.org/results/3637124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258997</commentid>
    <comment_count>3</comment_count>
      <attachid>63239</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-02 11:17:19 -0700</bug_when>
    <thetext>Created attachment 63239
Proposed patch

Let&apos;s see if I found all the calls to the functions this time :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259369</commentid>
    <comment_count>4</comment_count>
      <attachid>63321</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-03 04:18:00 -0700</bug_when>
    <thetext>Created attachment 63321
Proposed patch

Added the objective-c modifications I missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259453</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-03 08:05:10 -0700</bug_when>
    <thetext>What is “shadow offset” in this context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259457</commentid>
    <comment_count>6</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-03 08:13:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; What is “shadow offset” in this context?

The distance between the border of the shadow and the border of the figure, the information is interesting to know what part of the shadow is visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259458</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-03 08:17:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; What is “shadow offset” in this context?
&gt; 
&gt; The distance between the border of the shadow and the border of the figure, the information is interesting to know what part of the shadow is visible.

Can you give an example? Can this be derived from the size and blur radius?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259471</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-03 08:37:24 -0700</bug_when>
    <thetext>This is very confusing. I think what is referred to as shadow &quot;size&quot; is already the x/y offset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259492</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-03 09:06:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; What is “shadow offset” in this context?
&gt; &gt; 
&gt; &gt; The distance between the border of the shadow and the border of the figure, the information is interesting to know what part of the shadow is visible.
&gt; 
&gt; Can you give an example? Can this be derived from the size and blur radius?

It can&apos;t be derived AFAIK, even with the size of the shadow and the blur radius we would need the position and size of the original figure to get it. And another problem is that the size it is not actually the size in some situations, for instance RenderBoxModelObject.cpp:1611

...
            // Move the fill just outside the clip, adding 1 pixel separation so that the fill does not
            // bleed in (due to antialiasing) if the context is transformed.
            IntSize extraOffset(w + max(0, shadowOffset.width()) + shadowBlur + 2 * shadowSpread + 1, 0);
            shadowOffset -= extraOffset;
            fillRect.move(extraOffset);

            context-&gt;setShadow(shadowOffset, shadowBlur, shadowColor, s-&gt;colorSpace());
...

I do not know much about mac implementation but I guess shadowSize in this case is being used to store a prepared value to render the shadow outside the figure, that way they can use the GC API: CGContextSetShadow. In this case we will have a shadowSize (shadowOffset variable in the call to setShadow) with the correct offset in the height but a complete different value in the width, actually as you can see the shadowOffset.width() is substracted from the shadowOffset. In this case we want to render the shadow just in the locations where is is showed to avoid rendering big shadows blurs that will be under the figure, in order to do that we need to know the offset to calculate where we have to draw the shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259493</commentid>
    <comment_count>10</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-03 09:08:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This is very confusing. I think what is referred to as shadow &quot;size&quot; is already the x/y offset.

Yeah, most of the time it is used like that, but in some situations it is not actually the offset from the parameter of the shadow, but a prepared offset required by some shadow rendering APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262627</commentid>
    <comment_count>11</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-10 05:21:18 -0700</bug_when>
    <thetext>Any other feedback about this API? This could be the first step to have both parameters size and offset in the function API, with this code we could try also to add the required parameters so every port could handle the position by itself instead of trusting the calculation outside the shadow function that depends on the port. Maybe we will need more parameters in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266299</commentid>
    <comment_count>12</comment_count>
      <attachid>64750</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-18 12:08:24 -0700</bug_when>
    <thetext>Created attachment 64750
Proposed patch

Rebased to the current trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267700</commentid>
    <comment_count>13</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-22 10:57:09 -0700</bug_when>
    <thetext>&gt; ....the information is interesting to know what part of the shadow is visible.

Not sure what shadow visibility do you need here? While working on https://bugs.webkit.org/show_bug.cgi?id=44091 for the Qt port, I found out that I can use the clip region to significantly reduce the shadow area needs to be filtered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267795</commentid>
    <comment_count>14</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-23 01:32:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; ....the information is interesting to know what part of the shadow is visible.
&gt; 
&gt; Not sure what shadow visibility do you need here?

Basically we need the part the shadow that is not under the figure that causes that shadow. For example, if you set an offset of 0px 0px in the CSS when you generate the shadow you can use tiles that just cover from the border of the figure to the end of the blur effect; but if you have 300px 300px you need to create bigger tiles to recreate the shadow.


&gt; While working on https://bugs.webkit.org/show_bug.cgi?id=44091 for the Qt port, I found out that I can use the clip region to significantly reduce the shadow area needs to be filtered.

That&apos;s a very interesting improvement, thanks for sharing it, I was thinking about checking it after landing the tiling shadow buffer, I&apos;ll check it. Anyway if we want to create the tiling solution we need this information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267876</commentid>
    <comment_count>15</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-23 06:04:51 -0700</bug_when>
    <thetext>&gt; Basically we need the part the shadow that is not under the figure that causes that shadow. 

Unless I miss something, this could be carried out in a different way using the clip region (like in #44091).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268422</commentid>
    <comment_count>16</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 02:02:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; Basically we need the part the shadow that is not under the figure that causes that shadow. 
&gt; 
&gt; Unless I miss something, this could be carried out in a different way using the clip region (like in #44091).

Maybe I&apos;m the one missing something :), I&apos;m going to check it in detail, thanks for the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268485</commentid>
    <comment_count>17</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 05:09:44 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; Basically we need the part the shadow that is not under the figure that causes that shadow. 
&gt; 
&gt; Unless I miss something, this could be carried out in a different way using the clip region (like in #44091).

I&apos;ve checked the code and maybe I&apos;m missing something, again :), but I double checked the clipped area bounding box is the shadow rect or a piece of that rect, so we still do not have the original rect location information to know the offset of the shadow.

This patch actually also required to clean the use of the size parameter as an offset in the setShadow function anyway. I would say after the patch we should try to remove the size parameter with patches for each port moving the offset calculations required by those port shadows APIs to the port code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268569</commentid>
    <comment_count>18</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 08:43:45 -0700</bug_when>
    <thetext>After talking to Ariya he proposed to use blur radius instead of offset to calculate the smallest buffer sid to avoid using the offset. So closing this bug. 

A cleaning patch of this API is still good idea but probably with other bug rationale. I&apos;ll try to propose when I have a moment.

Thanks for the comments again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63075</attachid>
            <date>2010-07-30 10:22:43 -0700</date>
            <delta_ts>2010-08-02 11:17:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>shadow_offset.patch</filename>
            <type>text/plain</type>
            <size>21885</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">RnJvbSBhMTQyMTE0ZGZkNGZkNzZhNDY0ODU3MDI5Nzc1YjBlYzVjOWM3ZWVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+
CkRhdGU6IEZyaSwgMzAgSnVsIDIwMTAgMTk6MjE6MDggKzAyMDAKU3ViamVjdDogW1BBVENIXSAy
MDEwLTA3LTMwICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkIHRoZSBzaGFkb3cgb2Zm
c2V0IGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdwogICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzI1OQoKICAgICAg
ICBBZGQgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRlciBmb3IgdGhlIHNldFNoYWRvdyBhbmQg
Z2V0U2hhZG93CiAgICAgICAgQVBJcy4gVGhpcyBhbGxvd3MgdGhlIHBsYXRmb3JtcyBncmFwaGlj
cyBjb250ZXh0IHRvIGNoZWNrIHRoZQogICAgICAgIHZpc2libGUgcGFydCBvZiB0aGUgc2hhZG93
LCByZXF1aXJlZCBmb3IgcGVyZm9ybWFuY2UuCgogICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3cpOgogICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmFwcGx5U2hhZG93KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hh
ZG93KToKICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3cpOgogICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CiAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CiAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgogICAgICAgIChXZWJDb3JlOjpGb250Ojpk
cmF3R2x5cGhzKToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgogICAgICAg
IChXZWJDb3JlOjpkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3cpOgogICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpkcmF3KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDoK
ICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKICAgICAgICAqIHJlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWlu
dCk6CiAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKToKICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dCk6CiAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CiAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3hTaGFkb3cpOgogICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250
ZW50KToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDAgKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAgIHwgICAxMiArKystLS0KIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgIHwgICAgNiArKy0KIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggICAgICAgIHwgICAgNCArLQogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmggfCAgICAxICsK
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCAgICAgIHwgICAg
NSArLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAg
fCAgICA2ICsrLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cCAgICAgfCAgICAzICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNw
cCAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCAgICAgICAgICAgICAgICB8ICAgMTEgKysrLS0KIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCAgICAgICAgIHwgICAxMyArKysrLS0KIFdlYkNvcmUv
cmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwICAgICAgICAgICAgIHwgICAgMiArLQogMTQg
ZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYjI2NDkz
Li4yNzI0MTZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTA3LTMwICBBbGVqYW5kcm8gRy4gQ2FzdHJv
ICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0aGUgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRlciB0byB0aGUg
R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzMjU5CisKKyAgICAgICAgQWRkIHNoYWRvdyBvZmZzZXQgYXMg
YSBwYXJhbWV0ZXIgZm9yIHRoZSBzZXRTaGFkb3cgYW5kIGdldFNoYWRvdworICAgICAgICBBUElz
LiBUaGlzIGFsbG93cyB0aGUgcGxhdGZvcm1zIGdyYXBoaWNzIGNvbnRleHQgdG8gY2hlY2sgdGhl
CisgICAgICAgIHZpc2libGUgcGFydCBvZiB0aGUgc2hhZG93LCByZXF1aXJlZCBmb3IgcGVyZm9y
bWFuY2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNo
YWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRl
clNWR0NvbnRlbnQpOgorCiAyMDEwLTA3LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNmMz
ZDM3Mi4uZWI0MjkxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJbnRT
aXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFk
b3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lk
dGgsIC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dC
bHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQpAQCAt
OTIwLDcgKzkyMCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3co
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBpZiAoIWMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNp
emUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93
Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZs
b2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLAogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0
U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgc3RhdGUo
KS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAg
aWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3Is
IERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQpA
QCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBDR0NvbnRleHRT
ZXRTaGFkb3dXaXRoQ29sb3IoZGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1Np
emUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzaGFkb3dDb2xvcik7CiAgICAgQ0dDb2xvclJlbGVh
c2Uoc2hhZG93Q29sb3IpOwogI2Vsc2UKLSAgICBkYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgs
IC1oZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2Up
OworICAgIGRjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6ZSh3
aWR0aCwgaGVpZ2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNw
YWNlKTsKICNlbmRpZgogfQogCkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKIAogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5t
X3NoYWRvd09mZnNldC53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFk
b3dPZmZzZXQuaGVpZ2h0KCk7Ci0gICAgYy0+c2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhl
aWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmlj
ZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQp
LCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiBzdGF0aWMgSW50U2l6ZSBz
aXplKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGMyM2NhMWMuLjI4MWVkN2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEyOSw5ICsxMjks
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Io
Y29sb3IsIGNvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIG1fY29t
bW9uLT5zdGF0ZS5zaGFkb3dTaXplID0gc2l6ZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93
T2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsK
ICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93Q29sb3IgPSBjb2xvcjsKICAgICBzZXRQbGF0Zm9y
bVNoYWRvdyhzaXplLCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CkBAIC0xNDUsOSArMTQ2LDEw
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCiAgICAgY2xlYXJQbGF0Zm9y
bVNoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBzaXplLCBGbG9hdFNpemUmIG9mZnNldCwgZmxv
YXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICBzaXplID0gbV9jb21tb24tPnN0
YXRlLnNoYWRvd1NpemU7CisgICAgb2Zmc2V0ID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd09mZnNl
dDsKICAgICBibHVyID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3IgPSBt
X2NvbW1vbi0+c3RhdGUuc2hhZG93Q29sb3I7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDRkMzE5YmMuLjUwMWIwZDQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjYyLDggKzI2Miw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0IG9wYWNpdHkpOwogICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKLSAg
ICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKLSAgICAgICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwg
ZmxvYXQmLCBDb2xvciYpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9y
U3BhY2UpOworICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBGbG9hdFNpemUmLCBm
bG9hdCYsIENvbG9yJikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAogICAg
ICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgaW50IHdpZHRo
LCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAppbmRleCA2YmY0NjViLi5kMjcyMzlhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZh
dGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZh
dGUuaApAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
cGFpbnRpbmdEaXNhYmxlZDsKICAgICAgICAgCiAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgICAgICBmbG9hdCBzaGFkb3dC
bHVyOwogICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDkyMTdhODEuLjI2MzgwYjggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcxLDEw
ICs3MSwxMSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAgLy8gVGV4dCBzaGFkb3cs
IGluc3BpcmVkIGJ5IEZvbnRNYWMKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9h
dFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwogICAgIENvbG9y
IHNoYWRvd0NvbG9yOwogICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+dGV4dERyYXdpbmdN
b2RlKCkgJiBjVGV4dEZpbGwKLSAgICAgICAgICAgICAgICAgICAgICYmIGNvbnRleHQtPmdldFNo
YWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgICYmIGNv
bnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IEJsdXIgc3VwcG9ydAogICAgIGlmIChoYXNTaGFk
b3cpIHsKQEAgLTE5NSw3ICsxOTYsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAg
Ly8gUmUtZW5hYmxlIHRoZSBwbGF0Zm9ybSBzaGFkb3cgd2UgZGlzYWJsZWQgZWFybGllcgogICAg
IGlmIChoYXNTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRl
eHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAppbmRleCBjYTQ2OGFkLi40Njg2YTk2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtMTg0LDkgKzE4NCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2YQogewogI2lmIEVOQUJM
RShGSUxURVJTKQogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFk
b3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
LSAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvcikpCisgICAgaWYgKCFjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICAvLyBDYWxjdWxhdGUgZmlsdGVyIHZhbHVlcyB0byBjcmVhdGUgYXBwcm9wcmlhdGUgc2hh
ZG93LgpAQCAtNjA2LDEwICs2MDcsMTEgQEAgc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JgogewogI2lm
IEVOQUJMRShGSUxURVJTKQogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dD
b2xvcjsKIAotICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yKSkKKyAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXpl
LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggNjRmYmVkZi4uYjUxZmY2ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0x
MzUsOSArMTM1LDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgLy8gRHJhdyB0aGUg
c2hhZG93CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwg
c2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhz
aGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAg
ICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dS
ZWN0OwogICAgICAgICBmbG9hdCBrZXJuZWxTaXplICgwLjApOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250R3RrLmNwcAppbmRleCA5MmY4ODE2Li4wNTdlY2E0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApAQCAtMjQyLDEwICsyNDIsMTEgQEAg
dm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKIAogICAgIC8vIFRleHQgc2hhZG93LCBpbnNwaXJlZCBi
eSBGb250TWFjCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xv
cjsKICAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IGNU
ZXh0RmlsbCAmJgotICAgICAgICBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpOworICAgICAgICBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6
ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAgICAvLyBUT0RP
OiBCbHVyIHN1cHBvcnQKICAgICBpZiAoaGFzU2hhZG93KSB7CkBAIC0yOTAsNyArMjkxLDcgQEAg
dm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKIAogICAgIC8vIFJlLWVuYWJsZSB0aGUgcGxhdGZvcm0g
c2hhZG93IHdlIGRpc2FibGVkIGVhcmxpZXIKICAgICBpZiAoaGFzU2hhZG93KQotICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93U2l6ZSwg
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7
CiAKICAgICAvLyBQYW5nbyBzb21ldGltZXMgbGVhdmVzIGJlaGluZCBwYXRocyB3ZSBkb24ndCB3
YW50CiAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmlu
ZGV4IDYxY2Q1MjQuLjlhYTNlM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGludCB0eCwgaW50IHR5KQogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9y
LCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICBib29sIHNldFNoYWRvdyA9IGZhbHNlOwogICAg
IGlmIChzdHlsZS0+dGV4dFNoYWRvdygpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJ
bnRTaXplKHN0eWxlLT50ZXh0U2hhZG93KCktPngoKSwgc3R5bGUtPnRleHRTaGFkb3coKS0+eSgp
KSwKKyAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc3R5bGUtPnRleHRTaGFkb3co
KS0+eCgpLCBzdHlsZS0+dGV4dFNoYWRvdygpLT55KCkpLCBGbG9hdFNpemUoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLT50ZXh0U2hhZG93KCktPmJsdXIoKSwgc3R5bGUtPnRl
eHRTaGFkb3coKS0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIHNldFNo
YWRvdyA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBk
ZmU3NTYxLi44MzY5MTlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTAy
NSw3ICsxMDI1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucyhQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIGIKICAgICAgICAgICAgICAgICAg
ICAgdHkgLT0gZXh0cmFPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0g
MDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KEludFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ct
PmJsdXIoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRy
YU9mZnNldCksIEZsb2F0U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBzaGFkb3ctPmJs
dXIoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNwYWNlKTsKICAgICAgICAgICAgICAgICBzZXRT
aGFkb3cgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1MGY2Y2Zh
Li42YTUyM2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMzAyLDIxICsz
MDIsMjIgQEAgRmxvYXRTaXplIElubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0Nv
bnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogCiAgICAgRmxvYXRTaXplIGV4dHJhT2Zm
c2V0OwogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoc2hhZG93LT54KCksIHNoYWRvdy0+eSgp
KTsKKyAgICBGbG9hdFNpemUgc2hhZG93RXh0cmFPZmZzZXQgPSBzaGFkb3dPZmZzZXQ7CiAgICAg
aW50IHNoYWRvd0JsdXIgPSBzaGFkb3ctPmJsdXIoKTsKICAgICBjb25zdCBDb2xvciYgc2hhZG93
Q29sb3IgPSBzaGFkb3ctPmNvbG9yKCk7CiAKICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ry
b2tlZCB8fCAhb3BhcXVlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KHRleHRSZWN0
KTsKICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd0JsdXIpOwotICAgICAgICBzaGFk
b3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRv
d0V4dHJhT2Zmc2V0KTsKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBjb250ZXh0
LT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAgIGV4dHJhT2Zmc2V0ID0gRmxvYXRTaXplKDAs
IDIgKiB0ZXh0UmVjdC5oZWlnaHQoKSArIG1heCgwLjBmLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
ICsgc2hhZG93Qmx1cik7Ci0gICAgICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKKyAg
ICAgICAgZXh0cmFPZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsg
bWF4KDAuMGYsIHNoYWRvd0V4dHJhT2Zmc2V0LmhlaWdodCgpKSArIHNoYWRvd0JsdXIpOworICAg
ICAgICBzaGFkb3dFeHRyYU9mZnNldCAtPSBleHRyYU9mZnNldDsKICAgICB9CiAKLSAgICBjb250
ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgY29u
dGV4dC0+ZmlsbENvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd0V4
dHJhT2Zmc2V0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBjb250ZXh0
LT5maWxsQ29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gZXh0cmFPZmZzZXQ7CiB9CiAKQEAgLTcz
OSw3ICs3NDAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBpbgogICAgICAgICAgICAgICAgIHR5
IC09IGV4dHJhT2Zmc2V0OwogICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+
eCgpLCBzaGFkb3ctPnkoKSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+
Y29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coSW50
U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIEZsb2F0U2l6ZShz
aGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5jb2xvcigp
LCBjb2xvclNwYWNlKTsKICAgICAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAgICAgICAg
ICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDRkZGQ2NmIuLjFmN2Q1NTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUsNiArNSw3IEBACiAg
KiAgICAgICAgICAgKEMpIDIwMDUsIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFp
bC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
LCBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2MTEsMTAgKzE2MTIsMTQgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBpbnQgdHgsIGludAogICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlsbCBqdXN0IG91dHNp
ZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVsIHNlcGFyYXRpb24gc28gdGhhdCB0aGUgZmlsbCBk
b2VzIG5vdAogICAgICAgICAgICAgLy8gYmxlZWQgaW4gKGR1ZSB0byBhbnRpYWxpYXNpbmcpIGlm
IHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVkLgogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9m
ZnNldCh3ICsgbWF4KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd0JsdXIgKyAyICog
c2hhZG93U3ByZWFkICsgMSwgMCk7Ci0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFP
ZmZzZXQ7CisgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93RXh0cmFPZmZzZXQgPSBzaGFkb3dP
ZmZzZXQgLSBleHRyYU9mZnNldDsKICAgICAgICAgICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZz
ZXQpOwogCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIC8vIEFk
ZCB0aGUgc3ByZWFkIHRvIHNldCB0aGUgcmVhbCBvZmZzZXQKKyAgICAgICAgICAgIHNoYWRvd09m
ZnNldC5zZXRXaWR0aChzaGFkb3dPZmZzZXQud2lkdGgoKSArIHNoYWRvd1NwcmVhZCk7CisgICAg
ICAgICAgICBzaGFkb3dPZmZzZXQuc2V0SGVpZ2h0KHNoYWRvd09mZnNldC5oZWlnaHQoKSArIHNo
YWRvd1NwcmVhZCk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dFeHRy
YU9mZnNldCwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JT
cGFjZSgpKTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAg
ICAgICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSByZWN0OwogICAgICAgICAgICAgICAgIEludFNp
emUgdG9wTGVmdFRvQ2xpcE91dCA9IHRvcExlZnQ7CkBAIC0xNzEyLDcgKzE3MTcsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQoMiAq
IHcgKyBtYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93Qmx1ciAtIDIgKiBzaGFk
b3dTcHJlYWQgKyAxLCAwKTsKICAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9m
ZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBzaGFkb3dP
ZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CisgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93RXh0cmFP
ZmZzZXQgPSBzaGFkb3dPZmZzZXQgLSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgY29udGV4
dC0+YmVnaW5QYXRoKCk7CiAgICAgICAgICAgICBjb250ZXh0LT5hZGRQYXRoKFBhdGg6OmNyZWF0
ZVJlY3RhbmdsZShvdXRlclJlY3QpKTsKQEAgLTE3MzcsNyArMTc0Miw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQKIAogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVO
T0REKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIHMtPmNv
bG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dFeHRyYU9mZnNldCwgc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxQYXRoKCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggMzRmNjY1OS4uODJiMzk2MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBi
b29sIFNWR1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIFBhaW50SW5mbwogICAgICAgICAgICAgcmVwYWludFJlY3QgPSBvYmplY3Qt
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAocmVwYWludFJlY3QpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCks
IHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBG
bG9hdFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCksIHNoYWRv
dy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIAotLSAKMS43LjEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63239</attachid>
            <date>2010-08-02 11:17:19 -0700</date>
            <delta_ts>2010-08-03 04:18:00 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>shadow_offset.patch</filename>
            <type>text/plain</type>
            <size>40167</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">RnJvbSA3ODk3NTU3ZTJiNzU5MTIxOWM5YTBlZWQ3Y2VjNDdiZDc4OGEyOTFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+
CkRhdGU6IEZyaSwgMzAgSnVsIDIwMTAgMTk6MjE6MDggKzAyMDAKU3ViamVjdDogW1BBVENIIDEv
NF0gMjAxMC0wOC0wMiAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KCiAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFkZCB0aGUgc2hhZG93
IG9mZnNldCBhcyBhIHBhcmFtZXRlciB0byB0aGUgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkKCiAg
ICAgICAgQWRkIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJhbWV0ZXIgZm9yIHRoZSBzZXRTaGFkb3cg
YW5kIGdldFNoYWRvdwogICAgICAgIEFQSXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3Jh
cGhpY3MgY29udGV4dCB0byBjaGVjayB0aGUKICAgICAgICB2aXNpYmxlIHBhcnQgb2YgdGhlIHNo
YWRvdywgcmVxdWlyZWQgZm9yIHBlcmZvcm1hbmNlLgoKICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCk6CiAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CiAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgogICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Z2V0U2hhZG93KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5o
OgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdQ
YXRoU2hhZG93KToKICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToK
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgogICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgogICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJh
d0dseXBocyk6CiAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CiAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHA6CiAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UXQuY3BwOgogICAgICAgIChXZWJDb3JlOjpkcmF3VGV4dENvbW1vbik6CiAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QpOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lKToKICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VBcmMpOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQ
b2x5Z29uKToKICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZpbGxlZFNoYWRvd1BhdGgpOgogICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgogICAgICAgIChXZWJDb3Jl
OjpkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3cpOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQu
Y3BwOgogICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgogICAgICAgIChXZWJDb3JlOjpTdGls
bEltYWdlOjpkcmF3KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRX
aW4uY3BwOgogICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cp
OgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OmRyYXdHRElHbHlwaHMpOgogICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5
cGhzKToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bmNlLmNwcDoKICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QpOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKICAgICAg
ICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lz
Qm94OjpwYWludCk6CiAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKToKICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dCk6CiAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CiAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgogICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBv
cnQuY3BwOgogICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5k
ZXJTVkdDb250ZW50KToKCjIwMTAtMDgtMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGln
YWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBB
ZGQgdGhlIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93CiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzMjU5CgogICAgICAgIEFkZCBzaGFkb3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIGZvciB0
aGUgc2V0U2hhZG93IGFuZCBnZXRTaGFkb3cKICAgICAgICBBUElzLiBUaGlzIGFsbG93cyB0aGUg
cGxhdGZvcm1zIGdyYXBoaWNzIGNvbnRleHQgdG8gY2hlY2sgdGhlCiAgICAgICAgdmlzaWJsZSBw
YXJ0IG9mIHRoZSBzaGFkb3csIHJlcXVpcmVkIGZvciBwZXJmb3JtYW5jZS4KCiAgICAgICAgKiBX
ZWJLaXRHcmFwaGljcy5jcHA6CiAgICAgICAgKFdlYkRyYXdUZXh0KToKLS0tCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjcgKysrKysrKysr
KysrKysrKysrKysKIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRQcml2YXRlLmggfCAgICAxICsKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcCAgICAgIHwgICAgNSArLQogLi4uL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwICAgICB8ICAgIDMgKy0KIC4uLi9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwIHwgICAgNiArLQogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAgICAgICAgICAgfCAgICA1ICst
CiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgICAgICAgICAgICB8ICAg
IDMgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
IHwgICAyNCArKysrKy0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNw
cCAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5jcHAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5jcHAgICAgIHwgICAgMyArLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcCAgICAgICAgfCAgICA4ICsrLQogLi4uL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcCAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAgICAgfCAgIDExICsr
LS0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCAgICAgICAgIHwg
ICAxMyArKystCiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcCAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxNCArKysrCiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcCAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRp
b25zKCspLCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUzNmI0MjIuLjEyYzg3ZGUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAK
KzIwMTAtMDgtMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBzaGFk
b3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRv
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkK
KworICAgICAgICBBZGQgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRlciBmb3IgdGhlIHNldFNo
YWRvdyBhbmQgZ2V0U2hhZG93CisgICAgICAgIEFQSXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9y
bXMgZ3JhcGhpY3MgY29udGV4dCB0byBjaGVjayB0aGUKKyAgICAgICAgdmlzaWJsZSBwYXJ0IG9m
IHRoZSBzaGFkb3csIHJlcXVpcmVkIGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dHJpYnV0ZXNUb0RlZmF1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdC
b3JkZXJsZXNzUmVjdFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Zv
bnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd1RleHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdGaWxsZWRTaGFkb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Qm9yZGVybGVzc1Jl
Y3RTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdHRElHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVjb3JhdGlvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KToKKwogMjAxMC0wOC0wMSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8
bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggM2IwNTM0OC4uN2U4NThlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRBbGxBdHRyaWJ1dGVzVG9EZWZhdWx0KCkKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQtPnNldFNoYWRvdyhGbG9h
dFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBj
b250ZXh0LT5zZXRTaGFkb3coRmxvYXRTaXplKCksIEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQsIERldmljZUNvbG9yU3BhY2UpOwogICAgIGNvbnRleHQtPnNldEFscGhhKDEpOwog
ICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsK
IH0KQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAgaWYgKCFj
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhl
aWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmlj
ZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKQEAgLTk0MSw3ICs5NDEsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFk
b3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMt
PnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgRmxvYXRTaXplKHdpZHRoLCBoZWln
aHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRv
dyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhKQpAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwK
ICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJbnRTaXpl
KHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dD
b2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgs
IC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVy
LCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCkBAIC05
NjcsNyArOTY3LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogICAgIGlmICghYykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBz
dGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNw
YWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dD
b2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKQEAgLTk4Nyw3ICs5ODcs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKGRjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgYmx1ciwgc2hhZG93Q29sb3IpOwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9y
KTsKICNlbHNlCi0gICAgZGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1
ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBkYy0+c2V0
U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCks
IGJsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYK
IH0KIApAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmFwcGx5U2hhZG93KCkKIAogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNl
dC53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVp
Z2h0KCk7Ci0gICAgYy0+c2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2Up
OworICAgIGMtPnNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNpemUo
d2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiBzdGF0aWMgSW50U2l6ZSBzaXplKEhUTUxJbWFn
ZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IGMyM2NhMWMuLjI4MWVkN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEyOSw5ICsxMjksMTAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IsIGNvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dTaXplID0gc2l6ZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zm
c2V0OwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX2NvbW1v
bi0+c3RhdGUuc2hhZG93Q29sb3IgPSBjb2xvcjsKICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhzaXpl
LCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CkBAIC0xNDUsOSArMTQ2LDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCiAgICAgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwog
fQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRT
aGFkb3coRmxvYXRTaXplJiBzaXplLCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENv
bG9yJiBjb2xvcikgY29uc3QKIHsKICAgICBzaXplID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd1Np
emU7CisgICAgb2Zmc2V0ID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd09mZnNldDsKICAgICBibHVy
ID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3IgPSBtX2NvbW1vbi0+c3Rh
dGUuc2hhZG93Q29sb3I7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IDRkMzE5YmMuLjUwMWIwZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjYyLDggKzI2Miw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkp
OwogICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKLSAgICAgICAgdm9pZCBz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKLSAgICAgICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxvYXQmLCBDb2xv
ciYpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAg
ICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9y
JikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAogICAgICAgICB2b2lkIGRy
YXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0
LCBjb25zdCBDb2xvciYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRQcml2YXRlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dFByaXZhdGUuaAppbmRleCA2YmY0NjViLi5kMjcyMzlhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaApAQCAtNzMs
NiArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcGFpbnRpbmdEaXNh
YmxlZDsKICAgICAgICAgCiAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgICAgICBG
bG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCmluZGV4IDkyMTdhODEuLjI2MzgwYjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcxLDEwICs3MSwxMSBAQCB2
b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAgLy8gVGV4dCBzaGFkb3csIGluc3BpcmVkIGJ5
IEZvbnRNYWMKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwogICAgIENvbG9yIHNoYWRvd0NvbG9y
OwogICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4
dEZpbGwKLSAgICAgICAgICAgICAgICAgICAgICYmIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgICYmIGNvbnRleHQtPmdldFNo
YWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsK
IAogICAgIC8vIFRPRE86IEJsdXIgc3VwcG9ydAogICAgIGlmIChoYXNTaGFkb3cpIHsKQEAgLTE5
NSw3ICsxOTYsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAgLy8gUmUtZW5hYmxl
IHRoZSBwbGF0Zm9ybSBzaGFkb3cgd2UgZGlzYWJsZWQgZWFybGllcgogICAgIGlmIChoYXNTaGFk
b3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFNoYWRv
dyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAppbmRleCA5M2RhZWUzLi4zZjlmYzE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTkyLDkgKzE5
MiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2YQogewogI2lmIEVOQUJMRShGSUxURVJTKQog
ICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAg
ICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoIWNv
bnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpCisg
ICAgaWYgKCFjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvcikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDYWxj
dWxhdGUgZmlsdGVyIHZhbHVlcyB0byBjcmVhdGUgYXBwcm9wcmlhdGUgc2hhZG93LgpAQCAtNjIz
LDEwICs2MjQsMTEgQEAgc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JgogewogI2lmIEVOQUJMRShGSUxU
RVJTKQogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIAotICAg
IGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKSkKKyAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50
U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggNjRmYmVkZi4uYjUxZmY2ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xMzUsOSArMTM1LDEw
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgLy8gRHJhdyB0aGUgc2hhZG93CiAjaWYg
RU5BQkxFKEZJTFRFUlMpCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXpl
IHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0Nv
bG9yOwotICAgIGlmIChjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwogICAgICAg
ICBmbG9hdCBrZXJuZWxTaXplICgwLjApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCmluZGV4IDViOGJhZDMuLjBlMjM1
NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zv
bnRDaHJvbWl1bVdpbi5jcHAKQEAgLTI3NCw5ICsyNzQsMTAgQEAgYm9vbCBUcmFuc3BhcmVuY3lB
d2FyZUdseXBoUGFpbnRlcjo6ZHJhd0dseXBocyhpbnQgbnVtR2x5cGhzLAogICAgIC8vIElmIHRo
ZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFk
b3cgY29sb3IgCiAgICAgLy8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCiAgICAg
RmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBm
bG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChtX2dyYXBo
aWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
KSkgeworICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgc2hhZG93IGFuZCB0aGlzIGNvZGUgaXMgcmVhY2hlZCwgd2luZG93c0NhbkhhbmRs
ZURyYXdUZXh0U2hhZG93KCkKICAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgcmV0dXJuZWQg
dHJ1ZSBkdXJpbmcgdGhlIGN0b3IgaW5pdGlhdGl6YXRpb24gb2YgbV91c2VHREkKICAgICAgICAg
QVNTRVJUKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KTsKQEAgLTQ4NCw5ICs0ODUsMTAgQEAg
dm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZp
bGwgY29sb3IgYW5kIHNoYWRvdyBjb2xvciAKICAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0
aG91dCBza2lhLiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhp
Y3NDb250ZXh0KSkgeworICAgIGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSAmJiB3aW5kb3dzQ2Fu
SGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewogICAgICAgICBDT0xPUlJF
RiB0ZXh0Q29sb3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUs
IHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVl
KCkpKTsKICAgICAgICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IoaGRj
KTsKICAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgdGV4dENvbG9yKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKaW5kZXggOTJmODgxNi4uMDU3ZWNhNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTI0MiwxMCArMjQyLDEx
IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAKICAgICAvLyBUZXh0IHNoYWRvdywgaW5zcGly
ZWQgYnkgRm9udE1hYwogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7CiAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CiAgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9
PSBjVGV4dEZpbGwgJiYKLSAgICAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgLy8g
VE9ETzogQmx1ciBzdXBwb3J0CiAgICAgaWYgKGhhc1NoYWRvdykgewpAQCAtMjkwLDcgKzI5MSw3
IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAKICAgICAvLyBSZS1lbmFibGUgdGhlIHBsYXRm
b3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBlYXJsaWVyCiAgICAgaWYgKGhhc1NoYWRvdykKLSAgICAg
ICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3Bh
Y2UpOwogCiAgICAgLy8gUGFuZ28gc29tZXRpbWVzIGxlYXZlcyBiZWhpbmQgcGF0aHMgd2UgZG9u
J3Qgd2FudAogICAgIGNhaXJvX25ld19wYXRoKGNyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udFF0LmNwcAppbmRleCA1OTMyMGNiLi4zOWU1YzliIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UXQuY3BwCkBAIC0xMTAsOSArMTEwLDEwIEBAIHN0YXRpYyB2b2lkIGRy
YXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEZsb2F0CiAKICAgICAvLyB0ZXh0IHNoYWRvdwogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBib29sIGhhc1NoYWRvdyA9IGN0eC0+dGV4dERyYXdp
bmdNb2RlKCkgPT0gY1RleHRGaWxsICYmIGN0eC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBib29sIGhhc1NoYWRvdyA9IGN0eC0+dGV4dERyYXdp
bmdNb2RlKCkgPT0gY1RleHRGaWxsICYmIGN0eC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRv
d09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgaWYgKGZyb20gPiAwIHx8
IHRvIDwgcnVuLmxlbmd0aCgpKSB7CiAgICAgICAgIGlmIChpc0NvbXBsZXhUZXh0KSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmlu
ZGV4IGU1NjBlMTUuLjBkYThmMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0zMzUsOSArMzM1LDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgaWYgKG1f
Y29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgRmxvYXRTaXpl
IHNoYWRvd1NpemU7CisgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgICAgIGZs
b2F0IHNoYWRvd0JsdXI7CiAgICAgICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgICAgICBpZiAo
Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgICAg
ICBpZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSByZWN0OwogICAg
ICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5o
ZWlnaHQoKSk7CiAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUoc3RhdGljX2Nhc3Q8aW50
PihwLT5wZW4oKS53aWR0aEYoKSkpOwpAQCAtMzczLDkgKzM3NCwxMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQm
IHBvaW50MikKICAgICBhZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMocDEsIHAyLCB3aWR0aCwg
c3R5bGUpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwot
ICAgIGlmICh0ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYgZ2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmICh0ZXh0RHJhd2luZ01v
ZGUoKSA9PSBjVGV4dEZpbGwgJiYgZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwg
c2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAg
cC0+dHJhbnNsYXRlKHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAg
ICAgICAgIHAtPnNldFBlbihzaGFkb3dDb2xvcik7CkBAIC00NzUsMTEgKzQ3NywxMiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFy
dEFuZ2xlLCBpbnQgYW5nbGVTcAogICAgIHAtPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlh
bGlhc2luZywgdHJ1ZSk7CiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNp
emUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CiAgICAgc3RhcnRBbmdsZSAqPSAxNjsKICAgICBhbmdsZVNwYW4gKj0gMTY7Ci0gICAg
aWYgKGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAg
ICBpZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpKSB7CiAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAgcC0+dHJhbnNsYXRlKHNo
YWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIFFQZW4gcGVu
KHAtPnBlbigpKTsKQEAgLTUxMCw5ICs1MTMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMK
ICAgICBwLT5zYXZlKCk7CiAgICAgcC0+c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFz
aW5nLCBzaG91bGRBbnRpYWxpYXMpOwogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBz
aGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKSkgeworICAgIGlmIChnZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAg
ICBwLT50cmFuc2xhdGUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsK
ICAgICAgICAgaWYgKHAtPmJydXNoKCkuc3R5bGUoKSAhPSBRdDo6Tm9CcnVzaCkKQEAgLTU1Miw5
ICs1NTYsMTAgQEAgUVBlbiBHcmFwaGljc0NvbnRleHQ6OnBlbigpCiBzdGF0aWMgdm9pZCBpbmxp
bmUgZHJhd0ZpbGxlZFNoYWRvd1BhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBRUGFpbnRl
ciogcCwgY29uc3QgUVBhaW50ZXJQYXRoJiBwYXRoKQogewogICAgIEZsb2F0U2l6ZSBzaGFkb3dT
aXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsK
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoY29udGV4dC0+Z2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikp
IHsKICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5o
ZWlnaHQoKSk7CiAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgsIFFCcnVzaChzaGFkb3dDb2xvcikp
OwogICAgICAgICBwLT50cmFuc2xhdGUoLXNoYWRvd1NpemUud2lkdGgoKSwgLXNoYWRvd1NpemUu
aGVpZ2h0KCkpOwpAQCAtNTk1LDkgKzYwMCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUGF0aCgpCiAgICAgcGF0aC5zZXRGaWxsUnVsZSh0b1F0RmlsbFJ1bGUoZmlsbFJ1bGUoKSkp
OwogCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNl
dDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlm
IChnZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAg
aWYgKGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKSkgewogICAgICAgICBRVHJhbnNmb3JtIHQocC0+d29ybGRUcmFuc2Zvcm0oKSk7CiAg
ICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0
KCkpOwogICAgICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOwpAQCAtNjI0LDkgKzYzMCwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCgpCiBzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUVBhaW50ZXIq
IHAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsK
KyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAg
Q29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXpl
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZG93
KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAg
ICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KHJlY3QpOwogICAgICAgICBzaGFkb3dSZWN0Lm1v
dmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKICAgICAgICAgcC0+
ZmlsbFJlY3Qoc2hhZG93UmVjdCwgUUNvbG9yKHNoYWRvd0NvbG9yKSk7CkBAIC03MDksOSArNzE2
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgRmxvYXRSZWN0IG5vcm1hbGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CiAK
ICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owog
ICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgYm9vbCBo
YXNTaGFkb3cgPSBnZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Ip
OworICAgIGJvb2wgaGFzU2hhZG93ID0gZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogICAgIEZsb2F0UmVjdCBzaGFkb3dEZXN0UmVj
dDsKICAgICBRSW1hZ2UqIHNoYWRvd0ltYWdlID0gMDsKICAgICBRUGFpbnRlciogcFNoYWRvdyA9
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBlMGFjNTc0
Li5kNzk1OWExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAg
LTE5MSw5ICsxOTEsMTAgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIHBhaW50ZXItPnNldENvbXBvc2l0aW9u
TW9kZShjb21wb3NpdGlvbk1vZGUpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dTaXpl
LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBGbG9h
dFJlY3Qgc2hhZG93SW1hZ2VSZWN0KG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBzaGFkb3dJbWFn
ZVJlY3QubW92ZShzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggOWM2
YWNhYi4uMWRmMTNmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJ
bWFnZVF0LmNwcApAQCAtNzYsMTAgKzc2LDExIEBAIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogCiAgICAgY3R4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAorICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAg
ICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xv
ciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6
ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd0ltYWdlUmVjdChub3JtYWxpemVkRHN0KTsKICAgICAgICAgc2hhZG93SW1h
Z2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKaW5kZXgg
NjU5NWY2Yi4uMjgwM2ZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1NraWFGb250V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
U2tpYUZvbnRXaW4uY3BwCkBAIC0yMjMsMTAgKzIyMywxMSBAQCB2b2lkIFNraWFXaW5PdXRsaW5l
Q2FjaGU6OnJlbW92ZVBhdGhzRm9yRm9udChIRk9OVCBoZm9udCkKIGJvb2wgd2luZG93c0Nhbkhh
bmRsZURyYXdUZXh0U2hhZG93KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCAqY29udGV4dCkKIHsK
ICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owog
ICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAKLSAgICBib29s
IGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvcik7CisgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT5nZXRTaGFkb3coc2hh
ZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAgICAgcmV0
dXJuIChoYXNTaGFkb3cgJiYgKHNoYWRvd0JsdXIgPT0gMCkgJiYgKHNoYWRvd0NvbG9yLmFscGhh
KCkgPT0gMjU1KSAmJiAoY29udGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggMzRm
OWIwNy4uYjgyYmM0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dX
aW4uY3BwCkBAIC0xNDEsOSArMTQxLDEwIEBAIHN0YXRpYyB2b2lkIGRyYXdHRElHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhCiAgICAg
ICAgIGRyYXdJbnRvQml0bWFwID0gZmlsbENvbG9yLmFscGhhKCkgIT0gMjU1IHx8IGdyYXBoaWNz
Q29udGV4dC0+aW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICBpZiAoIWRyYXdJbnRvQml0
bWFwKSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBibHVyOwogICAgICAgICAgICAgQ29s
b3IgY29sb3I7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaXplLCBi
bHVyLCBjb2xvcik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaXpl
LCBzaGFkb3dPZmZzZXQsIGJsdXIsIGNvbG9yKTsKICAgICAgICAgICAgIGRyYXdJbnRvQml0bWFw
ID0gIXNpemUuaXNFbXB0eSgpIHx8IGJsdXI7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTAsOSAr
MzUxLDEwIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvCiAgICAgd2tTZXRDR0NvbnRleHRGb250
UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LT5pc1N5c3RlbUZvbnQoKSwgZmFsc2UsIGZv
bnQtPnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5n
ZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
cik7CiAKICAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERy
YXdpbmdNb2RlKCkgPT0gY1RleHRGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hh
ZG93Qmx1cjsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CkBAIC0zNzgsNyArMzgwLDcgQEAg
dm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm8KICAgICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93
KQotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCiAgICAgd2tSZXN0b3JlRm9udFNtb290aGlu
Z1N0eWxlKGNnQ29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5j
cHAKaW5kZXggZTQ0NjZjOC4uMDE4ZTkxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAKQEAgLTEyNjEsMTAg
KzEyNjEsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiBmaWxsUmVjdCwgY29uc3QgSW50U2l6ZSYgdG8KICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAg
ICBmbG9hdCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICAgICAg
Ci0gICAgZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAg
ICBnZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CiAgICAgCiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCkBAIC0x
Njg4LDEwICsxNjg5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0IEdseXBoQnVmZmVyCiAgICAgfQogCiAgICAg
RmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBm
bG9hdCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBib29sIGhh
c1NoYWRvdyA9IHRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0RmlsbAotICAgICAgICAmJiBnZXRT
aGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpCisgICAgICAgICYmIGdl
dFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
KQogICAgICAgICAmJiBzaGFkb3dDb2xvci5hbHBoYSgpOwogICAgIENPTE9SUkVGIHNoYWRvd1JH
QkNvbG9yOwogICAgIEZsb2F0UG9pbnQgdHJTaGFkb3dQb2ludDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmNwcAppbmRleCA2MWNkNTI0Li45YWEzZTNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3gu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KHRleHRDb2xvciwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBm
YWxzZTsKICAgICBpZiAoc3R5bGUtPnRleHRTaGFkb3coKSkgewotICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3coSW50U2l6ZShzdHlsZS0+dGV4dFNoYWRvdygpLT54KCksIHN0eWxlLT50ZXh0U2hh
ZG93KCktPnkoKSksCisgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHN0eWxlLT50
ZXh0U2hhZG93KCktPngoKSwgc3R5bGUtPnRleHRTaGFkb3coKS0+eSgpKSwgRmxvYXRTaXplKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+dGV4dFNoYWRvdygpLT5ibHVyKCks
IHN0eWxlLT50ZXh0U2hhZG93KCktPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogICAg
ICAgICBzZXRTaGFkb3cgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKaW5kZXggZGZlNzU2MS4uODM2OTE5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVj
b3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBiCiAgICAgICAg
ICAgICAgICAgICAgIHR5IC09IGV4dHJhT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBleHRy
YU9mZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSAtIGV4dHJhT2Zmc2V0
KSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+
eSgpIC0gZXh0cmFPZmZzZXQpLCBGbG9hdFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwg
c2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7CiAgICAgICAgICAg
ICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzaGFkb3cgPSBzaGFkb3ct
Pm5leHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggNTBmNmNmYS4uNmE1MjNkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTMwMiwyMSArMzAyLDIyIEBAIEZsb2F0U2l6ZSBJbmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1Rv
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKIAogICAgIEZsb2F0U2l6
ZSBleHRyYU9mZnNldDsKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KHNoYWRvdy0+eCgpLCBz
aGFkb3ctPnkoKSk7CisgICAgRmxvYXRTaXplIHNoYWRvd0V4dHJhT2Zmc2V0ID0gc2hhZG93T2Zm
c2V0OwogICAgIGludCBzaGFkb3dCbHVyID0gc2hhZG93LT5ibHVyKCk7CiAgICAgY29uc3QgQ29s
b3ImIHNoYWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCiAgICAgaWYgKHNoYWRvdy0+bmV4
dCgpIHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVj
dCh0ZXh0UmVjdCk7CiAgICAgICAgIHNoYWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dCbHVyKTsKLSAg
ICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd09mZnNldCk7CisgICAgICAgIHNoYWRvd1JlY3Qu
bW92ZShzaGFkb3dFeHRyYU9mZnNldCk7CiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAg
ICAgY29udGV4dC0+Y2xpcChzaGFkb3dSZWN0KTsKIAotICAgICAgICBleHRyYU9mZnNldCA9IEZs
b2F0U2l6ZSgwLCAyICogdGV4dFJlY3QuaGVpZ2h0KCkgKyBtYXgoMC4wZiwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKSArIHNoYWRvd0JsdXIpOwotICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFP
ZmZzZXQ7CisgICAgICAgIGV4dHJhT2Zmc2V0ID0gRmxvYXRTaXplKDAsIDIgKiB0ZXh0UmVjdC5o
ZWlnaHQoKSArIG1heCgwLjBmLCBzaGFkb3dFeHRyYU9mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dC
bHVyKTsKKyAgICAgICAgc2hhZG93RXh0cmFPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IsIGNvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQtPnNldFNoYWRv
dyhzaGFkb3dFeHRyYU9mZnNldCwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGV4dHJhT2Zmc2V0Owog
fQogCkBAIC03MzksNyArNzQwLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRp
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludCB0eSwgaW4KICAgICAgICAg
ICAgICAgICB0eSAtPSBleHRyYU9mZnNldDsKICAgICAgICAgICAgICAgICBleHRyYU9mZnNldCA9
IDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coSW50U2l6
ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1cigp
LCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0
U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpIC0gZXh0cmFPZmZzZXQpLCBG
bG9hdFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCksIHNoYWRv
dy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7CiAgICAgICAgICAgICBzZXRTaGFkb3cgPSB0cnVlOwog
ICAgICAgICAgICAgc2hhZG93ID0gc2hhZG93LT5uZXh0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0ZGRkNjZiLi4xZjdkNTU5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01LDYg
KzUsNyBAQAogICogICAgICAgICAgIChDKSAyMDA1LCAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIElnYWxpYSwgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNjExLDEwICsxNjEyLDE0
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGZpbGwg
anVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0aW9uIHNvIHRoYXQg
dGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChkdWUgdG8gYW50aWFs
aWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KICAgICAgICAgICAgIEludFNp
emUgZXh0cmFPZmZzZXQodyArIG1heCgwLCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dC
bHVyICsgMiAqIHNoYWRvd1NwcmVhZCArIDEsIDApOwotICAgICAgICAgICAgc2hhZG93T2Zmc2V0
IC09IGV4dHJhT2Zmc2V0OworICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd0V4dHJhT2Zmc2V0
ID0gc2hhZG93T2Zmc2V0IC0gZXh0cmFPZmZzZXQ7CiAgICAgICAgICAgICBmaWxsUmVjdC5tb3Zl
KGV4dHJhT2Zmc2V0KTsKIAotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICAvLyBBZGQgdGhlIHNwcmVhZCB0byBzZXQgdGhlIHJlYWwgb2Zmc2V0CisgICAgICAgICAg
ICBzaGFkb3dPZmZzZXQuc2V0V2lkdGgoc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBzaGFkb3dTcHJl
YWQpOworICAgICAgICAgICAgc2hhZG93T2Zmc2V0LnNldEhlaWdodChzaGFkb3dPZmZzZXQuaGVp
Z2h0KCkgKyBzaGFkb3dTcHJlYWQpOworCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3co
c2hhZG93RXh0cmFPZmZzZXQsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKSB7CiAg
ICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKICAgICAgICAgICAg
ICAgICBJbnRTaXplIHRvcExlZnRUb0NsaXBPdXQgPSB0b3BMZWZ0OwpAQCAtMTcxMiw3ICsxNzE3
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICBJbnRTaXplIGV4dHJh
T2Zmc2V0KDIgKiB3ICsgbWF4KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd0JsdXIg
LSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUoZXh0cmFPZmZzZXQud2lkdGgoKSwgZXh0cmFPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAgICAg
ICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OworICAgICAgICAgICAgRmxvYXRTaXplIHNo
YWRvd0V4dHJhT2Zmc2V0ID0gc2hhZG93T2Zmc2V0IC0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAg
ICAgIGNvbnRleHQtPmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgY29udGV4dC0+YWRkUGF0aChQ
YXRoOjpjcmVhdGVSZWN0YW5nbGUob3V0ZXJSZWN0KSk7CkBAIC0xNzM3LDcgKzE3NDIsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxSdWxl
KFJVTEVfRVZFTk9ERCk7CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENv
bG9yLCBzLT5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93RXh0cmFPZmZzZXQsIHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUGF0aCgpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3Jl
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDM0ZjY2NTkuLjgy
YjM5NjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgYm9vbCBTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50
KFJlbmRlck9iamVjdCogb2JqZWN0LCBQYWludEluZm8KICAgICAgICAgICAgIHJlcGFpbnRSZWN0
ID0gb2JqZWN0LT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCiAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwKHJlcGFpbnRSZWN0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSksIHNoYWRv
dy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRv
dy0+eSgpKSwgRmxvYXRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSksIHNoYWRvdy0+Ymx1
cigpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
ZDJiY2M3Mi4uZTdhMjRiOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOC0wMiAgQWxlamFu
ZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJh
bWV0ZXIgdG8gdGhlIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzI1OQorCisgICAgICAgIEFkZCBzaGFk
b3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIGZvciB0aGUgc2V0U2hhZG93IGFuZCBnZXRTaGFkb3cK
KyAgICAgICAgQVBJcy4gVGhpcyBhbGxvd3MgdGhlIHBsYXRmb3JtcyBncmFwaGljcyBjb250ZXh0
IHRvIGNoZWNrIHRoZQorICAgICAgICB2aXNpYmxlIHBhcnQgb2YgdGhlIHNoYWRvdywgcmVxdWly
ZWQgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViS2l0R3JhcGhpY3MuY3BwOgorICAg
ICAgICAoV2ViRHJhd1RleHQpOgorCiAyMDEwLTA3LTMxICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeDogV2luZG93cy4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwIGIvV2ViS2l0L3dpbi9XZWJL
aXRHcmFwaGljcy5jcHAKaW5kZXggZTllMjVhYi4uNGNhNGFhMCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZv
KiBpbmZvKQogICAgICAgICAvLyBTZXQgc2hhZG93IHNldHRpbmcKICAgICAgICAgaWYgKGluZm8t
PnN0cnVjdFNpemUgPT0gc2l6ZW9mKFdlYlRleHRSZW5kZXJJbmZvKSAmJgogICAgICAgICAgICAg
KGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+
c2hhZG93Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xvcikpCi0gICAgICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhGbG9hdFNpemUoaW5mby0+c2hhZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZz
ZXQuY3kpLCBpbmZvLT5zaGFkb3dCbHVyLCBpbmZvLT5zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoaW5mby0+c2hh
ZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kpLCBGbG9hdFNpemUoaW5mby0+c2hh
ZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kpLCBpbmZvLT5zaGFkb3dCbHVyLCBp
bmZvLT5zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAKICAgICAgICAgV2ViQ29yZURy
YXdUZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3RyaW5nLCBpbmZvLT5wdCwgbWFrZUZvbnQoKihp
bmZvLT5kZXNjcmlwdGlvbikpLCBpbmZvLT5jb2xvciwgaW5mby0+dW5kZXJsaW5lZEluZGV4KTsK
ICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7Ci0tIAoxLjcuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63321</attachid>
            <date>2010-08-03 04:18:00 -0700</date>
            <delta_ts>2010-08-18 12:08:24 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>shadow_offset.patch</filename>
            <type>text/plain</type>
            <size>41692</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">RnJvbSA4ZDI5NmZmMzkwYmJlMWY0M2MyMDFlNWJlMzFjMGRkN2IzOGViNjMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+
CkRhdGU6IEZyaSwgMzAgSnVsIDIwMTAgMTk6MjE6MDggKzAyMDAKU3ViamVjdDogW1BBVENIIDEv
NV0gMjAxMC0wOC0wMiAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KCiAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFkZCB0aGUgc2hhZG93
IG9mZnNldCBhcyBhIHBhcmFtZXRlciB0byB0aGUgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkKCiAg
ICAgICAgQWRkIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJhbWV0ZXIgZm9yIHRoZSBzZXRTaGFkb3cg
YW5kIGdldFNoYWRvdwogICAgICAgIEFQSXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3Jh
cGhpY3MgY29udGV4dCB0byBjaGVjayB0aGUKICAgICAgICB2aXNpYmxlIHBhcnQgb2YgdGhlIHNo
YWRvdywgcmVxdWlyZWQgZm9yIHBlcmZvcm1hbmNlLgoKICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCk6CiAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CiAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgogICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Z2V0U2hhZG93KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5o
OgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdQ
YXRoU2hhZG93KToKICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToK
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgogICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgogICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJh
d0dseXBocyk6CiAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CiAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHA6CiAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udE1hYy5tbToKICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocykKICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdU
ZXh0Q29tbW9uKToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdCk6CiAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgogICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24pOgogICAgICAgIChXZWJDb3JlOjpkcmF3Rmls
bGVkU2hhZG93UGF0aCk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aCk6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyk6CiAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgogICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6
CiAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmRyYXcpOgogICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OndpbmRvd3ND
YW5IYW5kbGVEcmF3VGV4dFNoYWRvdyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZHJhd0dESUdseXBocyk6CiAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwOgogICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1RleHQpOgogICAgICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRU
ZXh0RGVjb3JhdGlvbnMpOgogICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgog
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250
ZXh0KToKICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToK
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CiAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CiAgICAgICAgKiBy
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgoKMjAxMC0wOC0wMiAgQWxlamFu
ZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgogICAgICAgIEFkZCB0aGUgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRl
ciB0byB0aGUgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkKCiAgICAgICAgQWRkIHNoYWRvdyBvZmZz
ZXQgYXMgYSBwYXJhbWV0ZXIgZm9yIHRoZSBzZXRTaGFkb3cgYW5kIGdldFNoYWRvdwogICAgICAg
IEFQSXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3JhcGhpY3MgY29udGV4dCB0byBjaGVj
ayB0aGUKICAgICAgICB2aXNpYmxlIHBhcnQgb2YgdGhlIHNoYWRvdywgcmVxdWlyZWQgZm9yIHBl
cmZvcm1hbmNlLgoKICAgICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKICAgICAgICAoV2ViRHJh
d1RleHQpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA2OSArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICAgfCAgIDE0ICsrLS0KIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgIHwgICAgNiArLQogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICAgfCAgICA0ICstCiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaCB8ICAgIDEgKwog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwICAgICAgfCAgICA1
ICstCiAuLi4vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwICAgICAgICB8
ICAgIDYgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAg
ICAgIHwgICAgMyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1
bVdpbi5jcHAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3Rr
LmNwcCAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRNYWMubW0gICAgICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgMjQgKysrKystLQogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgICAgICB8ICAgIDMgKy0KIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAgICAgIHwgICAgMyAr
LQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCAgICAgICAgfCAg
ICA4ICsrLQogLi4uL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcCAgICAg
ICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAgICAgICAgICAgICAgICAgfCAgIDExICsrLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCAgICAgICAgIHwgICAxMyArKystCiBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmNwcCAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYktpdC93aW4vQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrCiBXZWJLaXQv
d2luL1dlYktpdEdyYXBoaWNzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDI1
IGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1ZTIy
ZWEuLjM5MDE0ZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTAtMDgtMDIgIEFsZWphbmRybyBHLiBDYXN0
cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRoZSBzaGFkb3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIHRvIHRo
ZSBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkKKworICAgICAgICBBZGQgc2hhZG93IG9mZnNldCBh
cyBhIHBhcmFtZXRlciBmb3IgdGhlIHNldFNoYWRvdyBhbmQgZ2V0U2hhZG93CisgICAgICAgIEFQ
SXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3JhcGhpY3MgY29udGV4dCB0byBjaGVjayB0
aGUKKyAgICAgICAgdmlzaWJsZSBwYXJ0IG9mIHRoZSBzaGFkb3csIHJlcXVpcmVkIGZvciBwZXJm
b3JtYW5jZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFs
bEF0dHJpYnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdUZXh0Q29tbW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbik6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3RmlsbGVkU2hhZG93UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
R0RJR2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0
Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRvUmVu
ZGVyU1ZHQ29udGVudCk6CisKIDIwMTAtMDctMzAgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBk
aGNwLTE3Mi0xNi0xNC0xMi5sb24uY29ycC5nb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCAzYjA1MzQ4Li43ZTg1OGU5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNzYsNyArMTc2
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dHJpYnV0ZXNUb0Rl
ZmF1bHQoKQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4
dC0+c2V0U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQsIERldmljZUNv
bG9yU3BhY2UpOworICAgIGNvbnRleHQtPnNldFNoYWRvdyhGbG9hdFNpemUoKSwgRmxvYXRTaXpl
KCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCwgRGV2aWNlQ29sb3JTcGFjZSk7CiAgICAgY29udGV4
dC0+c2V0QWxwaGEoMSk7CiAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZVNvdXJjZU92ZXIpOwogfQpAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUo
d2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFk
b3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQpA
QCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBpZiAoIWMpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0
KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29s
b3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9h
dFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIs
IGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0LCBmbG9hdCBibHVyLAogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+
c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFk
b3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgc3Rh
dGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFj
ZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQg
YiwgZmxvYXQgYSkKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAg
ICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3
aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAt
aGVpZ2h0KSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KQpAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBDR0NvbnRl
eHRTZXRTaGFkb3dXaXRoQ29sb3IoZGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRv
d1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzaGFkb3dDb2xvcik7CiAgICAgQ0dDb2xvclJl
bGVhc2Uoc2hhZG93Q29sb3IpOwogI2Vsc2UKLSAgICBkYy0+c2V0U2hhZG93KEludFNpemUod2lk
dGgsIC1oZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3Bh
Y2UpOworICAgIGRjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xv
clNwYWNlKTsKICNlbmRpZgogfQogCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3coKQogCiAgICAgZmxvYXQgd2lkdGggPSBzdGF0
ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgZmxvYXQgaGVpZ2h0ID0gc3RhdGUoKS5t
X3NoYWRvd09mZnNldC5oZWlnaHQoKTsKLSAgICBjLT5zZXRTaGFkb3coRmxvYXRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhl
aWdodCksIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0
YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHN0YXRpYyBJbnRT
aXplIHNpemUoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYzIzY2ExYy4uMjgxZWQ3ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTI5LDkg
KzEyOSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VD
b2xvcihjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRT
aGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFk
b3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAg
bV9jb21tb24tPnN0YXRlLnNoYWRvd1NpemUgPSBzaXplOworICAgIG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd0JsdXIgPSBi
bHVyOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvciA9IGNvbG9yOwogICAgIHNldFBs
YXRmb3JtU2hhZG93KHNpemUsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKQEAgLTE0NSw5ICsx
NDYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBjbGVhclBs
YXRmb3JtU2hhZG93KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxv
YXRTaXplJiBzaXplLCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAorYm9vbCBHcmFw
aGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIHNpemUsIEZsb2F0U2l6ZSYgb2Zmc2V0
LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIHNpemUgPSBtX2NvbW1v
bi0+c3RhdGUuc2hhZG93U2l6ZTsKKyAgICBvZmZzZXQgPSBtX2NvbW1vbi0+c3RhdGUuc2hhZG93
T2Zmc2V0OwogICAgIGJsdXIgPSBtX2NvbW1vbi0+c3RhdGUuc2hhZG93Qmx1cjsKICAgICBjb2xv
ciA9IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvcjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNGQzMTliYy4uNTAxYjBkNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yNjIsOCArMjYyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IAotICAgICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNp
emUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIEZsb2F0U2l6
ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOwog
CiAgICAgICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBpbnQg
d2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDZiZjQ2NWIuLmQyNzIz
OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
UHJpdmF0ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
UHJpdmF0ZS5oCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBwYWludGluZ0Rpc2FibGVkOwogICAgICAgICAKICAgICAgICAgRmxvYXRTaXplIHNoYWRv
d1NpemU7CisgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgICAgIGZsb2F0IHNo
YWRvd0JsdXI7CiAgICAgICAgIENvbG9yIHNoYWRvd0NvbG9yOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggOTIxN2E4MS4uMjYzODBiOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAt
NzEsMTAgKzcxLDExIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAKICAgICAvLyBUZXh0IHNo
YWRvdywgaW5zcGlyZWQgYnkgRm9udE1hYwogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7CiAgICAg
Q29sb3Igc2hhZG93Q29sb3I7CiAgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJh
d2luZ01vZGUoKSAmIGNUZXh0RmlsbAotICAgICAgICAgICAgICAgICAgICAgJiYgY29udGV4dC0+
Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAg
JiYgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogQmx1ciBzdXBwb3J0CiAgICAgaWYgKGhh
c1NoYWRvdykgewpAQCAtMTk1LDcgKzE5Niw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAK
ICAgICAvLyBSZS1lbmFibGUgdGhlIHBsYXRmb3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBlYXJsaWVy
CiAgICAgaWYgKGhhc1NoYWRvdykKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYzZmM5NDMuLmQzYzQ2MjEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC0xOTIsOSArMTkyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiB7CiAjaWYg
RU5BQkxFKEZJTFRFUlMpCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXpl
IHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0Nv
bG9yOwotICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKSkKKyAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIC8vIENhbGN1bGF0ZSBmaWx0ZXIgdmFsdWVzIHRvIGNyZWF0ZSBhcHByb3ByaWF0
ZSBzaGFkb3cuCkBAIC02MjMsMTAgKzYyNCwxMSBAQCBzdGF0aWMgdm9pZCBkcmF3Qm9yZGVybGVz
c1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmCiB7
CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxv
YXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNo
YWRvd0NvbG9yOwogCi0gICAgaWYgKCFjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IpKQorICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCA2NGZiZWRmLi5iNTFmZjZm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAK
QEAgLTEzNSw5ICsxMzUsMTAgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAvLyBEcmF3
IHRoZSBzaGFkb3cKICNpZiBFTkFCTEUoRklMVEVSUykKICAgICBGbG9hdFNpemUgc2hhZG93U2l6
ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAg
ICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7
CiAgICAgICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICAgICAgRmxvYXRSZWN0IHNo
YWRvd1JlY3Q7CiAgICAgICAgIGZsb2F0IGtlcm5lbFNpemUgKDAuMCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKaW5k
ZXggNWI4YmFkMy4uMGUyMzU3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcApAQCAtMjc0LDkgKzI3NCwxMCBAQCBi
b29sIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKGludCBudW1HbHlw
aHMsCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZp
bGwgY29sb3IgYW5kIHNoYWRvdyBjb2xvciAKICAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0
aG91dCBza2lhLiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
Ci0gICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsK
ICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzaGFkb3cgYW5kIHRoaXMgY29kZSBpcyByZWFjaGVk
LCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coKQogICAgICAgICAvLyB3aWxsIGhhdmUg
YWxyZWFkeSByZXR1cm5lZCB0cnVlIGR1cmluZyB0aGUgY3RvciBpbml0aWF0aXphdGlvbiBvZiBt
X3VzZUdESQogICAgICAgICBBU1NFUlQoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpOwpAQCAt
NDg0LDkgKzQ4NSwxMCBAQCB2b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAvLyBJZiB0aGVyZSBpcyBhIG5vbi1ibHVyIHNoYWRv
dyBhbmQgYm90aCB0aGUgZmlsbCBjb2xvciBhbmQgc2hhZG93IGNvbG9yIAogICAgIC8vIGFyZSBv
cGFxdWUsIGhhbmRsZSB3aXRob3V0IHNraWEuIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOwor
ICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hh
ZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpICYmIHdpbmRvd3NDYW5IYW5kbGVEcmF3
VGV4dFNoYWRvdyhncmFwaGljc0NvbnRleHQpKSB7CisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+
Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IpICYmIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhncmFwaGljc0NvbnRleHQpKSB7
CiAgICAgICAgIENPTE9SUkVGIHRleHRDb2xvciA9IHNraWE6OlNrQ29sb3JUb0NPTE9SUkVGKFNr
Q29sb3JTZXRBUkdCKDI1NSwgc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCks
IHNoYWRvd0NvbG9yLmJsdWUoKSkpOwogICAgICAgICBDT0xPUlJFRiBzYXZlZFRleHRDb2xvciA9
IEdldFRleHRDb2xvcihoZGMpOwogICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCB0ZXh0Q29sb3Ip
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAppbmRleCA5MmY4ODE2
Li4wNTdlY2E0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250
R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApA
QCAtMjQyLDEwICsyNDIsMTEgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKIAogICAgIC8vIFRl
eHQgc2hhZG93LCBpbnNwaXJlZCBieSBGb250TWFjCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7
CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0gMDsK
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpID09IGNUZXh0RmlsbCAmJgotICAgICAgICBjb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgICAgICBjb250ZXh0
LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CiAKICAgICAvLyBUT0RPOiBCbHVyIHN1cHBvcnQKICAgICBpZiAoaGFzU2hhZG93KSB7
CkBAIC0yOTAsNyArMjkxLDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKIAogICAgIC8vIFJl
LWVuYWJsZSB0aGUgcGxhdGZvcm0gc2hhZG93IHdlIGRpc2FibGVkIGVhcmxpZXIKICAgICBpZiAo
aGFzU2hhZG93KQotICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAKICAgICAvLyBQYW5nbyBzb21ldGltZXMgbGVhdmVzIGJl
aGluZCBwYXRocyB3ZSBkb24ndCB3YW50CiAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbSBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KaW5kZXggYWViMGFiMi4uNDVhYTU0NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCkBAIC0xMzYsMTAgKzEz
NiwxMSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAKICAgICBGbG9hdFNpemUgc2hhZG93
U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7
CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9
IGNvbnRleHQtPmZpbGxDb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBjb250ZXh0LT5nZXRTaGFkb3co
c2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAg
ICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IGNU
ZXh0RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRm
b3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsK
QEAgLTE2NSw3ICsxNjYsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgIH0KIAogICAg
IGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvciwgZmlsbENvbG9yU3BhY2UpOwogCiAgICAgaWYgKG9yaWdpbmFsU2hvdWxkVXNl
Rm9udFNtb290aGluZyAhPSBuZXdTaG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBDR0Nv
bnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjZ0NvbnRleHQsIG9yaWdpbmFsU2hvdWxkVXNlRm9u
dFNtb290aGluZyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXgg
NTkzMjBjYi4uMzllNWM5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNw
cApAQCAtMTEwLDkgKzExMCwxMCBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGlj
c0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogCiAgICAgLy8g
dGV4dCBzaGFkb3cKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
Ci0gICAgYm9vbCBoYXNTaGFkb3cgPSBjdHgtPnRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0Rmls
bCAmJiBjdHgtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7
CisgICAgYm9vbCBoYXNTaGFkb3cgPSBjdHgtPnRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0Rmls
bCAmJiBjdHgtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKTsKIAogICAgIGlmIChmcm9tID4gMCB8fCB0byA8IHJ1bi5sZW5ndGgoKSkg
ewogICAgICAgICBpZiAoaXNDb21wbGV4VGV4dCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCBlNTYwZTE1Li4wZGE4ZjFl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcApAQCAtMzM1LDkgKzMzNSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Jl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuc2hhZG93
Q29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgICAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAg
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICAgICAgaWYgKGdldFNoYWRvdyhzaGFkb3dTaXpl
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICAgICAgaWYgKGdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAg
ICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gcmVjdDsKICAgICAgICAgICAgIHNoYWRvd1JlY3Qu
bW92ZShzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKHN0YXRpY19jYXN0PGludD4ocC0+cGVuKCkud2lkdGhGKCkp
KTsKQEAgLTM3Myw5ICszNzQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNv
bnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgYWRqdXN0
TGluZVRvUGl4ZWxCb3VuZGFyaWVzKHAxLCBwMiwgd2lkdGgsIHN0eWxlKTsKIAogICAgIEZsb2F0
U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQg
c2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAodGV4dERyYXdpbmdN
b2RlKCkgPT0gY1RleHRGaWxsICYmIGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvcikpIHsKKyAgICBpZiAodGV4dERyYXdpbmdNb2RlKCkgPT0gY1RleHRGaWxsICYm
IGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKSkgewogICAgICAgICBwLT5zYXZlKCk7CiAgICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dT
aXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogICAgICAgICBwLT5zZXRQZW4oc2hh
ZG93Q29sb3IpOwpAQCAtNDc1LDExICs0NzcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AK
ICAgICBwLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIHRydWUpOwogCiAg
ICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAg
ICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIHN0YXJ0QW5n
bGUgKj0gMTY7CiAgICAgYW5nbGVTcGFuICo9IDE2OwotICAgIGlmIChnZXRTaGFkb3coc2hhZG93
U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAg
ICBwLT5zYXZlKCk7CiAgICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dTaXplLndpZHRoKCksIHNo
YWRvd1NpemUuaGVpZ2h0KCkpOwogICAgICAgICBRUGVuIHBlbihwLT5wZW4oKSk7CkBAIC01MTAs
OSArNTEzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXpl
X3QgbnBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzCiAgICAgcC0+c2F2ZSgpOwogICAg
IHAtPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgc2hvdWxkQW50aWFsaWFz
KTsKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYg
KGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICBp
ZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IpKSB7CiAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRv
d1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChwLT5icnVz
aCgpLnN0eWxlKCkgIT0gUXQ6Ok5vQnJ1c2gpCkBAIC01NTIsOSArNTU2LDEwIEBAIFFQZW4gR3Jh
cGhpY3NDb250ZXh0OjpwZW4oKQogc3RhdGljIHZvaWQgaW5saW5lIGRyYXdGaWxsZWRTaGFkb3dQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUVBhaW50ZXIqIHAsIGNvbnN0IFFQYWludGVy
UGF0aCYgcGF0aCkKIHsKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUg
c2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29s
b3I7Ci0gICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvcikpIHsKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIHAtPnRyYW5z
bGF0ZShzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogICAgICAgICBw
LT5maWxsUGF0aChwYXRoLCBRQnJ1c2goc2hhZG93Q29sb3IpKTsKICAgICAgICAgcC0+dHJhbnNs
YXRlKC1zaGFkb3dTaXplLndpZHRoKCksIC1zaGFkb3dTaXplLmhlaWdodCgpKTsKQEAgLTU5NSw5
ICs2MDAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoKQogICAgIHBhdGgu
c2V0RmlsbFJ1bGUodG9RdEZpbGxSdWxlKGZpbGxSdWxlKCkpKTsKIAogICAgIEZsb2F0U2l6ZSBz
aGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93
Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChnZXRTaGFkb3coc2hhZG93
U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAg
UVRyYW5zZm9ybSB0KHAtPndvcmxkVHJhbnNmb3JtKCkpOwogICAgICAgICBwLT50cmFuc2xhdGUo
c2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKICAgICAgICAgUVBlbiBz
aGFkb3dQZW4ocGVuKTsKQEAgLTYyNCw5ICs2MzAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoKQogc3RhdGljIGlubGluZSB2b2lkIGRyYXdCb3JkZXJsZXNzUmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFFQYWludGVyKiBwLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiB7CiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwot
ICAgIGlmIChjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IpKSB7CisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBGbG9hdFJlY3Qgc2hh
ZG93UmVjdChyZWN0KTsKICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgo
KSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIHAtPmZpbGxSZWN0KHNoYWRvd1JlY3Qs
IFFDb2xvcihzaGFkb3dDb2xvcikpOwpAQCAtNzA5LDkgKzcxNiwxMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIEZsb2F0UmVjdCBu
b3JtYWxpemVkUmVjdCA9IHJlY3Qubm9ybWFsaXplZCgpOwogCiAgICAgRmxvYXRTaXplIHNoYWRv
d1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVy
OwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGJvb2wgaGFzU2hhZG93ID0gZ2V0U2hhZG93
KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBib29sIGhhc1NoYWRv
dyA9IGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKTsKICAgICBGbG9hdFJlY3Qgc2hhZG93RGVzdFJlY3Q7CiAgICAgUUltYWdlKiBzaGFk
b3dJbWFnZSA9IDA7CiAgICAgUVBhaW50ZXIqIHBTaGFkb3cgPSAwOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZTBhYzU3NC4uZDc5NTlhMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0xOTEsOSArMTkxLDEwIEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdCwKICAgICBwYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoY29tcG9zaXRpb25Nb2Rl
KTsKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBp
ZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkg
eworICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0ltYWdlUmVj
dChub3JtYWxpemVkRHN0KTsKICAgICAgICAgc2hhZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93U2l6
ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDljNmFjYWIuLjFkZjEzZjAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKQEAgLTc2LDEw
ICs3NiwxMSBAQCB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwKIAogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCk7CiAKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIEZsb2F0U2l6ZSBzaGFkb3dT
aXplOwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAg
aWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikp
IHsKKyAgICBpZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJbWFnZVJl
Y3Qobm9ybWFsaXplZERzdCk7CiAgICAgICAgIHNoYWRvd0ltYWdlUmVjdC5tb3ZlKHNoYWRvd1Np
emUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCmluZGV4IDY1OTVmNmIuLjI4MDNmZTAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcApAQCAt
MjIzLDEwICsyMjMsMTEgQEAgdm9pZCBTa2lhV2luT3V0bGluZUNhY2hlOjpyZW1vdmVQYXRoc0Zv
ckZvbnQoSEZPTlQgaGZvbnQpCiBib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgRmxvYXRTaXplIHNoYWRv
d1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVy
OwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogCi0gICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0
LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGJv
b2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogICAgIHJldHVybiAoaGFzU2hhZG93ICYmIChz
aGFkb3dCbHVyID09IDApICYmIChzaGFkb3dDb2xvci5hbHBoYSgpID09IDI1NSkgJiYgKGNvbnRl
eHQtPmZpbGxDb2xvcigpLmFscGhhKCkgPT0gMjU1KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDM0ZjliMDcuLmI4MmJjNDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTQxLDkgKzE0
MSwxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R0RJR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YQogICAgICAgICBkcmF3SW50b0JpdG1hcCA9
IGZpbGxDb2xvci5hbHBoYSgpICE9IDI1NSB8fCBncmFwaGljc0NvbnRleHQtPmluVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKICAgICAgICAgaWYgKCFkcmF3SW50b0JpdG1hcCkgewogICAgICAgICAgICAg
RmxvYXRTaXplIHNpemU7CisgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
ICAgICAgICAgZmxvYXQgYmx1cjsKICAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2l6ZSwgYmx1ciwgY29sb3IpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2l6ZSwgc2hhZG93T2Zmc2V0LCBibHVy
LCBjb2xvcik7CiAgICAgICAgICAgICBkcmF3SW50b0JpdG1hcCA9ICFzaXplLmlzRW1wdHkoKSB8
fCBibHVyOwogICAgICAgICB9CiAgICAgfQpAQCAtMzUwLDkgKzM1MSwxMCBAQCB2b2lkIEZvbnQ6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBmbwogICAgIHdrU2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0eWxlKGNnQ29u
dGV4dCwgZm9udC0+aXNTeXN0ZW1Gb250KCksIGZhbHNlLCBmb250LT5wbGF0Zm9ybURhdGEoKS51
c2VHREkoKSk7CiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IpOworICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUs
IHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgYm9vbCBoYXNT
aW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0
RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXI7CiAgICAgaWYgKGhh
c1NpbXBsZVNoYWRvdykgewpAQCAtMzc4LDcgKzM4MCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvCiAgICAgfQogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xv
clNwYWNlKTsKIAogICAgIHdrUmVzdG9yZUZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIG9s
ZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwCmluZGV4IGU0NDY2YzguLjAx
OGU5MTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhp
Y3NDb250ZXh0V2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
R3JhcGhpY3NDb250ZXh0V2luY2UuY3BwCkBAIC0xMjYxLDEwICsxMjYxLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgZmlsbFJlY3QsIGNv
bnN0IEludFNpemUmIHRvCiAgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dT
aXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9
IDA7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgICAgIAotICAgIGdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgZ2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogICAgIAogICAgIElu
dFJlY3QgZHN0UmVjdCA9IGZpbGxSZWN0OwogICAgIApAQCAtMTY4OCwxMCArMTY4OSwxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCBjb25zdCBHbHlwaEJ1ZmZlcgogICAgIH0KIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7
CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgYm9vbCBoYXNTaGFkb3cgPSB0ZXh0RHJhd2lu
Z01vZGUoKSA9PSBjVGV4dEZpbGwKLSAgICAgICAgJiYgZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKQorICAgICAgICAmJiBnZXRTaGFkb3coc2hhZG93U2l6ZSwg
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikKICAgICAgICAgJiYgc2hhZG93
Q29sb3IuYWxwaGEoKTsKICAgICBDT0xPUlJFRiBzaGFkb3dSR0JDb2xvcjsKICAgICBGbG9hdFBv
aW50IHRyU2hhZG93UG9pbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggNjFjZDUy
NC4uOWFhM2UzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcApAQCAtMzYsNyArMzYsNyBA
QCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBp
bnQgdHkpCiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIHN0eWxlLT5j
b2xvclNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYgKHN0eWxl
LT50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc3R5
bGUtPnRleHRTaGFkb3coKS0+eCgpLCBzdHlsZS0+dGV4dFNoYWRvdygpLT55KCkpLAorICAgICAg
ICBjb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzdHlsZS0+dGV4dFNoYWRvdygpLT54KCksIHN0
eWxlLT50ZXh0U2hhZG93KCktPnkoKSksIEZsb2F0U2l6ZSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R5bGUtPnRleHRTaGFkb3coKS0+Ymx1cigpLCBzdHlsZS0+dGV4dFNoYWRvdygp
LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGRmZTc1NjEuLjgz
NjkxOWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMDI1LDcgKzEwMjUs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgYgogICAgICAgICAgICAgICAgICAgICB0eSAtPSBl
eHRyYU9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSAwOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShz
aGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1cigpLCBz
aGFkb3ctPmNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNl
dFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSAtIGV4dHJhT2Zmc2V0KSwg
RmxvYXRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSksIHNoYWRvdy0+Ymx1cigpLCBzaGFk
b3ctPmNvbG9yKCksIGNvbG9yU3BhY2UpOwogICAgICAgICAgICAgICAgIHNldFNoYWRvdyA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgc2hhZG93ID0gc2hhZG93LT5uZXh0KCk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDUwZjZjZmEuLjZhNTIzZGQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMDIsMjEgKzMwMiwyMiBAQCBG
bG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsCiAKICAgICBGbG9hdFNpemUgZXh0cmFPZmZzZXQ7CiAgICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpOworICAgIEZs
b2F0U2l6ZSBzaGFkb3dFeHRyYU9mZnNldCA9IHNoYWRvd09mZnNldDsKICAgICBpbnQgc2hhZG93
Qmx1ciA9IHNoYWRvdy0+Ymx1cigpOwogICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciA9IHNo
YWRvdy0+Y29sb3IoKTsKIAogICAgIGlmIChzaGFkb3ctPm5leHQoKSB8fCBzdHJva2VkIHx8ICFv
cGFxdWUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QodGV4dFJlY3QpOwogICAgICAg
ICBzaGFkb3dSZWN0LmluZmxhdGUoc2hhZG93Qmx1cik7Ci0gICAgICAgIHNoYWRvd1JlY3QubW92
ZShzaGFkb3dPZmZzZXQpOworICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93RXh0cmFPZmZz
ZXQpOwogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIGNvbnRleHQtPmNsaXAoc2hh
ZG93UmVjdCk7CiAKLSAgICAgICAgZXh0cmFPZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRS
ZWN0LmhlaWdodCgpICsgbWF4KDAuMGYsIHNoYWRvd09mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dC
bHVyKTsKLSAgICAgICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OworICAgICAgICBleHRy
YU9mZnNldCA9IEZsb2F0U2l6ZSgwLCAyICogdGV4dFJlY3QuaGVpZ2h0KCkgKyBtYXgoMC4wZiwg
c2hhZG93RXh0cmFPZmZzZXQuaGVpZ2h0KCkpICsgc2hhZG93Qmx1cik7CisgICAgICAgIHNoYWRv
d0V4dHJhT2Zmc2V0IC09IGV4dHJhT2Zmc2V0OwogICAgIH0KIAotICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBjb250ZXh0LT5maWxs
Q29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93RXh0cmFPZmZzZXQs
IHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIGNvbnRleHQtPmZpbGxDb2xv
clNwYWNlKCkpOwogICAgIHJldHVybiBleHRyYU9mZnNldDsKIH0KIApAQCAtNzM5LDcgKzc0MCw3
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgaW50IHR4LCBpbnQgdHksIGluCiAgICAgICAgICAgICAgICAgdHkgLT0gZXh0cmFP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSAwOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRv
dy0+eSgpIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5jb2xvcigpLCBj
b2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRv
dy0+eCgpLCBzaGFkb3ctPnkoKSAtIGV4dHJhT2Zmc2V0KSwgRmxvYXRTaXplKHNoYWRvdy0+eCgp
LCBzaGFkb3ctPnkoKSksIHNoYWRvdy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3Bh
Y2UpOwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9
IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggNGRkZDY2Yi4uMWY3ZDU1OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNSw2ICs1LDcgQEAKICAqICAgICAgICAg
ICAoQykgMjAwNSwgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAq
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEsIFMuTC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMTYxMSwxMCArMTYxMiwxNCBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0
eCwgaW50CiAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBmaWxsIGp1c3Qgb3V0c2lkZSB0aGUgY2xp
cCwgYWRkaW5nIDEgcGl4ZWwgc2VwYXJhdGlvbiBzbyB0aGF0IHRoZSBmaWxsIGRvZXMgbm90CiAg
ICAgICAgICAgICAvLyBibGVlZCBpbiAoZHVlIHRvIGFudGlhbGlhc2luZykgaWYgdGhlIGNvbnRl
eHQgaXMgdHJhbnNmb3JtZWQuCiAgICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KHcgKyBt
YXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93Qmx1ciArIDIgKiBzaGFkb3dTcHJl
YWQgKyAxLCAwKTsKLSAgICAgICAgICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKKyAg
ICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dFeHRyYU9mZnNldCA9IHNoYWRvd09mZnNldCAtIGV4
dHJhT2Zmc2V0OwogICAgICAgICAgICAgZmlsbFJlY3QubW92ZShleHRyYU9mZnNldCk7CiAKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgLy8gQWRkIHRoZSBzcHJl
YWQgdG8gc2V0IHRoZSByZWFsIG9mZnNldAorICAgICAgICAgICAgc2hhZG93T2Zmc2V0LnNldFdp
ZHRoKHNoYWRvd09mZnNldC53aWR0aCgpICsgc2hhZG93U3ByZWFkKTsKKyAgICAgICAgICAgIHNo
YWRvd09mZnNldC5zZXRIZWlnaHQoc2hhZG93T2Zmc2V0LmhlaWdodCgpICsgc2hhZG93U3ByZWFk
KTsKKworICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd0V4dHJhT2Zmc2V0LCBz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwog
ICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewogICAgICAgICAgICAgICAgIEludFJl
Y3QgcmVjdFRvQ2xpcE91dCA9IHJlY3Q7CiAgICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0
VG9DbGlwT3V0ID0gdG9wTGVmdDsKQEAgLTE3MTIsNyArMTcxNyw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50
IHR4LCBpbnQKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgyICogdyArIG1heCgw
LCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dCbHVyIC0gMiAqIHNoYWRvd1NwcmVhZCAr
IDEsIDApOwogICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGV4dHJhT2Zmc2V0LndpZHRo
KCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIHNoYWRvd09mZnNldCAtPSBl
eHRyYU9mZnNldDsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dFeHRyYU9mZnNldCA9IHNo
YWRvd09mZnNldCAtIGV4dHJhT2Zmc2V0OwogCiAgICAgICAgICAgICBjb250ZXh0LT5iZWdpblBh
dGgoKTsKICAgICAgICAgICAgIGNvbnRleHQtPmFkZFBhdGgoUGF0aDo6Y3JlYXRlUmVjdGFuZ2xl
KG91dGVyUmVjdCkpOwpAQCAtMTczNyw3ICsxNzQyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGlu
dAogCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwogICAg
ICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgcy0+Y29sb3JTcGFjZSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC0+
c2V0U2hhZG93KHNoYWRvd0V4dHJhT2Zmc2V0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFBh
dGgoKTsKIAogICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCAzNGY2NjU5Li44MmIzOTYzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGJvb2wgU1ZHUmVu
ZGVyU3VwcG9ydDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVj
dCwgUGFpbnRJbmZvCiAgICAgICAgICAgICByZXBhaW50UmVjdCA9IG9iamVjdC0+cmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cChyZXBhaW50UmVjdCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTaGFkb3coSW50
U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5j
b2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ctPnkoKSksIEZsb2F0U2l6ZShz
aGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5jb2xvcigp
LCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQ0YTg1MGUuLjhlZDE2NGMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRoZSBzaGFkb3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBHcmFwaGlj
c0NvbnRleHQ6OnNldFNoYWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDMyNTkKKworICAgICAgICBBZGQgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFt
ZXRlciBmb3IgdGhlIHNldFNoYWRvdyBhbmQgZ2V0U2hhZG93CisgICAgICAgIEFQSXMuIFRoaXMg
YWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3JhcGhpY3MgY29udGV4dCB0byBjaGVjayB0aGUKKyAgICAg
ICAgdmlzaWJsZSBwYXJ0IG9mIHRoZSBzaGFkb3csIHJlcXVpcmVkIGZvciBwZXJmb3JtYW5jZS4K
KworICAgICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkRyYXdUZXh0KToK
KwogMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcCBiL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3Bw
CmluZGV4IGU5ZTI1YWIuLjRjYTRhYTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViS2l0R3Jh
cGhpY3MuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCkBAIC0xMTIsNyAr
MTEyLDcgQEAgdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbykKICAgICAg
ICAgLy8gU2V0IHNoYWRvdyBzZXR0aW5nCiAgICAgICAgIGlmIChpbmZvLT5zdHJ1Y3RTaXplID09
IHNpemVvZihXZWJUZXh0UmVuZGVySW5mbykgJiYKICAgICAgICAgICAgIChpbmZvLT5zaGFkb3dP
ZmZzZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIgfHwg
aW5mby0+c2hhZG93Q29sb3IpKQotICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRT
aXplKGluZm8tPnNoYWRvd09mZnNldC5jeCwgaW5mby0+c2hhZG93T2Zmc2V0LmN5KSwgaW5mby0+
c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKGluZm8tPnNoYWRvd09mZnNldC5jeCwg
aW5mby0+c2hhZG93T2Zmc2V0LmN5KSwgRmxvYXRTaXplKGluZm8tPnNoYWRvd09mZnNldC5jeCwg
aW5mby0+c2hhZG93T2Zmc2V0LmN5KSwgaW5mby0+c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29s
b3IsIERldmljZUNvbG9yU3BhY2UpOwogCiAgICAgICAgIFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQo
Y29udGV4dCwgZHJhd1N0cmluZywgaW5mby0+cHQsIG1ha2VGb250KCooaW5mby0+ZGVzY3JpcHRp
b24pKSwgaW5mby0+Y29sb3IsIGluZm8tPnVuZGVybGluZWRJbmRleCk7CiAgICAgICAgIGNvbnRl
eHQucmVzdG9yZSgpOwotLSAKMS43LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64750</attachid>
            <date>2010-08-18 12:08:24 -0700</date>
            <delta_ts>2010-08-24 08:43:21 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>shadow_offset.patch</filename>
            <type>text/plain</type>
            <size>34791</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDI2MzU2OWZmYWRiMTdiMTFmNWE3MTU3YTFmNmJkOGUzMzUzYzcwOWEKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEp1bCAzMCAx
OToyMTowOCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0wMiAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBBZGQgdGhlIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJhbWV0
ZXIgdG8gdGhlIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93CiAgICAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzI1OQogICAgCiAgICAgICAgICAgIEFk
ZCBzaGFkb3cgb2Zmc2V0IGFzIGEgcGFyYW1ldGVyIGZvciB0aGUgc2V0U2hhZG93IGFuZCBnZXRT
aGFkb3cKICAgICAgICAgICAgQVBJcy4gVGhpcyBhbGxvd3MgdGhlIHBsYXRmb3JtcyBncmFwaGlj
cyBjb250ZXh0IHRvIGNoZWNrIHRoZQogICAgICAgICAgICB2aXNpYmxlIHBhcnQgb2YgdGhlIHNo
YWRvdywgcmVxdWlyZWQgZm9yIHBlcmZvcm1hbmNlLgogICAgCiAgICAgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCk6CiAg
ICAgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6
CiAgICAgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOgogICAg
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3cpOgogICAgICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgogICAgICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKICAgICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6ZHJhd1Bh
dGhTaGFkb3cpOgogICAgICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93
KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoK
ICAgICAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKICAgICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgogICAgICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMpOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
ZHJhd0NvbXBsZXhUZXh0KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9u
dEd0ay5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgog
ICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tOgogICAgICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocykKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250UXQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6ZHJhd1RleHRDb21tb24p
OgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgogICAgICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgogICAgICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpTdGls
bEltYWdlOjpkcmF3KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFG
b250V2luLmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVEcmF3VGV4
dFNoYWRvdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5j
cHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpkcmF3R0RJR2x5cGhzKToKICAgICAgICAgICAgKFdl
YkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKICAgICAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgogICAgICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgogICAg
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKICAgICAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKToKICAgICAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KToKICAgICAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CiAgICAgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CiAgICAgICAgICAgICogcmVuZGVyaW5n
L1NWR1JlbmRlclN1cHBvcnQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3Vw
cG9ydDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CiAgICAKICAgIDIwMTAtMDgtMDIgIEFs
ZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAgICAKICAgICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAKICAgICAgICAgICAgQWRkIHRoZSBzaGFkb3cg
b2Zmc2V0IGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdwog
ICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkK
ICAgIAogICAgICAgICAgICBBZGQgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRlciBmb3IgdGhl
IHNldFNoYWRvdyBhbmQgZ2V0U2hhZG93CiAgICAgICAgICAgIEFQSXMuIFRoaXMgYWxsb3dzIHRo
ZSBwbGF0Zm9ybXMgZ3JhcGhpY3MgY29udGV4dCB0byBjaGVjayB0aGUKICAgICAgICAgICAgdmlz
aWJsZSBwYXJ0IG9mIHRoZSBzaGFkb3csIHJlcXVpcmVkIGZvciBwZXJmb3JtYW5jZS4KICAgIAog
ICAgICAgICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKICAgICAgICAgICAgKFdlYkRyYXdUZXh0
KToKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDVkMjZmMTguLjVhYWIwYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTAtMDgtMDIgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBzaGFkb3cgb2Zmc2V0IGFzIGEgcGFyYW1l
dGVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyNTkKKworICAgICAgICBBZGQgc2hhZG93
IG9mZnNldCBhcyBhIHBhcmFtZXRlciBmb3IgdGhlIHNldFNoYWRvdyBhbmQgZ2V0U2hhZG93Cisg
ICAgICAgIEFQSXMuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybXMgZ3JhcGhpY3MgY29udGV4dCB0
byBjaGVjayB0aGUKKyAgICAgICAgdmlzaWJsZSBwYXJ0IG9mIHRoZSBzaGFkb3csIHJlcXVpcmVk
IGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEFsbEF0dHJpYnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0
U2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQ
YXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMp
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdUZXh0Q29tbW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3RpbGxJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJh
d1RleHRTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dESUdseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9H
cmFwaGljc0NvbnRleHRXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludFRl
eHREZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgorCiAyMDEwLTA4LTE4
ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDVmZjlhNzIuLmNlMWM0N2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTIy
MSw3ICsyMjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmli
dXRlc1RvRGVmYXVsdCgpCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb250ZXh0LT5zZXRTaGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC0+c2V0U2hhZG93KEZsb2F0U2l6ZSgpLCBG
bG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBEZXZpY2VDb2xvclNwYWNlKTsKICAg
ICBjb250ZXh0LT5zZXRBbHBoYSgxKTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiB9CkBAIC05OTIsNyArOTkyLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLAogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0
U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgc3RhdGUo
KS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQg
YWxwaGEpCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAg
aWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3Is
IERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpAQCAtMTAyMyw3ICsxMDIz
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogICAgIGlmICghYykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1f
c2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIEZsb2F0U2l6ZSh3aWR0aCwg
aGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2
aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxv
YXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNo
YWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRl
KCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KElu
dFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwog
fQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZs
b2F0IGssIGZsb2F0IGEpCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJs
dXIsCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGRjLT5wbGF0Zm9ybUNvbnRleHQo
KSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc2hhZG93Q29sb3Ip
OwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKICNlbHNlCi0gICAgZGMtPnNldFNo
YWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9y
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBkYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1o
ZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIHN0YXRlKCkubV9zaGFkb3dD
b2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAtMTA3Niw3ICsxMDc2LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKIAogICAgIGZs
b2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC53aWR0aCgpOwogICAgIGZsb2F0IGhl
aWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCk7Ci0gICAgYy0+c2V0U2hhZG93
KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhGbG9h
dFNpemUod2lkdGgsIC1oZWlnaHQpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwog
fQogCiBzdGF0aWMgSW50U2l6ZSBzaXplKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGI1MTE0MWEu
LmIyMjNhYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTEzMCw5ICsxMzAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9r
ZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIHNl
dFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dTaXplID0gc2l6ZTsKKyAgICBt
X2NvbW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29tbW9uLT5zdGF0
ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93Q29sb3IgPSBj
b2xvcjsKICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhzaXplLCBibHVyLCBjb2xvciwgY29sb3JTcGFj
ZSk7CkBAIC0xNDYsOSArMTQ3LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRv
dygpCiAgICAgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikg
Y29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBzaXplLCBG
bG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAg
ICBzaXplID0gbV9jb21tb24tPnN0YXRlLnNoYWRvd1NpemU7CisgICAgb2Zmc2V0ID0gbV9jb21t
b24tPnN0YXRlLnNoYWRvd09mZnNldDsKICAgICBibHVyID0gbV9jb21tb24tPnN0YXRlLnNoYWRv
d0JsdXI7CiAgICAgY29sb3IgPSBtX2NvbW1vbi0+c3RhdGUuc2hhZG93Q29sb3I7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGQ1MTRiMTEuLjQ3
OTU1NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtMjc5LDggKzI3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBiZWdp
blRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAgICAgICB2b2lkIGVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiAKLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXpl
JiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKLSAgICAgICAgYm9vbCBn
ZXRTaGFkb3coRmxvYXRTaXplJiwgZmxvYXQmLCBDb2xvciYpIGNvbnN0OworICAgICAgICB2b2lk
IHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVy
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAgICAgICAgIHZvaWQg
Y2xlYXJTaGFkb3coKTsKIAogICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEludFJlY3Q+JiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAppbmRl
eCA2YmY0NjViLi5kMjcyMzlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaApAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZDsKICAgICAgICAgCiAgICAgICAg
IEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owog
ICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDky
MTdhODEuLjI2MzgwYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTcxLDEwICs3MSwxMSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwog
CiAgICAgLy8gVGV4dCBzaGFkb3csIGluc3BpcmVkIGJ5IEZvbnRNYWMKICAgICBGbG9hdFNpemUg
c2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRv
d0JsdXIgPSAwOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIGJvb2wgaGFzU2hhZG93ID0g
Y29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwKLSAgICAgICAgICAgICAgICAg
ICAgICYmIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CisgICAgICAgICYmIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IEJsdXIgc3Vw
cG9ydAogICAgIGlmIChoYXNTaGFkb3cpIHsKQEAgLTE5NSw3ICsxOTYsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgY29ucwogCiAgICAgLy8gUmUtZW5hYmxlIHRoZSBwbGF0Zm9ybSBzaGFkb3cgd2Ug
ZGlzYWJsZWQgZWFybGllcgogICAgIGlmIChoYXNTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNl
dFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5YjMwOTZlLi5hOWJjZGJh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTkyLDkgKzE5MiwxMCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHRQcml2YQogewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpCisgICAgaWYgKCFjb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDYWxjdWxhdGUgZmlsdGVyIHZhbHVlcyB0byBj
cmVhdGUgYXBwcm9wcmlhdGUgc2hhZG93LgpAQCAtNjIzLDEwICs2MjQsMTEgQEAgc3RhdGljIHZv
aWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JgogewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIEZsb2F0U2l6ZSBzaGFk
b3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1
cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIAotICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93
KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKKyAgICBpZiAoIWNvbnRleHQt
PmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXgg
MTU4MjY3MS4uOWRhYmU4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQ2Fpcm8uY3BwCkBAIC0xMzYsOSArMTM2LDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3Qg
RmxvCiAgICAgLy8gRHJhdyB0aGUgc2hhZG93CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgRmxv
YXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9h
dCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKSkgewogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwogICAgICAgICBmbG9hdCBrZXJuZWxTaXplICgwLjAp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hy
b21pdW1XaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hy
b21pdW1XaW4uY3BwCmluZGV4IDViOGJhZDMuLjBlMjM1NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKQEAgLTI3
NCw5ICsyNzQsMTAgQEAgYm9vbCBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJhd0ds
eXBocyhpbnQgbnVtR2x5cGhzLAogICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93
IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCiAgICAgLy8gYXJlIG9w
YXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNo
YWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChtX2dyYXBoaWNz
Q29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IpKSB7CiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2hhZG93IGFuZCB0aGlz
IGNvZGUgaXMgcmVhY2hlZCwgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KCkKICAgICAg
ICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgcmV0dXJuZWQgdHJ1ZSBkdXJpbmcgdGhlIGN0b3IgaW5p
dGlhdGl6YXRpb24gb2YgbV91c2VHREkKICAgICAgICAgQVNTRVJUKHNoYWRvd0NvbG9yLmFscGhh
KCkgPT0gMjU1KTsKQEAgLTQ4NCw5ICs0ODUsMTAgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgLy8gSWYgdGhlcmUgaXMg
YSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3IgYW5kIHNoYWRvdyBjb2xv
ciAKICAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lhLiAKICAgICBGbG9hdFNp
emUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNo
YWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4
dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSAmJiB3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgeworICAgIGlmIChn
cmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3Jh
cGhpY3NDb250ZXh0KSkgewogICAgICAgICBDT0xPUlJFRiB0ZXh0Q29sb3IgPSBza2lhOjpTa0Nv
bG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFk
b3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKICAgICAgICAgQ09MT1JSRUYg
c2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IoaGRjKTsKICAgICAgICAgU2V0VGV4dENvbG9y
KGhkYywgdGV4dENvbG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5j
cHAKaW5kZXggOTJmODgxNi4uMDU3ZWNhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRm9udEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udEd0ay5jcHAKQEAgLTI0MiwxMCArMjQyLDExIEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBGCiAKICAgICAvLyBUZXh0IHNoYWRvdywgaW5zcGlyZWQgYnkgRm9udE1hYwogICAgIEZsb2F0
U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQg
c2hhZG93Qmx1ciA9IDA7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgYm9vbCBoYXNTaGFk
b3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYKLSAgICAgICAg
Y29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsK
KyAgICAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogQmx1ciBzdXBwb3J0CiAgICAg
aWYgKGhhc1NoYWRvdykgewpAQCAtMjkwLDcgKzI5MSw3IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBGCiAKICAgICAvLyBSZS1lbmFibGUgdGhlIHBsYXRmb3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBl
YXJsaWVyCiAgICAgaWYgKGhhc1NoYWRvdykKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNo
YWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCiAgICAgLy8gUGFuZ28gc29t
ZXRpbWVzIGxlYXZlcyBiZWhpbmQgcGF0aHMgd2UgZG9uJ3Qgd2FudAogICAgIGNhaXJvX25ld19w
YXRoKGNyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRN
YWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCmluZGV4IGRi
Nzc0MDIuLjJiYzc0NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5t
bQpAQCAtMTM2LDEwICsxMzYsMTEgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKIAogCiAgICAg
RmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBm
bG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ug
ZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQt
PmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgY29u
dGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpOwogCiAgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJh
d2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFk
b3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKTsKICAgICBpZiAoaGFz
U2ltcGxlU2hhZG93KSB7CkBAIC0xNjUsNyArMTY2LDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNv
bnMKICAgICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIGZpbGxDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIGZpbGxDb2xvclNwYWNlKTsKIAogICAgIGlmIChv
cmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcgIT0gbmV3U2hvdWxkVXNlRm9udFNtb290aGlu
ZykKICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMoY2dDb250ZXh0LCBvcmln
aW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UXQuY3BwCmluZGV4IDU5MzIwY2IuLjM5ZTVjOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ZvbnRRdC5jcHAKQEAgLTExMCw5ICsxMTAsMTAgQEAgc3RhdGljIHZvaWQgZHJhd1Rl
eHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXQKIAogICAgIC8vIHRleHQgc2hhZG93CiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGJvb2wgaGFzU2hhZG93ID0gY3R4LT50ZXh0RHJhd2luZ01v
ZGUoKSA9PSBjVGV4dEZpbGwgJiYgY3R4LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IpOworICAgIGJvb2wgaGFzU2hhZG93ID0gY3R4LT50ZXh0RHJhd2luZ01v
ZGUoKSA9PSBjVGV4dEZpbGwgJiYgY3R4LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAgICBpZiAoZnJvbSA+IDAgfHwgdG8g
PCBydW4ubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKGlzQ29tcGxleFRleHQpIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGUwYWM1NzQuLmQ3OTU5YTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMTkxLDkgKzE5MSwx
MCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3QsCiAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKGNvbXBvc2l0
aW9uTW9kZSk7CiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
Ci0gICAgaWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcikpIHsKKyAgICBpZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJ
bWFnZVJlY3Qobm9ybWFsaXplZERzdCk7CiAgICAgICAgIHNoYWRvd0ltYWdlUmVjdC5tb3ZlKHNo
YWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAppbmRleCA5YzZhY2FiLi4xZGYxM2Yw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCkBA
IC03NiwxMCArNzYsMTEgQEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAKICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24ob3ApOwogCisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBGbG9hdFNpemUg
c2hhZG93U2l6ZTsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9y
OwotICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IpKSB7CisgICAgaWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93
SW1hZ2VSZWN0KG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBzaGFkb3dJbWFnZVJlY3QubW92ZShz
aGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAppbmRleCA0NDAwM2JiLi44N2U5
MjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRX
aW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5j
cHAKQEAgLTIyMywxMCArMjIzLDExIEBAIHZvaWQgU2tpYVdpbk91dGxpbmVDYWNoZTo6cmVtb3Zl
UGF0aHNGb3JGb250KEhGT05UIGhmb250KQogYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3coR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0KQogewogICAgIEZsb2F0U2l6ZSBzaGFkb3dT
aXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsK
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIAotICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+
Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBib29s
IGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dPZmZzZXQs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKICAgICByZXR1cm4gKGhhc1NoYWRvdyAmJiAoc2hh
ZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0
LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCAzNGY5YjA3Li5iODJiYzQxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTE0MSw5ICsxNDEs
MTAgQEAgc3RhdGljIHZvaWQgZHJhd0dESUdseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEKICAgICAgICAgZHJhd0ludG9CaXRtYXAgPSBm
aWxsQ29sb3IuYWxwaGEoKSAhPSAyNTUgfHwgZ3JhcGhpY3NDb250ZXh0LT5pblRyYW5zcGFyZW5j
eUxheWVyKCk7CiAgICAgICAgIGlmICghZHJhd0ludG9CaXRtYXApIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBzaXplOworICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICAg
ICAgICAgIGZsb2F0IGJsdXI7CiAgICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNpemUsIGJsdXIsIGNvbG9yKTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNpemUsIHNoYWRvd09mZnNldCwgYmx1ciwg
Y29sb3IpOwogICAgICAgICAgICAgZHJhd0ludG9CaXRtYXAgPSAhc2l6ZS5pc0VtcHR5KCkgfHwg
Ymx1cjsKICAgICAgICAgfQogICAgIH0KQEAgLTM1MCw5ICszNTEsMTAgQEAgdm9pZCBGb250Ojpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVG
b250RGF0YSogZm8KICAgICB3a1NldENHQ29udGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRl
eHQsIGZvbnQtPmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC0+cGxhdGZvcm1EYXRhKCkudXNl
R0RJKCkpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwot
ICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIGJvb2wgaGFzU2lt
cGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZp
bGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyOwogICAgIGlmIChoYXNT
aW1wbGVTaGFkb3cpIHsKQEAgLTM3OCw3ICszODAsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBm
bwogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93
U2l6ZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CiAKICAgICB3a1Jlc3RvcmVGb250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRG
b250U21vb3RoaW5nU3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAppbmRleCBlNDQ2NmM4Li4wMThl
OTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dy
YXBoaWNzQ29udGV4dFdpbmNlLmNwcApAQCAtMTI2MSwxMCArMTI2MSwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIGZpbGxSZWN0LCBjb25z
dCBJbnRTaXplJiB0bwogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6
ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAw
OwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgICAgICAKLSAgICBnZXRTaGFkb3coc2hhZG93
U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGdldFNoYWRvdyhzaGFkb3dTaXpl
LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKICAgICAKICAgICBJbnRS
ZWN0IGRzdFJlY3QgPSBmaWxsUmVjdDsKICAgICAKQEAgLTE2ODgsMTAgKzE2ODksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0
YSwgY29uc3QgR2x5cGhCdWZmZXIKICAgICB9CiAKICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsK
KyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwog
ICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIGJvb2wgaGFzU2hhZG93ID0gdGV4dERyYXdpbmdN
b2RlKCkgPT0gY1RleHRGaWxsCi0gICAgICAgICYmIGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvcikKKyAgICAgICAgJiYgZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpCiAgICAgICAgICYmIHNoYWRvd0Nv
bG9yLmFscGhhKCk7CiAgICAgQ09MT1JSRUYgc2hhZG93UkdCQ29sb3I7CiAgICAgRmxvYXRQb2lu
dCB0clNoYWRvd1BvaW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNC
b3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IDYxY2Q1MjQu
LjlhYTNlM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
dm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBzdHlsZS0+Y29s
b3JTcGFjZSgpKTsKICAgICBib29sIHNldFNoYWRvdyA9IGZhbHNlOwogICAgIGlmIChzdHlsZS0+
dGV4dFNoYWRvdygpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHN0eWxl
LT50ZXh0U2hhZG93KCktPngoKSwgc3R5bGUtPnRleHRTaGFkb3coKS0+eSgpKSwKKyAgICAgICAg
Y29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc3R5bGUtPnRleHRTaGFkb3coKS0+eCgpLCBzdHls
ZS0+dGV4dFNoYWRvdygpLT55KCkpLCBGbG9hdFNpemUoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLT50ZXh0U2hhZG93KCktPmJsdXIoKSwgc3R5bGUtPnRleHRTaGFkb3coKS0+
Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBkZmU3NTYxLi44MzY5
MTlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTAyNSw3ICsxMDI1LDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgaW50IHR4LCBpbnQgdHksIGIKICAgICAgICAgICAgICAgICAgICAgdHkgLT0gZXh0
cmFPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hh
ZG93LT54KCksIHNoYWRvdy0+eSgpIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPmJsdXIoKSwgc2hh
ZG93LT5jb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3coSW50U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIEZs
b2F0U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93
LT5jb2xvcigpLCBjb2xvclNwYWNlKTsKICAgICAgICAgICAgICAgICBzZXRTaGFkb3cgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1MGY2Y2ZhLi42YTUyM2RkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMzAyLDIxICszMDIsMjIgQEAgRmxv
YXRTaXplIElubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LAogCiAgICAgRmxvYXRTaXplIGV4dHJhT2Zmc2V0OwogICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKTsKKyAgICBGbG9h
dFNpemUgc2hhZG93RXh0cmFPZmZzZXQgPSBzaGFkb3dPZmZzZXQ7CiAgICAgaW50IHNoYWRvd0Js
dXIgPSBzaGFkb3ctPmJsdXIoKTsKICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFk
b3ctPmNvbG9yKCk7CiAKICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ryb2tlZCB8fCAhb3Bh
cXVlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KHRleHRSZWN0KTsKICAgICAgICAg
c2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd0JsdXIpOwotICAgICAgICBzaGFkb3dSZWN0Lm1vdmUo
c2hhZG93T2Zmc2V0KTsKKyAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd0V4dHJhT2Zmc2V0
KTsKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBjb250ZXh0LT5jbGlwKHNoYWRv
d1JlY3QpOwogCi0gICAgICAgIGV4dHJhT2Zmc2V0ID0gRmxvYXRTaXplKDAsIDIgKiB0ZXh0UmVj
dC5oZWlnaHQoKSArIG1heCgwLjBmLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpICsgc2hhZG93Qmx1
cik7Ci0gICAgICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKKyAgICAgICAgZXh0cmFP
ZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgbWF4KDAuMGYsIHNo
YWRvd0V4dHJhT2Zmc2V0LmhlaWdodCgpKSArIHNoYWRvd0JsdXIpOworICAgICAgICBzaGFkb3dF
eHRyYU9mZnNldCAtPSBleHRyYU9mZnNldDsKICAgICB9CiAKLSAgICBjb250ZXh0LT5zZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgY29udGV4dC0+ZmlsbENv
bG9yU3BhY2UoKSk7CisgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd0V4dHJhT2Zmc2V0LCBz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBjb250ZXh0LT5maWxsQ29sb3JT
cGFjZSgpKTsKICAgICByZXR1cm4gZXh0cmFPZmZzZXQ7CiB9CiAKQEAgLTczOSw3ICs3NDAsNyBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGludCB0eCwgaW50IHR5LCBpbgogICAgICAgICAgICAgICAgIHR5IC09IGV4dHJhT2Zm
c2V0OwogICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCgpLCBzaGFkb3ct
PnkoKSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwgY29s
b3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzaGFkb3ct
PngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIEZsb2F0U2l6ZShzaGFkb3ctPngoKSwg
c2hhZG93LT55KCkpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNwYWNl
KTsKICAgICAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAgICAgICAgICBzaGFkb3cgPSBz
aGFkb3ctPm5leHQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCmluZGV4IDc4NjE4ZDEuLjYxYjQ0MzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUsNiArNSw3IEBACiAgKiAgICAgICAgICAg
KEMpIDIwMDUsIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhLCBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE2MTEsMTAgKzE2MTIsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgs
IGludAogICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAs
IGFkZGluZyAxIHBpeGVsIHNlcGFyYXRpb24gc28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAg
ICAgICAgICAgLy8gYmxlZWQgaW4gKGR1ZSB0byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0
IGlzIHRyYW5zZm9ybWVkLgogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCh3ICsgbWF4
KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd0JsdXIgKyAyICogc2hhZG93U3ByZWFk
ICsgMSwgMCk7Ci0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CisgICAg
ICAgICAgICBGbG9hdFNpemUgc2hhZG93RXh0cmFPZmZzZXQgPSBzaGFkb3dPZmZzZXQgLSBleHRy
YU9mZnNldDsKICAgICAgICAgICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZzZXQpOwogCi0gICAg
ICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgc3ByZWFk
IHRvIHNldCB0aGUgcmVhbCBvZmZzZXQKKyAgICAgICAgICAgIHNoYWRvd09mZnNldC5zZXRXaWR0
aChzaGFkb3dPZmZzZXQud2lkdGgoKSArIHNoYWRvd1NwcmVhZCk7CisgICAgICAgICAgICBzaGFk
b3dPZmZzZXQuc2V0SGVpZ2h0KHNoYWRvd09mZnNldC5oZWlnaHQoKSArIHNoYWRvd1NwcmVhZCk7
CisKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dFeHRyYU9mZnNldCwgc2hh
ZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAg
ICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0
IHJlY3RUb0NsaXBPdXQgPSByZWN0OwogICAgICAgICAgICAgICAgIEludFNpemUgdG9wTGVmdFRv
Q2xpcE91dCA9IHRvcExlZnQ7CkBAIC0xNzEyLDcgKzE3MTcsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0
eCwgaW50CiAKICAgICAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQoMiAqIHcgKyBtYXgoMCwg
c2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93Qmx1ciAtIDIgKiBzaGFkb3dTcHJlYWQgKyAx
LCAwKTsKICAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgp
LCBleHRyYU9mZnNldC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0
cmFPZmZzZXQ7CisgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93RXh0cmFPZmZzZXQgPSBzaGFk
b3dPZmZzZXQgLSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgY29udGV4dC0+YmVnaW5QYXRo
KCk7CiAgICAgICAgICAgICBjb250ZXh0LT5hZGRQYXRoKFBhdGg6OmNyZWF0ZVJlY3RhbmdsZShv
dXRlclJlY3QpKTsKQEAgLTE3MzcsNyArMTc0Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQK
IAogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dFNoYWRvdyhzaGFkb3dFeHRyYU9mZnNldCwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRo
KCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggZTI2NWIyYi4uZDFlYjU3YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBib29sIFNWR1JlbmRl
clN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IFBhaW50SW5mbwogICAgICAgICAgICAgcmVwYWludFJlY3QgPSBvYmplY3QtPnJlcGFpbnRSZWN0
SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAo
cmVwYWludFJlY3QpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U2hhZG93KEludFNp
emUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29s
b3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTaGFkb3coSW50U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpLCBGbG9hdFNpemUoc2hh
ZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwg
c3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBjZDBmMjM0Li41MjY0MjE1IDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEwLTA4LTAyICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0aGUgc2hhZG93IG9mZnNldCBhcyBhIHBhcmFtZXRlciB0byB0aGUgR3JhcGhpY3ND
b250ZXh0OjpzZXRTaGFkb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzMjU5CisKKyAgICAgICAgQWRkIHNoYWRvdyBvZmZzZXQgYXMgYSBwYXJhbWV0
ZXIgZm9yIHRoZSBzZXRTaGFkb3cgYW5kIGdldFNoYWRvdworICAgICAgICBBUElzLiBUaGlzIGFs
bG93cyB0aGUgcGxhdGZvcm1zIGdyYXBoaWNzIGNvbnRleHQgdG8gY2hlY2sgdGhlCisgICAgICAg
IHZpc2libGUgcGFydCBvZiB0aGUgc2hhZG93LCByZXF1aXJlZCBmb3IgcGVyZm9ybWFuY2UuCisK
KyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJEcmF3VGV4dCk6CisK
IDIwMTAtMDgtMTcgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAgYi9XZWJLaXQvd2luL1dlYktpdEdyYXBo
aWNzLmNwcAppbmRleCBlOWUyNWFiLi40Y2E0YWEwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dl
YktpdEdyYXBoaWNzLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qIGluZm8p
CiAgICAgICAgIC8vIFNldCBzaGFkb3cgc2V0dGluZwogICAgICAgICBpZiAoaW5mby0+c3RydWN0
U2l6ZSA9PSBzaXplb2YoV2ViVGV4dFJlbmRlckluZm8pICYmCiAgICAgICAgICAgICAoaW5mby0+
c2hhZG93T2Zmc2V0LmN4IHx8IGluZm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5zaGFkb3dC
bHVyIHx8IGluZm8tPnNoYWRvd0NvbG9yKSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93
KEZsb2F0U2l6ZShpbmZvLT5zaGFkb3dPZmZzZXQuY3gsIGluZm8tPnNoYWRvd09mZnNldC5jeSks
IGluZm8tPnNoYWRvd0JsdXIsIGluZm8tPnNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShpbmZvLT5zaGFkb3dPZmZz
ZXQuY3gsIGluZm8tPnNoYWRvd09mZnNldC5jeSksIEZsb2F0U2l6ZShpbmZvLT5zaGFkb3dPZmZz
ZXQuY3gsIGluZm8tPnNoYWRvd09mZnNldC5jeSksIGluZm8tPnNoYWRvd0JsdXIsIGluZm8tPnNo
YWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAogICAgICAgICBXZWJDb3JlRHJhd1RleHRB
dFBvaW50KGNvbnRleHQsIGRyYXdTdHJpbmcsIGluZm8tPnB0LCBtYWtlRm9udCgqKGluZm8tPmRl
c2NyaXB0aW9uKSksIGluZm8tPmNvbG9yLCBpbmZvLT51bmRlcmxpbmVkSW5kZXgpOwogICAgICAg
ICBjb250ZXh0LnJlc3RvcmUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>