<?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>97357</bug_id>
          
          <creation_ts>2012-09-21 13:33:45 -0700</creation_ts>
          <short_desc>Respect -webkit-overflow-scrolling:touch if it is safe to do so</short_desc>
          <delta_ts>2014-02-05 10:58:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>anilsson</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>efidler</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725759</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-09-21 13:33:45 -0700</bug_when>
    <thetext>If a render layer is composited, and is therefore a stacking context, there is no risk in putting it on the fast scrolling path. So in this case, RenderLayer::usesCompositedScrolling() should return true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725761</commentid>
    <comment_count>1</comment_count>
      <attachid>165179</attachid>
    <who name="">vollick</who>
    <bug_when>2012-09-21 13:36:34 -0700</bug_when>
    <thetext>Created attachment 165179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725775</commentid>
    <comment_count>2</comment_count>
      <attachid>165179</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-21 13:47:01 -0700</bug_when>
    <thetext>Comment on attachment 165179
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        If the scrolling render layer is composited, then RenderLayer::usesCompositedScrolling
&gt; +        will return true.

Might be nice to describe what this does. :)  Even if it&apos;s obvious to the compositor folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725778</commentid>
    <comment_count>3</comment_count>
      <attachid>165179</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-21 13:51:24 -0700</bug_when>
    <thetext>Comment on attachment 165179
Patch

I don&apos;t follow this at all. It&apos;s quite possible to have a &lt;div&gt; be in a compositing layer, but to not have set up the inner scrolling layers that make it scroll compositedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725788</commentid>
    <comment_count>4</comment_count>
      <attachid>165179</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 13:56:49 -0700</bug_when>
    <thetext>Comment on attachment 165179
Patch

Attachment 165179 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13950752

New failing tests:
compositing/overflow/overflow-scrollbar-layers.html
compositing/geometry/limit-layer-bounds-transformed-overflow.html
compositing/overflow/content-gains-scrollbars.html
compositing/layer-creation/overflow-scroll-overlap.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725802</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-21 14:03:53 -0700</bug_when>
    <thetext>If we do have a layer that is set up to scroll we should throw it down this path without needing the webkit-overflow-scroll property.  What other internal setup is required, Simon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725805</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-21 14:06:44 -0700</bug_when>
    <thetext>It doesn&apos;t follow that being composited means that something is a stacking context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725811</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-21 14:11:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It doesn&apos;t follow that being composited means that something is a stacking context.

Huh?  What do we make composited that&apos;s not a stacking context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725815</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-21 14:12:33 -0700</bug_when>
    <thetext>Layers that are composited because of overlap, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725857</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-21 15:02:30 -0700</bug_when>
    <thetext>If the layer is a stacking context (for whatever reason) we should be able to go down this path, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725884</commentid>
    <comment_count>10</comment_count>
      <attachid>165179</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 15:31:21 -0700</bug_when>
    <thetext>Comment on attachment 165179
Patch

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

New failing tests:
compositing/overflow/scrollbars-with-clipped-owner.html
compositing/geometry/limit-layer-bounds-transformed-overflow.html
compositing/overflow/content-gains-scrollbars.html
compositing/repaint/newly-composited-repaint-rect.html
compositing/overflow/overflow-scrollbar-layers.html
compositing/overflow/clip-content-under-overflow-controls.html
WebFilterOperationsTest.saveAndRestore
compositing/layer-creation/overflow-scroll-overlap.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726184</commentid>
    <comment_count>11</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-09-22 16:38:53 -0700</bug_when>
    <thetext>In light of the previous comments, I tried returning true in RenderLayer::usesCompositedScrolling if isComposited() and isStackingContext() were both true, but this caused some problems in the layout tests. The problem is that when composited scrolling is used, the scrolling contents are rendered behind transparent scroll controls rather than being clipped. Hopefully this behavior can be changed, but at present, automatically opting into composited scrolling will cause correctness issues.

Respecting -webkit-overflow-scrolling:touch is also currently dangerous, because it creates a stacking context and the promotion to a composited layer can affect anti-aliasing, so we will break the z-ordering and anti-aliasing of some existing pages.

Given these facts, I propose the following:
 - We respect -webkit-overflow-scrolling:touch *if*
   a) We&apos;re already a stacking context, and
   b) We&apos;re already composited.

This would let us explicitly opt into composited scrolling in a way that prevents us from breaking the z-ordering and anti-aliasing of existing pages.

In future, if the problem of rendering the scrollable content behind the overflow scroll controls is addressed, we can look into automatically opting into this path without -webkit-overflow-scrolling:touch. We might also relax the isStackingContext restriction -- it should be sufficient that promotion to a stacking context would not affect z-ordering.

I will upload a patch that does this shortly. In that patch, if ENABLE(ACCELERATED_OVERFLOW_SCROLLING) is defined, then -webkit-overflow-scrolling:touch will *force* us to use composited scrolling, otherwise that property will only turn on composited scrolling if we&apos;re already a composited stacking context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726185</commentid>
    <comment_count>12</comment_count>
      <attachid>165271</attachid>
    <who name="">vollick</who>
    <bug_when>2012-09-22 16:52:57 -0700</bug_when>
    <thetext>Created attachment 165271
Patch

Contains the changes mentioned in the previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726186</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-22 16:56:04 -0700</bug_when>
    <thetext>Attachment 165271 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/RenderLayer.cpp:1597:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726187</commentid>
    <comment_count>14</comment_count>
      <attachid>165272</attachid>
    <who name="">vollick</who>
    <bug_when>2012-09-22 17:10:38 -0700</bug_when>
    <thetext>Created attachment 165272
Patch

I apologize for the spam. This patch addresses the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726254</commentid>
    <comment_count>15</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-23 07:08:28 -0700</bug_when>
    <thetext>So you are doing this for feature detection purposes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726271</commentid>
    <comment_count>16</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-09-23 10:24:07 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; So you are doing this for feature detection purposes?

It&apos;s more that I&apos;m trying to enabled a feature rather than detect it (but perhaps I&apos;m misunderstanding your question). Composited scrolling is great -- it saves us some very costly painting -- but designers currently have no way to take advantage of it on browsers built without ACCELERATED_OVERFLOW_SCROLLING enabled. My hope was to provide *some* recourse for designers who want to use composited scrolling on all WebKit-based browsers, but do so in a way that doesn&apos;t break existing pages.

With this change, a designer can use -webkit-overflow-scrolling:touch in combination with -webkit-transform:translateZ(0px) to opt into composited scrolling.

I should stress that this isn&apos;t the end of the work on this, either. My hope is that we can use composited scrolling on more and more pages, eventually without using -webkit-overflow-scrolling at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726771</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-24 09:47:58 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; With this change, a designer can use -webkit-overflow-scrolling:touch in combination with -webkit-transform:translateZ(0px) to opt into composited scrolling.

I really don&apos;t want more translateZ(0) cargo-cultism than already exists, especially when combined with the already mysterious -webkit-overflow-scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726868</commentid>
    <comment_count>18</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-09-24 11:28:10 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; With this change, a designer can use -webkit-overflow-scrolling:touch in combination with -webkit-transform:translateZ(0px) to opt into composited scrolling.
&gt; 
&gt; I really don&apos;t want more translateZ(0) cargo-cultism than already exists, especially when combined with the already mysterious -webkit-overflow-scrolling.

I&apos;m still working on a proper response, but in the meantime, I wanted to lists the tests that fail when composited scrolling is used because the scrolled contents are drawn behind/over the overflow controls. These are
compositing/overflow/clip-content-under-overflow-controls.html
compositing/overflow/scrollbars-with-clipped-owner.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727253</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-24 21:21:00 -0700</bug_when>
    <thetext>usesCompositedScrolling() controls too many behaviors.  There are a few concepts here.  For the compositor tree setup it shouldn&apos;t make a different what this value is set to, although other parts of the rendering code do care about this property.

What I think we should do here is set up the RenderLayerBacking&apos;s GraphicsLayer hierarchy so that scrolling is only a matter of updating one layer&apos;s position and make sure clipping, etc, is correct.  Then it&apos;s a simple matter to hook up RenderLayer::scrollTo() to simply update this position and rely on the compositor to repaint content as needed.  Look at how RenderLayerCompositor&apos;s GraphicsLayer hierarchy is different to accomodate this.  The m_containmentLayer/m_scrollingLayer/m_scrollingContentsLayer fields on RLB appear to be partway there, but I think we should just make it part of the default setup and not rely on things like offsetFromRenderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976864</commentid>
    <comment_count>20</comment_count>
      <attachid>165272</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 10:58:05 -0800</bug_when>
    <thetext>Comment on attachment 165272
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165179</attachid>
            <date>2012-09-21 13:36:34 -0700</date>
            <delta_ts>2012-09-22 16:52:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97357-20120921163558.patch</filename>
            <type>text/plain</type>
            <size>1456</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI4MmM0NWU4MjVlOTVj
MjE5NmU0MGQ2YThkZTE1NDBlY2QzYjg3My4uMWQ3YzJlYTIyZmM0YmQwM2JiNWJjY2Q5ZGI0NTZi
ZTc4NGQ3MWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlckxheWVyOjp1
c2VzQ29tcG9zaXRlZFNjcm9sbGluZyBzaG91bGQgcmVwb3J0IHRydWUgaWYgdGhlIHNjcm9sbGlu
ZyBsYXllciBpcyBjb21wb3NpdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIHRoZSBzY3JvbGxpbmcgcmVuZGVyIGxheWVyIGlzIGNvbXBvc2l0ZWQs
IHRoZW4gUmVuZGVyTGF5ZXI6OnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nCisgICAgICAgIHdpbGwg
cmV0dXJuIHRydWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1c2Vz
Q29tcG9zaXRlZFNjcm9sbGluZyk6CisKIDIwMTItMDktMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSBtb3JlIGNsYW5nIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBhNDk1NDRk
ZjFjZmI2N2FiNWEwNTgzOGU5NGIwYThmMzQ0ZmJiN2JlLi5jNTM4NzYxZjE3NjQyYTRjOTU0MmNl
NWNlNGUxMDhiMGEyMWJjMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTE1NzMsNiArMTU3Myw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnVzZXNDb21wb3Np
dGVkU2Nyb2xsaW5nKCkgY29uc3QKICAgICBpZiAoIXNjcm9sbHNPdmVyZmxvdygpIHx8ICFhbGxv
d3NTY3JvbGxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKGlzQ29tcG9z
aXRlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpCiAgICAgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPnVzZVRv
dWNoT3ZlcmZsb3dTY3JvbGxpbmcoKTsKICNlbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165271</attachid>
            <date>2012-09-22 16:52:57 -0700</date>
            <delta_ts>2012-09-22 17:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97357-20120922195219.patch</filename>
            <type>text/plain</type>
            <size>13961</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI4MmM0NWU4MjVlOTVj
MjE5NmU0MGQ2YThkZTE1NDBlY2QzYjg3My4uMThlODZhYjQ5ZDQxMGVjMjM3MDQ0M2U1ZmQwYjU4
NWFjZTRkMmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA5LTIyICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlc3BlY3QgLXdlYmtp
dC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2ggaWYgaXQgaXMgc2FmZSB0byBkbyBzbworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczNTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdlIG11
c3QgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgYmVmb3JlCisgICAgICAg
IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoIHdpbGwgYmUgcmVzcGVjdGVkLiBUaGlz
IGlzIGJlY2F1c2UKKyAgICAgICAgdGhlIHByb3BlcnR5IGNyZWF0ZXMgYSBzdGFja2luZyBjb250
ZXh0IGFuZCBjb21wb3NpdGVkIGxheWVycyBhbmQKKyAgICAgICAgY2FuIHRoZXJlZm9yZSBhZmZl
Y3QgdGhlIHotb3JkZXJpbmcgYW5kIGFudGlhbGlhc2luZyBvZiBleGlzdGluZworICAgICAgICBw
YWdlcy4gVGhpcyBwYXRjaCBhbGxvd3MgdGhlIHByb3BlcnR5IHRvIGJlIHJlc3BlY3RlZCwgYnV0
IG9ubHkgaWYKKyAgICAgICAgd2UgYXJlIGFscmVhZHkgYSBzdGFja2luZyBjb250ZXh0IGFuZCBp
ZiB3ZSBhcmUgYWxyZWFkeSBjb21wb3NpdGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBpZiBFTkFC
TEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSwgd2lsbCBmb3JjZQorICAgICAgICAt
d2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaCB0byBiZSByZXNwZWN0ZWQuCisKKyAgICAg
ICAgTkI6IHdpdGhvdXQgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyksIHRo
ZSBwcm9wZXJ0eQorICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyAgd2lsbCBOT1Qg
Zm9yY2UgYSBzdGFja2luZyBjb250ZXh0ICh0aGF0CisgICAgICAgIGNvZGUgaW4gU3R5bGVSZXNv
bHZlci5jcHAgaXMgc3RpbGwgcHJvdGVjdGVkIGJ5CisgICAgICAgIEVOQUJMRShBQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpKS4gSWYgdGhlIFJlbmRlckxheWVyIGlzIG5vdCAKKyAgICAg
ICAgYWxyZWFkeSBhIHN0YWNraW5nIGNvbnRleHQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCB0aGVu
IHRoaXMgcHJvcGVydHkgCisgICAgICAgIHdpbGwgYmUgaWdub3JlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFN0eWxlUmFyZUluaGVyaXRl
ZERhdGEpOgorCiAyMDEyLTA5LTIwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgbW9yZSBjbGFuZyB3YXJuaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBk
MTBkNzM4YTMwOWY5MWE5YWM4NjQzMzNlNzg1MThkZTljNjE1NGY5Li5hNGQxZGQyOTE5OTI5ZmU5
OGM5YzI4ZTY0ZjczNjJjNmFhMmI1MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzA2LDkgKzMwNiw3IEBAIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogICAgIENTU1By
b3BlcnR5V2Via2l0TWFza1NpemUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE9yZGVyLAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpCiAgICAgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZywKLSNl
bmRpZgogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JB
ZGp1c3QsCkBAIC0yMjg3LDEyICsyMjg1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgogICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5CZWZvcmVDb2xs
YXBzZSgpKTsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAgICAgICAgICAg
ICBpZiAoIXN0eWxlLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVRvdWNoKTsKLSNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmU6CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNQZXJzcGVjdGl2ZSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZWZkOWJh
ZTNhMDY4ZGRlNWVkMTllZjgzY2E3NTRjNzYyNmU4MTgzMC4uMWI2N2M3NjI4NmMyZjAzOTM2OTFl
Y2U4YTQ1Y2VlMGQ1ZDE4ODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTgzNywx
MiArODM3LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBpbnQKICAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Ny
b2xsaW5nOgogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVRvdWNoKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFr
OwotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CiAg
ICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVjb25vbXkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMTUsOSArMTAxMyw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJZCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZToKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKLSNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgogI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
cjoKQEAgLTI4NzUsOSArMjg3MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKLSNpZiBFTkFCTEUoQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRP
dmVyZmxvd1Njcm9sbGluZzoKLSNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCmlu
ZGV4IGI1YTlkM2Y0ZjNhM2M4MjE1NjQxODkxZTY4ODk1MmEzMzMyNGI4OTIuLjU3ZThlN2E5MDVk
M2QzYjY5NDNjMzI4OGY0YTdlMjk1MmVkNGJjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcApAQCAtMzQyLDkgKzM0Miw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMaW5lR3JpZDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xs
aW5nOgotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0Q29tYmluZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4KaW5kZXggYmRkODQ4ODExMWMzOGU0ODg1ZGNjOTk0ZmEyNjgzMTA0YWVhNDZmMy4uYzUwMDRj
NGEzMDI3NTBkYjIyMDdiODcwMjdkYWM1ZWI2Mjk5MTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4KQEAgLTQxMSw2ICs0MTEsNCBAQCB6LWluZGV4CiAjaWYgZGVmaW5l
ZChFTkFCTEVfV0lER0VUX1JFR0lPTikgJiYgRU5BQkxFX1dJREdFVF9SRUdJT04KIC13ZWJraXQt
d2lkZ2V0LXJlZ2lvbgogI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKSAmJiBFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
CiAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZwotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCmluZGV4IDRiOTk2Nzk2ZmE1NTdiNTg2NzhiYWZiYzQxZWY1ZWFiMGI1
OTQ2MmYuLjVmOGJlZmNlMWE0ZGQ1OWQ0Y2I1NTJiMDdkMjcxNTdhNGI2Y2IxYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC04MjksMTEgKzgyOSw5IEBAIG5vLWxp
bWl0CiBtYW51YWwKIC8vIGF1dG8KIAotI2lmIGRlZmluZWQoRU5BQkxFX0FDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykgJiYgRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RwogLy8gLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcKIC8vIGF1dG8KIHRvdWNoCi0jZW5kaWYK
IAogLy8gLXdlYmtpdC13cml0aW5nLW1vZGUKIC8vIFNWRyBjb21wYXRpYmlsaXR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2YyMDY4N2M4MjhkMjA3YzU4MmQ3OTlhNzQ1
YzYyOTFhMTU5ZmU5OS4uNDc3MDNiYTkxOWU2N2ExMzM3MjczNmFhZWExMzI2ZmU5MGRjOTUxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDA1MCw3ICs0MDUwLDYgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE92ZXJmbG93U2Nyb2xsaW5nOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpOwog
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpAQCAtNDA1OCw3ICs0MDU3LDYgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICAgICAgbV9zdHlsZS0+c2V0VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRvdWNoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGE0OTU0NGRmMWNmYjY3YWI1YTA1
ODM4ZTk0YjBhOGYzNDRmYmI3YmUuLjE1N2U1MDUzNWUzYTY1Y2U1Y2Y2ZjIzNDVlMGFmZjFhMjgw
ZTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTU3
MywxMSArMTU3MywxOCBAQCBib29sIFJlbmRlckxheWVyOjp1c2VzQ29tcG9zaXRlZFNjcm9sbGlu
ZygpIGNvbnN0CiAgICAgaWYgKCFzY3JvbGxzT3ZlcmZsb3coKSB8fCAhYWxsb3dzU2Nyb2xsaW5n
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpCi0gICAgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPnVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmcoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIElm
IEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyBpcyBub3QgZW5hYmxlZCwgb25seSByZXNw
ZWN0IHRoZSBjc3MKKyAgICAvLyBwcm9wZXJ0eSBpZiB3ZSdyZSBzdXJlIGl0J3Mgc2FmZS4gV2Un
cmUgZGVmaW5pdGVseSBzYWZlIGlmIHdlJ3JlIGFscmVhZHkKKyAgICAvLyBhIHN0YWNraW5nIGNv
bnRleHQgKGJlY2F1c2Ugd2Ugd29uJ3QgYWZmZWN0IHotb3JkZXJpbmcpIGFuZCBjb21wb3NpdGVk
CisgICAgLy8gKGJlY2F1c2Ugd2Ugd29uJ3QgYWZmZWN0IGFudGktYWxpYXNpbmcpLiBJbiBmdXR1
cmUsIHRoZXNlIGNvbmRpdGlvbnMKKyAgICAvLyBjb3VsZCBiZSByZWxheGVkLiBGb3IgZXhhbXBs
ZSwgcmF0aGVyIHRoYW4gY2hlY2tpbmcgaWYgdGhpcyBsYXllciBpcworICAgIC8vIGFzIHN0YWNr
aW5nIGNvbnRleHQsIHdlIGNvdWxkIG1lcmVseSBjaGVjayB0aGF0IHotb3JkZXJpbmcgd291bGRu
J3QgYmUKKyAgICAvLyBhZmZlY3RlZCBpZiBpdCB3ZXJlIHRvIGJlY29tZSBvbmUuCisgICAgcmV0
dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKQorI2lm
ICFFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgICAgICAmJiBpc0Nv
bXBvc2l0ZWQoKSAmJiBpc1N0YWNraW5nQ29udGV4dCgpCiAjZW5kaWYKKyAgICA7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRl
eCA3YmNiMzhlYjQ4NGUyYjVkZjQ5ZGY0MjAwMWQ4YWM4ZDljZmFiMzdlLi4zMjM1M2MxNTQwZmY0
N2UyZTliODAwOWVhMzczNmIxZjQ5ZjFhODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTUyLDkgKzk1Miw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9CiAjZW5kaWYK
LSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIGJvb2wgdXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOyB9Ci0jZW5kaWYKICAgICBib29sIHRleHRTaXpl
QWRqdXN0KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0
OyB9CiAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsg
fQogCkBAIC0xNDAxLDkgKzEzOTksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQogI2VuZGlmCi0j
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICB2b2lkIHNldFVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9Ci0jZW5kaWYKICAgICBib29sIHNl
dFRleHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5KEVUZXh0U2Vj
dXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2Vj
dXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE3MjMsOSArMTcxOSw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGFwSGln
aGxpZ2h0Q29sb3IoKTsKICNlbmRpZgotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0
aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lv
bnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCAzOTYyZTdmNmEyMmQ3NjdiYmEyODUwYzQ1YzUw
MTNhMzkyZDdiZjQyLi42ZjJhZWJkZGRjYzViM2Q0YjhhNjAwMmJlYTlhNDYyZjQ1ZDg1Njg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwCkBAIC04OCw5ICs4OCw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgbV9pbWFnZVJlbmRlcmluZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCiAgICAgLCBtX2xpbmVTbmFwKFJlbmRl
clN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkKICAgICAsIG1fbGluZUFsaWduKFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUFsaWduKCkpCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1ND
Uk9MTElORykKICAgICAsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoUmVuZGVyU3R5bGU6Omlu
aXRpYWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCi0jZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX1JFU09MVVRJT04pCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJT
dHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpKQogICAgICwgbV9pbWFnZVJlc29s
dXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQpAQCAt
MTUwLDkgKzE0OCw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykKICAgICAsIG1faW1hZ2VSZW5k
ZXJpbmcoby5tX2ltYWdlUmVuZGVyaW5nKQogICAgICwgbV9saW5lU25hcChvLm1fbGluZVNuYXAp
CiAgICAgLCBtX2xpbmVBbGlnbihvLm1fbGluZUFsaWduKQotI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKG8u
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZykKLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0Vf
UkVTT0xVVElPTikKICAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlKG8ubV9pbWFnZVJlc29s
dXRpb25Tb3VyY2UpCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAoby5tX2ltYWdlUmVzb2x1
dGlvblNuYXApCkBAIC0yMTUsOSArMjExLDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAg
ICAgICYmIG92ZXJmbG93V3JhcCA9PSBvLm92ZXJmbG93V3JhcAogICAgICAgICAmJiBuYnNwTW9k
ZSA9PSBvLm5ic3BNb2RlCiAgICAgICAgICYmIGtodG1sTGluZUJyZWFrID09IG8ua2h0bWxMaW5l
QnJlYWsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICAg
ICAmJiB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nID09IG8udXNlVG91Y2hPdmVyZmxvd1Njcm9s
bGluZwotI2VuZGlmCiAgICAgICAgICYmIHRleHRTaXplQWRqdXN0ID09IG8udGV4dFNpemVBZGp1
c3QKICAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCiAgICAgICAgICYmIHVzZXJTZWxlY3Qg
PT0gby51c2VyU2VsZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCAyN2Q1YzlhY2U3ODM1NzU0OTNkNjUy
NzM2MmYyNjM5NDQ1NTBhMmI4Li43OTA1ZDc2YmEwOWFjODE3YTljMzRkNGYzYjAwM2ZmYzkzMDAx
YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTEwMyw5ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgbV9pbWFnZVJlbmRlcmluZyA6IDI7IC8vIEVJbWFnZVJlbmRlcmluZwogICAgIHVuc2ln
bmVkIG1fbGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAogICAgIHVuc2lnbmVkIG1fbGluZUFsaWdu
IDogMTsgLy8gTGluZUFsaWduCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORykKICAgICB1bnNpZ25lZCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOiAxOwotI2VuZGlm
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogICAgIHVuc2lnbmVkIG1faW1hZ2VS
ZXNvbHV0aW9uU291cmNlIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU291cmNlCiAgICAgdW5zaWdu
ZWQgbV9pbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU25hcAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165272</attachid>
            <date>2012-09-22 17:10:38 -0700</date>
            <delta_ts>2014-02-05 10:58:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97357-20120922201000.patch</filename>
            <type>text/plain</type>
            <size>13901</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI4MmM0NWU4MjVlOTVj
MjE5NmU0MGQ2YThkZTE1NDBlY2QzYjg3My4uMThlODZhYjQ5ZDQxMGVjMjM3MDQ0M2U1ZmQwYjU4
NWFjZTRkMmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA5LTIyICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlc3BlY3QgLXdlYmtp
dC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2ggaWYgaXQgaXMgc2FmZSB0byBkbyBzbworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczNTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdlIG11
c3QgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgYmVmb3JlCisgICAgICAg
IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoIHdpbGwgYmUgcmVzcGVjdGVkLiBUaGlz
IGlzIGJlY2F1c2UKKyAgICAgICAgdGhlIHByb3BlcnR5IGNyZWF0ZXMgYSBzdGFja2luZyBjb250
ZXh0IGFuZCBjb21wb3NpdGVkIGxheWVycyBhbmQKKyAgICAgICAgY2FuIHRoZXJlZm9yZSBhZmZl
Y3QgdGhlIHotb3JkZXJpbmcgYW5kIGFudGlhbGlhc2luZyBvZiBleGlzdGluZworICAgICAgICBw
YWdlcy4gVGhpcyBwYXRjaCBhbGxvd3MgdGhlIHByb3BlcnR5IHRvIGJlIHJlc3BlY3RlZCwgYnV0
IG9ubHkgaWYKKyAgICAgICAgd2UgYXJlIGFscmVhZHkgYSBzdGFja2luZyBjb250ZXh0IGFuZCBp
ZiB3ZSBhcmUgYWxyZWFkeSBjb21wb3NpdGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBpZiBFTkFC
TEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSwgd2lsbCBmb3JjZQorICAgICAgICAt
d2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaCB0byBiZSByZXNwZWN0ZWQuCisKKyAgICAg
ICAgTkI6IHdpdGhvdXQgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyksIHRo
ZSBwcm9wZXJ0eQorICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyAgd2lsbCBOT1Qg
Zm9yY2UgYSBzdGFja2luZyBjb250ZXh0ICh0aGF0CisgICAgICAgIGNvZGUgaW4gU3R5bGVSZXNv
bHZlci5jcHAgaXMgc3RpbGwgcHJvdGVjdGVkIGJ5CisgICAgICAgIEVOQUJMRShBQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpKS4gSWYgdGhlIFJlbmRlckxheWVyIGlzIG5vdCAKKyAgICAg
ICAgYWxyZWFkeSBhIHN0YWNraW5nIGNvbnRleHQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCB0aGVu
IHRoaXMgcHJvcGVydHkgCisgICAgICAgIHdpbGwgYmUgaWdub3JlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFN0eWxlUmFyZUluaGVyaXRl
ZERhdGEpOgorCiAyMDEyLTA5LTIwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgbW9yZSBjbGFuZyB3YXJuaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBk
MTBkNzM4YTMwOWY5MWE5YWM4NjQzMzNlNzg1MThkZTljNjE1NGY5Li5hNGQxZGQyOTE5OTI5ZmU5
OGM5YzI4ZTY0ZjczNjJjNmFhMmI1MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzA2LDkgKzMwNiw3IEBAIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogICAgIENTU1By
b3BlcnR5V2Via2l0TWFza1NpemUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE9yZGVyLAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpCiAgICAgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZywKLSNl
bmRpZgogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JB
ZGp1c3QsCkBAIC0yMjg3LDEyICsyMjg1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgogICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5CZWZvcmVDb2xs
YXBzZSgpKTsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAgICAgICAgICAg
ICBpZiAoIXN0eWxlLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVRvdWNoKTsKLSNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmU6CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNQZXJzcGVjdGl2ZSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZWZkOWJh
ZTNhMDY4ZGRlNWVkMTllZjgzY2E3NTRjNzYyNmU4MTgzMC4uMWI2N2M3NjI4NmMyZjAzOTM2OTFl
Y2U4YTQ1Y2VlMGQ1ZDE4ODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTgzNywx
MiArODM3LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBpbnQKICAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Ny
b2xsaW5nOgogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVRvdWNoKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFr
OwotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CiAg
ICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVjb25vbXkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMTUsOSArMTAxMyw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJZCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZToKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKLSNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgogI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
cjoKQEAgLTI4NzUsOSArMjg3MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKLSNpZiBFTkFCTEUoQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRP
dmVyZmxvd1Njcm9sbGluZzoKLSNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCmlu
ZGV4IGI1YTlkM2Y0ZjNhM2M4MjE1NjQxODkxZTY4ODk1MmEzMzMyNGI4OTIuLjU3ZThlN2E5MDVk
M2QzYjY5NDNjMzI4OGY0YTdlMjk1MmVkNGJjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcApAQCAtMzQyLDkgKzM0Miw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMaW5lR3JpZDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xs
aW5nOgotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0Q29tYmluZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4KaW5kZXggYmRkODQ4ODExMWMzOGU0ODg1ZGNjOTk0ZmEyNjgzMTA0YWVhNDZmMy4uYzUwMDRj
NGEzMDI3NTBkYjIyMDdiODcwMjdkYWM1ZWI2Mjk5MTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4KQEAgLTQxMSw2ICs0MTEsNCBAQCB6LWluZGV4CiAjaWYgZGVmaW5l
ZChFTkFCTEVfV0lER0VUX1JFR0lPTikgJiYgRU5BQkxFX1dJREdFVF9SRUdJT04KIC13ZWJraXQt
d2lkZ2V0LXJlZ2lvbgogI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKSAmJiBFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
CiAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZwotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCmluZGV4IDRiOTk2Nzk2ZmE1NTdiNTg2NzhiYWZiYzQxZWY1ZWFiMGI1
OTQ2MmYuLjVmOGJlZmNlMWE0ZGQ1OWQ0Y2I1NTJiMDdkMjcxNTdhNGI2Y2IxYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC04MjksMTEgKzgyOSw5IEBAIG5vLWxp
bWl0CiBtYW51YWwKIC8vIGF1dG8KIAotI2lmIGRlZmluZWQoRU5BQkxFX0FDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykgJiYgRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RwogLy8gLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcKIC8vIGF1dG8KIHRvdWNoCi0jZW5kaWYK
IAogLy8gLXdlYmtpdC13cml0aW5nLW1vZGUKIC8vIFNWRyBjb21wYXRpYmlsaXR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2YyMDY4N2M4MjhkMjA3YzU4MmQ3OTlhNzQ1
YzYyOTFhMTU5ZmU5OS4uNDc3MDNiYTkxOWU2N2ExMzM3MjczNmFhZWExMzI2ZmU5MGRjOTUxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDA1MCw3ICs0MDUwLDYgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE92ZXJmbG93U2Nyb2xsaW5nOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpOwog
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpAQCAtNDA1OCw3ICs0MDU3LDYgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICAgICAgbV9zdHlsZS0+c2V0VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRvdWNoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGE0OTU0NGRmMWNmYjY3YWI1YTA1
ODM4ZTk0YjBhOGYzNDRmYmI3YmUuLjFjNWU5YjczNzhiYmQ5OGM0ZDk2ZDRmYWQ1YjJhYWZmMjgz
ZTY3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTU3
MywxMCArMTU3MywxOCBAQCBib29sIFJlbmRlckxheWVyOjp1c2VzQ29tcG9zaXRlZFNjcm9sbGlu
ZygpIGNvbnN0CiAgICAgaWYgKCFzY3JvbGxzT3ZlcmZsb3coKSB8fCAhYWxsb3dzU2Nyb2xsaW5n
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIElmIEFDQ0VMRVJBVEVEX09WRVJG
TE9XX1NDUk9MTElORyBpcyBub3QgZW5hYmxlZCwgb25seSByZXNwZWN0IHRoZSBjc3MKKyAgICAv
LyBwcm9wZXJ0eSBpZiB3ZSdyZSBzdXJlIGl0J3Mgc2FmZS4gV2UncmUgZGVmaW5pdGVseSBzYWZl
IGlmIHdlJ3JlIGFscmVhZHkKKyAgICAvLyBhIHN0YWNraW5nIGNvbnRleHQgKGJlY2F1c2Ugd2Ug
d29uJ3QgYWZmZWN0IHotb3JkZXJpbmcpIGFuZCBjb21wb3NpdGVkCisgICAgLy8gKGJlY2F1c2Ug
d2Ugd29uJ3QgYWZmZWN0IGFudGktYWxpYXNpbmcpLiBJbiBmdXR1cmUsIHRoZXNlIGNvbmRpdGlv
bnMKKyAgICAvLyBjb3VsZCBiZSByZWxheGVkLiBGb3IgZXhhbXBsZSwgcmF0aGVyIHRoYW4gY2hl
Y2tpbmcgaWYgdGhpcyBsYXllciBpcworICAgIC8vIGFzIHN0YWNraW5nIGNvbnRleHQsIHdlIGNv
dWxkIG1lcmVseSBjaGVjayB0aGF0IHotb3JkZXJpbmcgd291bGRuJ3QgYmUKKyAgICAvLyBhZmZl
Y3RlZCBpZiBpdCB3ZXJlIHRvIGJlY29tZSBvbmUuCisKICNpZiBFTkFCTEUoQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHJldHVybiByZW5kZXJlcigpLT5zdHlsZSgpLT51c2VU
b3VjaE92ZXJmbG93U2Nyb2xsaW5nKCk7CiAjZWxzZQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpICYm
IGlzQ29tcG9zaXRlZCgpICYmIGlzU3RhY2tpbmdDb250ZXh0KCk7CiAjZW5kaWYKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3
YmNiMzhlYjQ4NGUyYjVkZjQ5ZGY0MjAwMWQ4YWM4ZDljZmFiMzdlLi4zMjM1M2MxNTQwZmY0N2Uy
ZTliODAwOWVhMzczNmIxZjQ5ZjFhODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTUyLDkgKzk1Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIGJvb2wgdXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT51
c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOyB9Ci0jZW5kaWYKICAgICBib29sIHRleHRTaXplQWRq
dXN0KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9
CiAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQog
CkBAIC0xNDAxLDkgKzEzOTksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQogI2VuZGlmCi0jaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICB2b2lkIHNldFVzZVRv
dWNoT3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9Ci0jZW5kaWYKICAgICBib29sIHNldFRl
eHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJp
dHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJp
dHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE3MjMsOSArMTcxOSw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGFwSGlnaGxp
Z2h0Q29sb3IoKTsKICNlbmRpZgotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JP
TExJTkcpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmco
KSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMg
Y29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lvbnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCAzOTYyZTdmNmEyMmQ3NjdiYmEyODUwYzQ1YzUwMTNh
MzkyZDdiZjQyLi42ZjJhZWJkZGRjYzViM2Q0YjhhNjAwMmJlYTlhNDYyZjQ1ZDg1Njg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwCkBAIC04OCw5ICs4OCw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgbV9pbWFnZVJlbmRlcmluZyhSZW5kZXJT
dHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCiAgICAgLCBtX2xpbmVTbmFwKFJlbmRlclN0
eWxlOjppbml0aWFsTGluZVNuYXAoKSkKICAgICAsIG1fbGluZUFsaWduKFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUFsaWduKCkpCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORykKICAgICAsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoUmVuZGVyU3R5bGU6OmluaXRp
YWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCi0jZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1JFU09MVVRJT04pCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpKQogICAgICwgbV9pbWFnZVJlc29sdXRp
b25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQpAQCAtMTUw
LDkgKzE0OCw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykKICAgICAsIG1faW1hZ2VSZW5kZXJp
bmcoby5tX2ltYWdlUmVuZGVyaW5nKQogICAgICwgbV9saW5lU25hcChvLm1fbGluZVNuYXApCiAg
ICAgLCBtX2xpbmVBbGlnbihvLm1fbGluZUFsaWduKQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKG8udXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZykKLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVT
T0xVVElPTikKICAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlKG8ubV9pbWFnZVJlc29sdXRp
b25Tb3VyY2UpCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAoby5tX2ltYWdlUmVzb2x1dGlv
blNuYXApCkBAIC0yMTUsOSArMjExLDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpv
cGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAg
ICYmIG92ZXJmbG93V3JhcCA9PSBvLm92ZXJmbG93V3JhcAogICAgICAgICAmJiBuYnNwTW9kZSA9
PSBvLm5ic3BNb2RlCiAgICAgICAgICYmIGtodG1sTGluZUJyZWFrID09IG8ua2h0bWxMaW5lQnJl
YWsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICAgICAm
JiB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nID09IG8udXNlVG91Y2hPdmVyZmxvd1Njcm9sbGlu
ZwotI2VuZGlmCiAgICAgICAgICYmIHRleHRTaXplQWRqdXN0ID09IG8udGV4dFNpemVBZGp1c3QK
ICAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCiAgICAgICAgICYmIHVzZXJTZWxlY3QgPT0g
by51c2VyU2VsZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCAyN2Q1YzlhY2U3ODM1NzU0OTNkNjUyNzM2
MmYyNjM5NDQ1NTBhMmI4Li43OTA1ZDc2YmEwOWFjODE3YTljMzRkNGYzYjAwM2ZmYzkzMDAxYTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgKQEAgLTEwMyw5ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbV9pbWFnZVJlbmRlcmluZyA6IDI7IC8vIEVJbWFnZVJlbmRlcmluZwogICAgIHVuc2lnbmVk
IG1fbGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAogICAgIHVuc2lnbmVkIG1fbGluZUFsaWduIDog
MTsgLy8gTGluZUFsaWduCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykKICAgICB1bnNpZ25lZCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOiAxOwotI2VuZGlmCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogICAgIHVuc2lnbmVkIG1faW1hZ2VSZXNv
bHV0aW9uU291cmNlIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU291cmNlCiAgICAgdW5zaWduZWQg
bV9pbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU25hcAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>