<?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>58495</bug_id>
          
          <creation_ts>2011-04-13 16:58:33 -0700</creation_ts>
          <short_desc>Change useLowQualityScale boolean in GraphicsContext to be an enum</short_desc>
          <delta_ts>2021-09-01 01:07:13 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>56627</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Lawther">mikelawther</reporter>
          <assigned_to name="Mike Lawther">mikelawther</assigned_to>
          <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>senorblanco</cc>
    
    <cc>toni.ruottu</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385363</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-04-13 16:58:33 -0700</bug_when>
    <thetext>In https://bugs.webkit.org/show_bug.cgi?id=56627, jamesr said: &quot;As for useLowQualityScale, I think a better option would be to have an enum with the default value being &quot;auto&quot; to indicate that the paint() implementation is supposed to figure out the scaling algorithm to use and all non-default values will explicitly specify a scale (either nearestneighbor/bilinear/awesome or some other axis).&quot;

Enums are more Webkitty than bools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385552</commentid>
    <comment_count>1</comment_count>
      <attachid>89540</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-04-13 23:50:01 -0700</bug_when>
    <thetext>Created attachment 89540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385556</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-04-13 23:58:07 -0700</bug_when>
    <thetext>This is a pretty straightforward replacing of the bool with an enum. 

drawTiledImage and drawImage used to do different things if useLowQualityScaling was true, but they now both use nearestNeighbor (ie InterpolationQualityNone). I ran all of new-run-webkit-tests, and no pixel tests failed.

I was unsure if this needed to be plumbed deeper at this stage. If we ever want to implement eg EPX scaling for image-rendering: optimize-contrast, then it definitely will need to go deeper. But for now, ScalingNearestNeighbor&lt;=&gt;InterpolationNone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385752</commentid>
    <comment_count>3</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-04-14 07:38:43 -0700</bug_when>
    <thetext>Attachment 89540 did not build on gtk:
Build output: http://queues.webkit.org/results/8402585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385759</commentid>
    <comment_count>4</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-04-14 07:52:47 -0700</bug_when>
    <thetext>Hmm.  Note that there already was an &quot;InterpolationQuality&quot; enum (which I believe the bool would override if set).  This was somewhat confusing, but having two enums is also confusing.  Is there some way we could clean this up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386406</commentid>
    <comment_count>5</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-04-14 23:22:47 -0700</bug_when>
    <thetext>@senorblanco: I completely agree. Having a &apos;quality&apos; and an &apos;algorithm&apos; axis implies a two dimensional space where we have this weird thing of what is a lowQuality/NearestNeighbor and a highQuality/NearestNeighbor.

The InterpolationQuality stuff seems inherited from CG - there is a 1:1 mapping to CGInterpolationQuality. One possibility is extending this enum with specific algorithms so as to have (strawman names - I don&apos;t really like &apos;strategy&apos;, but &apos;quality&apos; doesn&apos;t cover it anymore):

enum InterpolationStrategy {
  Default,
  None,
  Low,
  Medium,
  High,
  NearestNeighbor,
  Bilinear,
  Bicubic,
  Lanczos
};

Passing &apos;Default&apos; into drawImage and friends (replacing the useLowQualityScaling param) means &apos;use whatever strategy has been set with setInterpolationStrategy()&apos;, and anything else will use that strategy for that call (same as useLowQualityScaling does now).

Platforms can then choose to map any unsupported strategies to whatever they deem best (eg lanczos-&gt;bicubic). This makes me a little uncomfortable, but no more so than a platform having to decide what &apos;medium&apos; means.

What do you guys reckon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393033</commentid>
    <comment_count>6</comment_count>
      <attachid>89540</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-26 16:37:27 -0700</bug_when>
    <thetext>Comment on attachment 89540
Patch

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

Need help understanding the low vs. none thing, otherwise this looks fine!

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:479
&gt; -        setImageInterpolationQuality(InterpolationLow);
&gt; +        setImageInterpolationQuality(InterpolationNone);

Why?

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:499
&gt; -        setImageInterpolationQuality(InterpolationLow);
&gt; +        setImageInterpolationQuality(InterpolationNone);

Why?

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:756
&gt; +            ScalingAlgorithm scaleAlgorithm = 
&gt; +                shouldPaintAtLowQuality(context, image.get(), bgLayer, tileSize) ? ScalingNearestNeighbor : ScalingAuto;

We dont&apos; really have a collumn limit for webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394387</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-04-28 06:20:03 -0700</bug_when>
    <thetext>Hi Eric - thanks for the review! Basically None means nearest-neighbour, and Low means bilinear. 

The original useLowQualityScale boolean meant different things in different places (None or Low), so I normalised them to NearestNeighbour (ie quality=None). This does change the behaviour, but as I mentioned in comment #2, no tests broke.

I think senorblanco has a point re this being confusing - what do you think about the suggestion in comment #5?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789249</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-01 01:07:13 -0700</bug_when>
    <thetext>Closing this as configuration changed since the problem at hand, sueLowQualityScale seems to have moved to typed enum bitfield ImagePaintingOptions</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89540</attachid>
            <date>2011-04-13 23:50:01 -0700</date>
            <delta_ts>2011-04-26 16:37:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58495-20110414164958.patch</filename>
            <type>text/plain</type>
            <size>27044</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OGE2ZDZiNmQzZjQ3ODk3
YWQzMzRiMGYyZjNkZjNjYTEzNTY5ZWEwLi5kNDgwMzY5OGFiZmQ1NzljMzAwNTcwMmMzMjM0ZTIw
ODUyMGViZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDQtMTMgIE1pa2Ug
TGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdXNlTG93UXVhbGl0eVNjYWxlIGJv
b2xlYW4gaW4gR3JhcGhpY3NDb250ZXh0IHRvIGJlIGFuIGVudW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDk1CisKKyAgICAgICAgTm8gbmV3IGZ1
bmN0aW9uYWxpdHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgorCiAyMDExLTA0
LTEzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAyNWE0NjU0MzQzZGQxMDFhNWJiZTY0
NGVhMWZjMWQ4YWMwMmM5MGYxLi5kNmM5YTc0ZjNiYWMxNzFkNjU0MzM1NmJmNzc1MzNjMmJmZmM5
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKQEAgLTM1OSw5ICszNTksOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
CiAgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHAsIEludFJlY3QoMCwgMCwg
LTEsIC0xKSwgb3ApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHIsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdBbGdv
cml0aG0gc2NhbGVBbGdvcml0aG0pCiB7Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9y
U3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7
CisgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwg
LTEsIC0xKSwgb3AsIHNjYWxlQWxnb3JpdGhtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRQb2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCkBAIC0zNjksOSArMzY5LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdAogICAgIGRy
YXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6
ZSgpKSwgc3JjUmVjdCwgb3ApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3Qm
IGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1h
Z2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVz
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdB
bGdvcml0aG0gc2NhbGVBbGdvcml0aG0pCiB7Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNv
bG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2Fs
ZSk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
KSwgc3JjUmVjdCwgb3AsIHNjYWxlQWxnb3JpdGhtKTsKIH0KIAogI2lmICFPUyhXSU5DRSkgfHwg
UExBVEZPUk0oUVQpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwK
ICAgICBmaWxsUmVjdChmb250LnNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgcG9pbnQsIGgsIGZy
b20sIHRvKSwgYmFja2dyb3VuZENvbG9yLCBjb2xvclNwYWNlKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBTY2FsaW5nQWxnb3JpdGhtIHNjYWxlQWxnb3JpdGhtKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CkBAIC00NjAsOSAr
NDYwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdAogICAgIGlmICh0aCA9PSAtMSkKICAgICAg
ICAgdGggPSBpbWFnZS0+aGVpZ2h0KCk7CiAKLSAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKSB7
CisgICAgaWYgKHNjYWxlQWxnb3JpdGhtID09IFNjYWxpbmdOZWFyZXN0TmVpZ2hib3IpIHsKICAg
ICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgcHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSA9
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBi
ZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
SW50ZXJwb2xhdGlvbk5vbmUpOwogICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3Qo
ZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRp
b24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogICAgICAg
ICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxp
dHkpOwpAQCAtNDcwLDIxICs0NjksMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdAogICAgICAg
ICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUo
dHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSks
IHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50
JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBTY2FsaW5nQWxnb3JpdGhtIHNjYWxlQWxnb3JpdGhtKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodXNlTG93UXVh
bGl0eVNjYWxlKSB7CisgICAgaWYgKHNjYWxlQWxnb3JpdGhtID09IFNjYWxpbmdOZWFyZXN0TmVp
Z2hib3IpIHsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgcHJldmlvdXNJbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKLSAgICAgICAgc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAgICAgICAgIGltYWdl
LT5kcmF3VGlsZWQodGhpcywgcmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0lu
dGVycG9sYXRpb25RdWFsaXR5KTsKICAgICB9IGVsc2UKICAgICAgICAgaW1hZ2UtPmRyYXdUaWxl
ZCh0aGlzLCByZWN0LCBzcmNQb2ludCwgdGlsZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdBbGdvcml0aG0gc2NhbGVBbGdvcml0aG0pCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5
NSw5ICs0OTQsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkgeworICAgIGlmIChzY2FsZUFsZ29y
aXRobSA9PSBTY2FsaW5nTmVhcmVzdE5laWdoYm9yKSB7CiAgICAgICAgIEludGVycG9sYXRpb25R
dWFsaXR5IHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCk7Ci0gICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvbkxvdyk7CisgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvbk5vbmUpOwogICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3Qs
IGhSdWxlLCB2UnVsZSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CiAgICAgICAgIHNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgfSBl
bHNlCkBAIC01MDksOSArNTA4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclMKICAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwg
LTEpLCBvcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVj
dCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgU2NhbGluZ0FsZ29yaXRobSBzY2FsZUFsZ29yaXRobSkKIHsKLSAgICBkcmF3SW1h
Z2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEp
LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0
eWxlQ29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgc2NhbGVBbGdvcml0
aG0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBk
ZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTUx
OSwxMiArNTE4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTCiAgICAgZHJhd0ltYWdlQnVm
ZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEludFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkp
LCBzcmNSZWN0LCBvcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
SW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgU2NhbGluZ0FsZ29yaXRobSBzY2FsZUFsZ29yaXRobSkKIHsKLSAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmNS
ZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmNSZWN0LCBvcCwgc2NhbGVBbGdv
cml0aG0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIFNjYWxpbmdBbGdvcml0aG0gc2NhbGVBbGdvcml0aG0pCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU0NCwxNCArNTQzLDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTCiAgICAgaWYgKHRoID09IC0xKQogICAgICAgICB0
aCA9IGltYWdlLT5oZWlnaHQoKTsKIAotICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpIHsKKyAg
ICBpZiAoc2NhbGVBbGdvcml0aG0gPT0gU2NhbGluZ05lYXJlc3ROZWlnaGJvcikgewogICAgICAg
ICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5ID0gaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIElu
dGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRl
cnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFj
ZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJl
Y3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93UXVhbGl0
eVNjYWxlKTsKKyAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9h
dFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMu
bG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCBzY2FsZUFsZ29yaXRobSk7CiAg
ICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29s
b3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBG
bG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNl
LCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVj
dChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCBzY2FsZUFsZ29yaXRo
bSk7CiB9CiAKICNpZiAhUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDRjNzI1YmVhNWViY2M1YTMwOGFj
Y2VlZjE4YzI1MWY4OTE2MDBkOWYuLjljMDcyOGJmMDBmMWQ0MGUyOWRlOTIyOTY5MjNhMTcyYmE0
NGZhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC0zMDgsMjMgKzMwOCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgp
OwogCiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFNjYWxpbmdB
bGdvcml0aG0gPSBTY2FsaW5nQXV0byk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVh
bGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBT
Y2FsaW5nQWxnb3JpdGhtID0gU2NhbGluZ0F1dG8pOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShJ
bWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBTY2FsaW5n
QWxnb3JpdGhtID0gU2NhbGluZ0F1dG8pOwogICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFNjYWxpbmdBbGdv
cml0aG0gPSBTY2FsaW5nQXV0byk7CiAgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Uq
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFNjYWxpbmdBbGdvcml0aG0gPSBTY2FsaW5nQXV0
byk7CiAKICAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgU2NhbGluZ0FsZ29yaXRobSA9IFNjYWxpbmdB
dXRvKTsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
LSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFNjYWxpbmdBbGdvcml0aG0gPSBTY2FsaW5nQXV0byk7CiAgICAgICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVh
bGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFNjYWxpbmdBbGdvcml0aG0gPSBTY2Fs
aW5nQXV0byk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KElu
dGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDFlNzNmMjVhMmIxNjYzOWM5NTEzMDQ2
MjQ1MTgyMWQ1YTkzODc3YTcuLjhhMDM3ZWQ1ZGZhODBmNzhlMzg0NjFlYzU0OGI5NDNlOTc1YzNl
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKQEAgLTY0LDYgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgZW51bSBI
b3Jpem9udGFsQWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhDZW50ZXIg
fTsKIAorICAgIGVudW0gU2NhbGluZ0FsZ29yaXRobSB7IFNjYWxpbmdBdXRvLCBTY2FsaW5nTmVh
cmVzdE5laWdoYm9yIH07CisgICAgCiAgICAgZW51bSBUZXh0QmFzZWxpbmUgeyBBbHBoYWJldGlj
VGV4dEJhc2VsaW5lLCBUb3BUZXh0QmFzZWxpbmUsIE1pZGRsZVRleHRCYXNlbGluZSwgQm90dG9t
VGV4dEJhc2VsaW5lLCBJZGVvZ3JhcGhpY1RleHRCYXNlbGluZSwgSGFuZ2luZ1RleHRCYXNlbGlu
ZSB9OwogICAgIAogICAgIGVudW0gVGV4dEFsaWduIHsgU3RhcnRUZXh0QWxpZ24sIEVuZFRleHRB
bGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFsaWduLCBSaWdodFRleHRBbGlnbiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXgg
MTEzMjY4ZDEzYmMyZGFmNzg5NzIxYzI2ZjA1MzljZTMyMmQ1YjcwNy4uYTU4ZjBlMWRlMDNhMzc2
ZDk4NWQ0MDA4ZGFmNGFjY2M5MzE4ZDE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTAsNyArMTEwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIC8vIFRoZSBkcmF3IG1ldGhvZCBkcmF3cyB0aGUgY29udGVudHMg
b2YgdGhlIGJ1ZmZlciB3aXRob3V0IGNvcHlpbmcgaXQuCiAgICAgICAgIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgU2NhbGluZ0FsZ29yaXRobSA9IFNjYWxpbmdBdXRvKTsKICAgICAgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggNGY0YjJiNWIwYTYyZTc0NzkwODNkNGE4OTgwNjllZjNmYTc3MzkxNi4uNTJmNzgwNzIx
NjlmYmQ5NWE3Mjk0NWQzYTNmYjcyMjFmZmU4ODFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
QEAgLTEyMSwxMSArMTIxLDExIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zCiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCAs
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBvcCAsIFNjYWxpbmdBbGdvcml0aG0gc2NhbGVBbGdvcml0aG0pCiB7CiAgICAg
Ly8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4gc3VyZmFjZSBvbiBkZXN0
cnVjdGlvbgogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNh
aXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fZGF0YS5tX3N1cmZhY2UpKTsKLSAgICBjb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5n
ZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIHNjYWxlQWxnb3Jp
dGhtKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggNzU3NWE5M2E0OGY0MDNhNWE1NWRm
ODJkMjc0YWU5NGNiOTAwNjBhNi4uMTAyOGE3M2UxYjFhMzUyNzJkMjcwMGQxOTlkYzE2MWQ2MWUw
ODAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTIyNCwyMSArMjI0LDIxIEBAIHN0YXRpYyBDR0ltYWdlUmVm
IGNnSW1hZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRh
KQogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRl
eHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdBbGdvcml0aG0gc2NhbGVBbGdv
cml0aG0pCiB7CiAgICAgaWYgKCFtX2FjY2VsZXJhdGVSZW5kZXJpbmcpIHsKICAgICAgICAgaWYg
KGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSkgewogICAgICAgICAgICAgLy8gV2UncmUgZHJhd2lu
ZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywgd2UgbmVl
ZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0LgogICAgICAgICAgICAgUmVmUHRyPElt
YWdlPiBjb3B5ID0gY29weUltYWdlKCk7Ci0gICAgICAgICAgICBkZXN0Q29udGV4dC0+ZHJhd0lt
YWdlKGNvcHkuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1h
Z2UoY29weS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBzY2FsZUFsZ29yaXRobSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlRm9yUmVuZGVyaW5nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKG1f
c2l6ZSwgbV9kYXRhKSk7Ci0gICAgICAgICAgICBkZXN0Q29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
Rm9yUmVuZGVyaW5nLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1h
Z2UoaW1hZ2VGb3JSZW5kZXJpbmcuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wLCBzY2FsZUFsZ29yaXRobSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoKTsKICAgICAgICAgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlID0gKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSkgPyBDb2xvclNwYWNlRGV2
aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwotICAgICAgICBkZXN0Q29udGV4dC0+ZHJhd0ltYWdl
KGNvcHkuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVh
bGl0eVNjYWxlKTsKKyAgICAgICAgZGVzdENvbnRleHQtPmRyYXdJbWFnZShjb3B5LmdldCgpLCBj
b2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIHNjYWxlQWxnb3JpdGhtKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VCdWZmZXJRdC5jcHAKaW5kZXggZjdkNjNjYWMyYTNlZDJjMTI3NWI3YjczYTgxZTgyNDk4NmFm
NDkxMC4uMmU5OTIyNjEyN2ZlOGM5M2I5ZTliOWU4NWYzMzU3YmZiN2ViNjA4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5j
cHAKQEAgLTEzMywxNCArMTMzLDE0IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpj
b3B5SW1hZ2UoKSBjb25zdAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdBbGdv
cml0aG0gc2NhbGVBbGdvcml0aG0pCiB7CiAgICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQo
KSkgewogICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIuICBJbiBv
cmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNvcHkgdGhlIHNvdXJjZSBidWZmZXIg
Zmlyc3QuCiAgICAgICAgIFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZSgpOwotICAgICAg
ICBkZXN0Q29udGV4dC0+ZHJhd0ltYWdlKGNvcHkuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgZGVz
dENvbnRleHQtPmRyYXdJbWFnZShjb3B5LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3AsIHNjYWxlQWxnb3JpdGhtKTsKICAgICB9IGVsc2UKLSAgICAgICAg
ZGVzdENvbnRleHQtPmRyYXdJbWFnZShtX2RhdGEubV9pbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNw
YWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAg
IGRlc3RDb250ZXh0LT5kcmF3SW1hZ2UobV9kYXRhLm1faW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JT
cGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBzY2FsZUFsZ29yaXRobSk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDEwZDgzNjI3NTYzOGY1NTk0ZjAwYmZiZmYx
NDlkOTNmMTFhOTk2OTAuLjAyZTY2ODcxZDRjYmQ4NWYyM2M0OGU3NjRjNTczNTJmZTVmMzJiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEltYWdlQnVmZmVy
OjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBj
b25zdAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgICAgICAgICAgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgU2NhbGluZ0FsZ29yaXRobSBzY2FsZUFsZ29y
aXRobSkKIHsKICAgICBpZiAobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LnVzZUdQVSgpICYmIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT51c2VHUFUoKSkgewogICAgICAgICBpZiAoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbkFjY2VsZXJhdGUoKSkgewpAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uCiAgICAgfQogCiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRm
b3JtQ29udGV4dC5iaXRtYXAoKSwgY29udGV4dCA9PSBtX2NvbnRleHQpOwotICAgIGNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgc2NhbGVBbGdv
cml0aG0pOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAppbmRleCBiNTExOGY2
YzZlZGViZWUxZjg3MjE2YWNkYTAzMmNmMGQwMTFlNWI4Li5kYzEzNWFmNDcxNjE3Yzg2Y2NmZjI4
OWQ4OTQ2NTAzNTQ1MTZmNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcApAQCAtMTE0LDEwICsx
MTQsMTAgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmKSBjb25zdAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AgLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFNjYWxpbmdBbGdvcml0
aG0gc2NhbGVBbGdvcml0aG0pCiB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUNvcHkgPSBjb3B5
SW1hZ2UoKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2VDb3B5LmdldCgpLCBzdHlsZUNv
bG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2VDb3B5LmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgc2NhbGVBbGdvcml0aG0pOwogfQogCiB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJX
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4
LmNwcAppbmRleCBiNjAzYTYwYzcwNzU4MmUwMDYwMWZjMjI1YjEyZTFkMjllMWViMDJiLi5hZjU1
YWFmNWRhNTM5ZDA1NWNiZTliOWJiNmY5YmM0OTdlZGJiNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApAQCAtMTA1
LDEwICsxMDUsMTAgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmKSBjb25zdAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
KQorICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgU2NhbGluZ0Fs
Z29yaXRobSBzY2FsZUFsZ29yaXRobSkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlQ29weSA9
IGNvcHlJbWFnZSgpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZUNvcHkuZ2V0KCksIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZUNvcHkuZ2V0KCksIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBzY2FsZUFsZ29yaXRobSk7CiB9CiAKIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCA1MjI2MjMzNTBmNjI0NmEwODY0OGZhNTJhMmQ1NTBkY2ExYjRlOTU0Li5mYjA0Mzgy
OGY3YWQ5MGM2ZTE5NDgzNTFlYTgwNTYzMWFkZGNjZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTc1Miw4ICs3NTIsOSBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9z
aXRlKCkgOiBvcDsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50Rm9yQmFja2dyb3Vu
ZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwogICAg
ICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNsaWVudEZvckJh
Y2tncm91bmRJbWFnZSwgdGlsZVNpemUpOwotICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBi
Z0xheWVyLCB0aWxlU2l6ZSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3VGlsZWRJbWFnZShp
bWFnZS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVT
aXplLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgICAgICAgICAgU2Nh
bGluZ0FsZ29yaXRobSBzY2FsZUFsZ29yaXRobSA9IAorICAgICAgICAgICAgICAgIHNob3VsZFBh
aW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCB0aWxlU2l6ZSkg
PyBTY2FsaW5nTmVhcmVzdE5laWdoYm9yIDogU2NhbGluZ0F1dG87CisgICAgICAgICAgICBjb250
ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBk
ZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCwgc2NhbGVBbGdvcml0aG0pOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAppbmRleCA2ODRiMzVhMmI1Mjg4NDQ2YzZkNzkxZDBkY2M0NjdhOWE0ODliYjZmLi5mM2VhYWUy
ODA4MWE0ZTVmOGRmYWRjNDVlNTI4YmZlZjRhN2I4ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM4Myw4ICszODMsOSBAQCB2b2lkIFJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYgbm9kZSgp
LT5oYXNUYWdOYW1lKGltZ1RhZykpID8gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5v
ZGUoKSkgOiAwOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1h
Z2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92
ZXI7CiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpLmdldCgpOwot
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCBpbWFnZSwgaW1hZ2UsIHJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1h
Z2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdl
dCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VM
b3dRdWFsaXR5U2NhbGluZyk7CisgICAgU2NhbGluZ0FsZ29yaXRobSBzY2FsZUFsZ29yaXRobSA9
CisgICAgICAgIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwg
cmVjdC5zaXplKCkpID8gU2NhbGluZ05lYXJlc3ROZWlnaGJvciA6IFNjYWxpbmdBdXRvOworICAg
IGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9z
aXRlT3BlcmF0b3IsIHNjYWxlQWxnb3JpdGhtKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5p
bXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAo=
</data>
<flag name="review"
          id="82234"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>