<?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>68648</bug_id>
          
          <creation_ts>2011-09-22 12:15:46 -0700</creation_ts>
          <short_desc>Refactor paintOverhangAreas to allow non-Mac Chromium platforms to reuse code</short_desc>
          <delta_ts>2013-04-12 06:58:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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 name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>abarth</cc>
    
    <cc>asvitkine</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mihaip</cc>
    
    <cc>rjkroege</cc>
    
    <cc>sail</cc>
    
    <cc>schenney</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471771</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 12:15:46 -0700</bug_when>
    <thetext>Refactor paintOverhangAreas to allow non-Mac Chromium platforms to reuse code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471772</commentid>
    <comment_count>1</comment_count>
      <attachid>108380</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 12:16:21 -0700</bug_when>
    <thetext>Created attachment 108380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471783</commentid>
    <comment_count>2</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-09-22 12:29:38 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=108380&amp;action=review

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.cpp:47
&gt; +    if (!initialized &amp;&amp; PlatformSupport::enableScrollOverhang()) {

So we never set |initialized| to true if PlatformSupport::enableScrollOverhang() always returns false? Maybe you want an inner if statement here..

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.cpp:63
&gt; +    if (!PlatformSupport::enableScrollOverhang()) {

Can you just call the super class version of this method, in this case?

&gt; Source/WebCore/rendering/RenderLayer.cpp:-1717
&gt; -    return m_scrollOrigin + m_scrollSize - visibleContentRect(true).size();

Can you give some context on this change? Why is it not needed on the Mac for rubber banding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471791</commentid>
    <comment_count>3</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 12:36:45 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:-1717
&gt; &gt; -    return m_scrollOrigin + m_scrollSize - visibleContentRect(true).size();
&gt; 
&gt; Can you give some context on this change? Why is it not needed on the Mac for rubber banding?

This is a bug fix to a problem I encountered while scrolling beyond the edge of the page. This change shouldn&apos;t be in this patch. I&apos;ll remove it.

I&apos;ve addressed the other two points you mentioned as well. I&apos;m uploading a new patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471797</commentid>
    <comment_count>4</comment_count>
      <attachid>108385</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 12:45:09 -0700</bug_when>
    <thetext>Created attachment 108385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471802</commentid>
    <comment_count>5</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 12:56:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=108385) [details]
&gt; Patch

This patch must land first on the chromium side: http://codereview.chromium.org/8003001/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471804</commentid>
    <comment_count>6</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-09-22 13:04:02 -0700</bug_when>
    <thetext>This is only for non-accelerated pages, right? See https://bugs.webkit.org/show_bug.cgi?id=66969 . It&apos;s weird that the hw part is gated on a compile-time guard but the software part is gated on a PlatformSupport function call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471819</commentid>
    <comment_count>7</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-09-22 13:25:59 -0700</bug_when>
    <thetext>Nico is right. Instead of a platform check, can you base it on the state of ENABLE(RUBBER_BANDING)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471851</commentid>
    <comment_count>8</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 14:03:01 -0700</bug_when>
    <thetext>Done.

(In reply to comment #7)
&gt; Nico is right. Instead of a platform check, can you base it on the state of ENABLE(RUBBER_BANDING)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471853</commentid>
    <comment_count>9</comment_count>
      <attachid>108398</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 14:04:05 -0700</bug_when>
    <thetext>Created attachment 108398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471855</commentid>
    <comment_count>10</comment_count>
      <attachid>108398</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-09-22 14:06:44 -0700</bug_when>
    <thetext>Comment on attachment 108398
Patch

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

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.cpp:62
&gt; +    // Does this platform support overhang?

useless comment

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.cpp:63
&gt; +#if ENABLE(RUBBER_BANDING)

Shouldn&apos;t this be `#if !ENABLE(RUBBER_BANDING`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471856</commentid>
    <comment_count>11</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-09-22 14:08:07 -0700</bug_when>
    <thetext>&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.cpp:64
&gt; +    ScrollbarThemeComposite::paintOverhangAreas(view, context, horizontalOverhangRect, verticalOverhangRect, dirtyRect);

This check is reversed. Instead of doing this, can you put the whole method inside an ENABLE(RUBBER_BANDING) block (and in the header also). That way, if its not enabled, the superclass version will be used already.

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromium.h:62
&gt; +        RefPtr&lt;Pattern&gt; m_overhangPattern;

Surround this with #if ENABLE(RUBBER_BANDING)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471895</commentid>
    <comment_count>12</comment_count>
      <attachid>108409</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 15:18:12 -0700</bug_when>
    <thetext>Created attachment 108409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471900</commentid>
    <comment_count>13</comment_count>
      <attachid>108409</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-09-22 15:24:58 -0700</bug_when>
    <thetext>Comment on attachment 108409
Patch

Looks good to me. I haven&apos;t looked to closely on the code that&apos;s been moved around, I assume you didn&apos;t change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471902</commentid>
    <comment_count>14</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-22 15:25:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 108409 [details])
&gt; Looks good to me. I haven&apos;t looked to closely on the code that&apos;s been moved around, I assume you didn&apos;t change it.

Just style changes according to the style checker. The code is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471903</commentid>
    <comment_count>15</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-09-22 15:27:13 -0700</bug_when>
    <thetext>dglazkov: Can you honor this with an r+ please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472281</commentid>
    <comment_count>16</comment_count>
      <attachid>108409</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-23 09:39:32 -0700</bug_when>
    <thetext>Comment on attachment 108409
Patch

Should this be USE_RUBBER_BANDING?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472282</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-23 09:39:48 -0700</bug_when>
    <thetext>Adam ^^^?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472285</commentid>
    <comment_count>18</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-23 09:47:01 -0700</bug_when>
    <thetext>Ah, I see -- Fady tells me that rubber-banding is an existing define. Nevermind :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472343</commentid>
    <comment_count>19</comment_count>
      <attachid>108409</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 11:04:03 -0700</bug_when>
    <thetext>Comment on attachment 108409
Patch

Rejecting attachment 108409 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
o-playing-and-pause.html = MISSING PASS


Regressions: Unexpected image and text mismatch : (1)
  svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT

Regressions: Unexpected image mismatch : (5)
  fast/text/atsui-multiple-renderers.html = IMAGE
  fast/text/international/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE



Full output: http://queues.webkit.org/results/9826003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472346</commentid>
    <comment_count>20</comment_count>
      <attachid>108409</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-23 11:08:03 -0700</bug_when>
    <thetext>Comment on attachment 108409
Patch

I suspect some of these tests are flaky. Will try again, if it fails again, I will investigate further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472508</commentid>
    <comment_count>21</comment_count>
      <attachid>108409</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 14:39:00 -0700</bug_when>
    <thetext>Comment on attachment 108409
Patch

Clearing flags on attachment: 108409

Committed r95860: &lt;http://trac.webkit.org/changeset/95860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472509</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 14:39:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472607</commentid>
    <comment_count>23</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-09-23 16:31:54 -0700</bug_when>
    <thetext>This change caused the following tests to have pixel diffs on the mac:

fast/events/scale-and-scroll-iframe-body.html
fast/events/scale-and-scroll-iframe-window.html
platform/chromium/fast/repaint/fixed-layout-360x240.html

The overhang area is no longer being painted. On one hand, the claim was that this CL should have no visible effect. On the other hand, the new results are closed to the non-Chromium baselines. Any preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472629</commentid>
    <comment_count>24</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-09-23 17:03:07 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; This change caused the following tests to have pixel diffs on the mac:
&gt; 
&gt; fast/events/scale-and-scroll-iframe-body.html
&gt; fast/events/scale-and-scroll-iframe-window.html
&gt; platform/chromium/fast/repaint/fixed-layout-360x240.html
&gt; 
&gt; The overhang area is no longer being painted. On one hand, the claim was that this CL should have no visible effect. On the other hand, the new results are closed to the non-Chromium baselines. Any preference?

Ah, it&apos;s because you moved the function to ScrollbarThemeChromium.cpp, but that is excluded from the Mac build:

http://www.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp&amp;q=scrollbarthemechromium%20file:gyp&amp;exact_package=chromium&amp;l=1468

I&apos;m going to roll back this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472630</commentid>
    <comment_count>25</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-09-23 17:06:14 -0700</bug_when>
    <thetext>Reverted r95860 for reason:

Breaks overhang rendering on Chromium Mac

Committed r95889: &lt;http://trac.webkit.org/changeset/95889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473082</commentid>
    <comment_count>26</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-09-26 06:34:56 -0700</bug_when>
    <thetext>ScrollbarThemeChromium is pretty small, so it might be okay to inject into the inheritance hierarchy between ScrollbarThemeChromiumMac and ScrollbarThemeComposite. I think ScrollbarThemeChromiumMac will override all the interesting bits anyway.

The other possibility is to move overhang painting into a separate class - e.g. ScrollOverhangPainterChromium.cpp which we can use from both ScrollbarThemeChromiumMac and ScrollbarThemeChromium. The changes for that would be more substantial, but it might be a better design long-term (e.g. if we decide to have different such painters).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473092</commentid>
    <comment_count>27</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-09-26 07:28:24 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; ScrollbarThemeChromium is pretty small, so it might be okay to inject into the inheritance hierarchy between ScrollbarThemeChromiumMac and ScrollbarThemeComposite. I think ScrollbarThemeChromiumMac will override all the interesting bits anyway.
&gt; 
&gt; The other possibility is to move overhang painting into a separate class - e.g. ScrollOverhangPainterChromium.cpp which we can use from both ScrollbarThemeChromiumMac and ScrollbarThemeChromium. The changes for that would be more substantial, but it might be a better design long-term (e.g. if we decide to have different such painters).

Sorry about the breakage, I assumed an inheritance relationship for ScrollbarThemeChromiumMac without verifying.  Thank you Mihai for the revert! I like the idea of moving overhang painting code out of the ScrollTheme code. I&apos;ll look into doing that. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108380</attachid>
            <date>2011-09-22 12:16:21 -0700</date>
            <delta_ts>2011-09-22 12:45:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68648-20110922151619.patch</filename>
            <type>text/plain</type>
            <size>22640</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzI1M2MzODYwYWM2MGIw
MzY4NmMyNDg4ODk4NDI5YWNiNDgzOTJkLi5kOGQxYWRkZTBjZjExMTBkMmZkYWMxNDI0ZjE0YmM3
MGU5NTIyZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDktMjIgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRP
dmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSAoeWV0
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp+U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
bWF4aW11bVNjcm9sbFBvc2l0aW9uKToKKwogMjAxMS0wOS0yMSAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QncyBjb250ZXh0IHNob3VsZCBub3QgYmUgZGVzdHJveWVkIGR1cmluZyBhdGV4aXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
LmgKaW5kZXggZTMyMTdiYjIwMDM4Y2FiMTNiZDY0YWQzMzU0MGVlZjc3MTU2Yjg4Ni4uZjUwOGYw
YzY3Yzg3OWUyM2QyOWEwNTQyMDRkOTU4MmViOGVmMTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTM5Niw2ICszOTYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7
CiAgICAgfTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwbGF0Zm9ybSBzdXBwb3J0
cyBzY3JvbGwgb3ZlcmhhbmcuCisgICAgc3RhdGljIGJvb2wgZW5hYmxlU2Nyb2xsT3Zlcmhhbmco
KTsKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFy
aWFibGUgc2l6ZWQgaXRlbXMKICAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMs
IHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgogICAgIC8vIHRoZSB0cmFj
ayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtLmNwcAppbmRleCAyNGIzZTE4ZWY0NWJjNTcyNTM3ZGUyMmFkOWUxMjUwMTcyODA2ZjM5
Li40YjQxNDg1NzZkNDBmNzFiMGVkMjVjOGZlNmVhZmFkYjdjNjc2YzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hy
b21pdW0uaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmgiCkBAIC0zOSw2ICs0MSwxNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtKCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlh
bGl6ZWQgJiYgUGxhdGZvcm1TdXBwb3J0OjplbmFibGVTY3JvbGxPdmVyaGFuZygpKSB7CisgICAg
ICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICAvLyBMb2FkIHRoZSBsaW5lbiBwYXR0
ZXJuIGltYWdlIHVzZWQgZm9yIG92ZXJoYW5nIGRyYXdpbmcuCisgICAgICAgIFJlZlB0cjxJbWFn
ZT4gcGF0dGVybkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJvdmVyaGFuZ1Bh
dHRlcm4iKTsKKyAgICAgICAgbV9vdmVyaGFuZ1BhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUocGF0
dGVybkltYWdlLCB0cnVlLCB0cnVlKTsKKyAgICB9Cit9CisKK1Njcm9sbGJhclRoZW1lQ2hyb21p
dW06On5TY3JvbGxiYXJUaGVtZUNocm9taXVtKCkKK3sKK30KKwordm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjpwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyogdmlldywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBj
b25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQoreworICAgIC8vIERvZXMgdGhzIHBsYXRmb3JtIHN1cHBvcnQgb3Zlcmhhbmc/CisgICAg
aWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmVuYWJsZVNjcm9sbE92ZXJoYW5nKCkpIHsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIGlmICghaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgZGlydHlSZWN0KSk7CisKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGlmICghdmVydGljYWxPdmVyaGFu
Z1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0
aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAvLyBUaGUgZXh0ZW50IG9mIGVhY2ggc2hhZG93IGluIHBpeGVscy4KKyAgICBj
b25zdCBpbnQga1NoYWRvd1NpemUgPSA0OworICAgIC8vIE9mZnNldCBvZiBuZWdhdGl2ZSBvbmUg
cGl4ZWwgdG8gbWFrZSB0aGUgZ3JhZGllbnQgYmxlbmQgd2l0aCB0aGUgdG9vbGJhcidzIGJvdHRv
bSBib3JkZXIuCisgICAgY29uc3QgaW50IGtUb29sYmFyU2hhZG93T2Zmc2V0ID0gLTE7CisgICAg
Y29uc3Qgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgc3RvcDsKKyAgICAgICAgQ29sb3IgY29sb3I7
CisgICAgfSBrU2hhZG93Q29sb3JzW10gPSB7CisgICAgICAgIHsgMC4wMDAsIENvbG9yKDAsIDAs
IDAsIDI1NSkgfSwKKyAgICAgICAgeyAwLjEyNSwgQ29sb3IoMCwgMCwgMCwgNTcpIH0sCisgICAg
ICAgIHsgMC4zNzUsIENvbG9yKDAsIDAsIDAsIDQxKSB9LAorICAgICAgICB7IDAuNjI1LCBDb2xv
cigwLCAwLCAwLCAxOCkgfSwKKyAgICAgICAgeyAwLjg3NSwgQ29sb3IoMCwgMCwgMCwgNikgfSwK
KyAgICAgICAgeyAxLjAwMCwgQ29sb3IoMCwgMCwgMCwgMCkgfQorICAgIH07CisgICAgY29uc3Qg
dW5zaWduZWQga051bVNoYWRvd0NvbG9ycyA9IHNpemVvZihrU2hhZG93Q29sb3JzKSAvIHNpemVv
ZihrU2hhZG93Q29sb3JzWzBdKTsKKworICAgIGNvbnN0IGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJo
YW5nID0gIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpOworICAgIGNvbnN0IGJvb2wg
aGFzVmVydGljYWxPdmVyaGFuZyA9ICF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCk7Cisg
ICAgLy8gUHJlZmVyIG5vbi1hZGRpdGl2ZSBzaGFkb3dzLCBidXQgZGVncmFkZSB0byBhZGRpdGl2
ZSBzaGFkb3dzIGlmIHRoZXJlIGlzIHZlcnRpY2FsIG92ZXJoYW5nLgorICAgIGNvbnN0IGJvb2wg
dXNlQWRkaXRpdmVTaGFkb3dzID0gaGFzVmVydGljYWxPdmVyaGFuZzsKKworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5z
ZXRGaWxsUGF0dGVybihtX292ZXJoYW5nUGF0dGVybik7CisgICAgaWYgKGhhc0hvcml6b250YWxP
dmVyaGFuZykKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5n
KQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFu
Z1JlY3QsIGRpcnR5UmVjdCkpOworCisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSB2aWV3LT5z
Y3JvbGxPZmZzZXQoKTsKKyAgICBGbG9hdFBvaW50IHNoYWRvd0Nvcm5lck9yaWdpbjsKKyAgICBG
bG9hdFBvaW50IHNoYWRvd0Nvcm5lck9mZnNldDsKKworICAgIC8vIERyYXcgdGhlIHNoYWRvdyBm
b3IgdGhlIGhvcml6b250YWwgb3ZlcmhhbmcuCisgICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFu
ZykgeworICAgICAgICBpbnQgdG9vbGJhclNoYWRvd0hlaWdodCA9IGtTaGFkb3dTaXplOworICAg
ICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAgICAgICBJbnRSZWN0IHNoYWRvd1Jl
Y3QgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0OworICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdo
dChrU2hhZG93U2l6ZSk7CisgICAgICAgIGlmIChzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwKSB7
CisgICAgICAgICAgICBpZiAodXNlQWRkaXRpdmVTaGFkb3dzKSB7CisgICAgICAgICAgICAgICAg
dG9vbGJhclNoYWRvd0hlaWdodCA9IHN0ZDo6bWluKGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVp
Z2h0KCksIGtTaGFkb3dTaXplKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG9yaXpvbnRhbE92
ZXJoYW5nUmVjdC5oZWlnaHQoKSA8IDIgKiBrU2hhZG93U2l6ZSArIGtUb29sYmFyU2hhZG93T2Zm
c2V0KSB7CisgICAgICAgICAgICAgICAgLy8gU3BsaXQgdGhlIG92ZXJoYW5nIGFyZWEgYmV0d2Vl
biB0aGUgd2ViIGNvbnRlbnQgc2hhZG93IGFuZCB0b29sYmFyIHNoYWRvdyBpZiBpdCdzIHRvbyBz
bWFsbC4KKyAgICAgICAgICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodCgoaG9yaXpvbnRhbE92
ZXJoYW5nUmVjdC5oZWlnaHQoKSArIDEpIC8gMik7CisgICAgICAgICAgICAgICAgdG9vbGJhclNo
YWRvd0hlaWdodCA9IGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCkgLSBzaGFkb3dSZWN0
LmhlaWdodCgpIC0ga1Rvb2xiYXJTaGFkb3dPZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBzaGFkb3dSZWN0LnNldFkoaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5tYXhZKCkgLSBzaGFk
b3dSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QubWF4WSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dS
ZWN0Lm1heFkoKSAtIGtTaGFkb3dTaXplKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmln
aW4uc2V0WShzaGFkb3dSZWN0Lm1heFkoKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZz
ZXQuc2V0WSgta1NoYWRvd1NpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBG
bG9hdFBvaW50KDAsIHNoYWRvd1JlY3QubWF4WSgpKSk7CisgICAgICAgICAgICBzaGFkb3dDb3Ju
ZXJPcmlnaW4uc2V0WShzaGFkb3dSZWN0LnkoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhh
c1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoc2hh
ZG93UmVjdC53aWR0aCgpIC0gdmVydGljYWxPdmVyaGFuZ1JlY3Qud2lkdGgoKSk7CisgICAgICAg
ICAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCAwKSB7CisgICAgICAgICAgICAgICAgc2hh
ZG93UmVjdC5zZXRYKHNoYWRvd1JlY3QueCgpICsgdmVydGljYWxPdmVyaGFuZ1JlY3Qud2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT3JpZ2luLnNldFgoc2hhZG93UmVjdC54
KCkpOworICAgICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9mZnNldC5zZXRYKC1rU2hhZG93U2l6
ZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmln
aW4uc2V0WChzaGFkb3dSZWN0Lm1heFgoKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAgICAgIGdyYWRp
ZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ld
LmNvbG9yKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVj
dCkpOworCisgICAgICAgIC8vIERyYXcgYSBkcm9wLXNoYWRvdyBmcm9tIHRoZSB0b29sYmFyLgor
ICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgMCkgeworICAgICAgICAgICAgc2hh
ZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zmc2V0KTsKKyAgICAgICAgICAgIHNoYWRvd1Jl
Y3Quc2V0SGVpZ2h0KHRvb2xiYXJTaGFkb3dIZWlnaHQpOworICAgICAgICAgICAgZ3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBv
aW50KDAsIHNoYWRvd1JlY3QueSgpICsga1NoYWRvd1NpemUpKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCisgICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dD
b2xvcnNbaV0uY29sb3IpOworICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdy
YWRpZW50KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFk
b3dSZWN0LCBkaXJ0eVJlY3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERyYXcgdGhl
IHNoYWRvdyBmb3IgdGhlIHZlcnRpY2FsIG92ZXJoYW5nLgorICAgIGlmIChoYXNWZXJ0aWNhbE92
ZXJoYW5nKSB7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgIElu
dFJlY3Qgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OworICAgICAgICBzaGFkb3dS
ZWN0LnNldFdpZHRoKGtTaGFkb3dTaXplKTsKKyAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0
aCgpIDwgMCkgeworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRYKHZlcnRpY2FsT3ZlcmhhbmdS
ZWN0Lm1heFgoKSAtIHNoYWRvd1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0
UG9pbnQoc2hhZG93UmVjdC54KCksIDApKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBn
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFkb3dSZWN0LngoKSwgMCks
IEZsb2F0UG9pbnQoc2hhZG93UmVjdC5tYXhYKCksIDApKTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQorICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0u
Y29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0
KSk7CisKKyAgICAgICAgLy8gRHJhdyBhIGRyb3Atc2hhZG93IGZyb20gdGhlIHRvb2xiYXIuCisg
ICAgICAgIHNoYWRvd1JlY3QgPSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdDsKKyAgICAgICAgc2hhZG93
UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zmc2V0KTsKKyAgICAgICAgc2hhZG93UmVjdC5zZXRI
ZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
RmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5t
YXhZKCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xv
cnM7IGkrKykKKyAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9y
c1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNvbG9yKTsKKyAgICAgICAgY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJz
ZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOworICAgIH0KKworICAgIC8vIElmIGJvdGgg
cmVjdGFuZ2xlcyBwcmVzZW50LCBkcmF3IGEgcmFkaWFsIGdyYWRpZW50IGZvciB0aGUgY29ybmVy
LgorICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcmhhbmcgJiYgaGFzVmVydGljYWxPdmVyaGFuZykg
eworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShz
aGFkb3dDb3JuZXJPcmlnaW4sIDAsIHNoYWRvd0Nvcm5lck9yaWdpbiwga1NoYWRvd1NpemUpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQor
ICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3As
IGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3Qoc2hhZG93
Q29ybmVyT3JpZ2luLngoKSArIHNoYWRvd0Nvcm5lck9mZnNldC54KCksIHNoYWRvd0Nvcm5lck9y
aWdpbi55KCkgKyBzaGFkb3dDb3JuZXJPZmZzZXQueSgpLCBrU2hhZG93U2l6ZSwga1NoYWRvd1Np
emUpKTsKKyAgICB9Cit9CisKIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMganVzdCBjYWxs
ZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
aAppbmRleCAxMTc4MTI1NjlmNjlmMjAwMzcxYmFjMGY5ZGE4N2E3YzMyZGU0ZmE1Li41MGIwMmE2
NzhkNWE0MWZiZGRlNTc0MzFkYWYyYzA4Y2RjMGY1NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCkBA
IC00MCw2ICs0MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBj
b250YWlucyB0aGUgc2Nyb2xsYmFyIGNvZGUgd2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gQ2hyb21p
dW0KICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eC4KICAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0oKTsKKyAgICAgICAgdmlydHVhbCB+U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0Fy
ZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9u
dGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CkBAIC01Miw2ICs1Nyw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKIAogICAgICAgICB2aXJ0
dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKSA9IDA7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiAgICAgfTsKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IGNjOWEzMDhl
ZTIzMDAyNWU1NTQ5ZGY4MjAzMTMzYjdlM2FlZTJiMGIuLmVkODRmMzJmMzdiZTBiMzYzOGEzNTA0
NDM5MTVkNjBiNGRiNjNhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKQEAgLTYyLDggKzYy
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9s
bGJhciosIFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CiAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVm
IHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJo
YW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAgICAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKQEAgLTgyLDkgKzgwLDYgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9yPElu
dFJlY3Q+Jik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFBhdHRlcm4+IG1fb3ZlcmhhbmdQYXR0
ZXJuOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNDcyMzQzZDQwMWUx
MTQ4NDMyYmQyNmViNmZkOGU5NDE4N2IwZTAwYy4uYzJkZDBkMzMxOGZiMTU2NzU1M2EyNjBkNzRi
ZWE3NmI2ZGIzMmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC0xOTQsMTAgKzE5
NCw2IEBAIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMoKQogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OwogCi0gICAgICAgIC8vIExvYWQgdGhlIGxpbmVuIHBhdHRlcm4gaW1hZ2UgdXNlZCBmb3Igb3Zl
cmhhbmcgZHJhd2luZy4KLSAgICAgICAgUmVmUHRyPEltYWdlPiBwYXR0ZXJuSW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm92ZXJoYW5nUGF0dGVybiIpOwotICAgICAgICBtX292
ZXJoYW5nUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShwYXR0ZXJuSW1hZ2UsIHRydWUsIHRydWUp
OwotCiAgICAgICAgIFtTY3JvbGxiYXJQcmVmc09ic2VydmVyIHJlZ2lzdGVyQXNPYnNlcnZlcl07
CiAgICAgICAgIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogICAgIH0KQEAgLTY3NiwxMjcgKzY3Miw0
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiB2aWV3LCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1Jl
Y3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpCi17Ci0gICAgLy8gVGhlIGV4dGVudCBvZiBlYWNoIHNoYWRvdyBpbiBwaXhlbHMu
Ci0gICAgY29uc3QgaW50IGtTaGFkb3dTaXplID0gNDsKLSAgICAvLyBPZmZzZXQgb2YgbmVnYXRp
dmUgb25lIHBpeGVsIHRvIG1ha2UgdGhlIGdyYWRpZW50IGJsZW5kIHdpdGggdGhlIHRvb2xiYXIn
cyBib3R0b20gYm9yZGVyLgotICAgIGNvbnN0IGludCBrVG9vbGJhclNoYWRvd09mZnNldCA9IC0x
OwotICAgIGNvbnN0IHN0cnVjdCB7Ci0gICAgICAgIGZsb2F0IHN0b3A7Ci0gICAgICAgIENvbG9y
IGNvbG9yOwotICAgIH0ga1NoYWRvd0NvbG9yc1tdID0gewotICAgICAgICB7IDAuMDAwLCBDb2xv
cigwLCAwLCAwLCAyNTUpIH0sCi0gICAgICAgIHsgMC4xMjUsIENvbG9yKDAsIDAsIDAsIDU3KSB9
LAotICAgICAgICB7IDAuMzc1LCBDb2xvcigwLCAwLCAwLCA0MSkgfSwKLSAgICAgICAgeyAwLjYy
NSwgQ29sb3IoMCwgMCwgMCwgMTgpIH0sCi0gICAgICAgIHsgMC44NzUsIENvbG9yKDAsIDAsIDAs
IDYpIH0sCi0gICAgICAgIHsgMS4wMDAsIENvbG9yKDAsIDAsIDAsIDApIH0KLSAgICB9OwotICAg
IGNvbnN0IHVuc2lnbmVkIGtOdW1TaGFkb3dDb2xvcnMgPSBzaXplb2Yoa1NoYWRvd0NvbG9ycykv
c2l6ZW9mKGtTaGFkb3dDb2xvcnNbMF0pOwotCi0gICAgY29uc3QgYm9vbCBoYXNIb3Jpem9udGFs
T3ZlcmhhbmcgPSAhaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCk7Ci0gICAgY29uc3Qg
Ym9vbCBoYXNWZXJ0aWNhbE92ZXJoYW5nID0gIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHko
KTsKLSAgICAvLyBQcmVmZXIgbm9uLWFkZGl0aXZlIHNoYWRvd3MsIGJ1dCBkZWdyYWRlIHRvIGFk
ZGl0aXZlIHNoYWRvd3MgaWYgdGhlcmUgaXMgdmVydGljYWwgb3ZlcmhhbmcuCi0gICAgY29uc3Qg
Ym9vbCB1c2VBZGRpdGl2ZVNoYWRvd3MgPSBoYXNWZXJ0aWNhbE92ZXJoYW5nOwotCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLQotICAgIGNvbnRl
eHQtPnNldEZpbGxQYXR0ZXJuKG1fb3ZlcmhhbmdQYXR0ZXJuKTsKLSAgICBpZiAoaGFzSG9yaXpv
bnRhbE92ZXJoYW5nKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9y
aXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7Ci0gICAgaWYgKGhhc1ZlcnRpY2FsT3Zl
cmhhbmcpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92
ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7Ci0KLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IHZp
ZXctPnNjcm9sbE9mZnNldCgpOwotICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVyT3JpZ2luOwot
ICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVyT2Zmc2V0OwotCi0gICAgLy8gRHJhdyB0aGUgc2hh
ZG93IGZvciB0aGUgaG9yaXpvbnRhbCBvdmVyaGFuZy4KLSAgICBpZiAoaGFzSG9yaXpvbnRhbE92
ZXJoYW5nKSB7Ci0gICAgICAgIGludCB0b29sYmFyU2hhZG93SGVpZ2h0ID0ga1NoYWRvd1NpemU7
Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Ci0gICAgICAgIEludFJlY3Qgc2hh
ZG93UmVjdCA9IGhvcml6b250YWxPdmVyaGFuZ1JlY3Q7Ci0gICAgICAgIHNoYWRvd1JlY3Quc2V0
SGVpZ2h0KGtTaGFkb3dTaXplKTsKLSAgICAgICAgaWYgKHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8
IDApIHsKLSAgICAgICAgICAgIGlmICh1c2VBZGRpdGl2ZVNoYWRvd3MpIHsKLSAgICAgICAgICAg
ICAgICB0b29sYmFyU2hhZG93SGVpZ2h0ID0gc3RkOjptaW4oaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dC5oZWlnaHQoKSwga1NoYWRvd1NpemUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChob3Jpem9u
dGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpIDwgMiAqIGtTaGFkb3dTaXplICsga1Rvb2xiYXJTaGFk
b3dPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAvLyBTcGxpdCB0aGUgb3ZlcmhhbmcgYXJlYSBi
ZXR3ZWVuIHRoZSB3ZWIgY29udGVudCBzaGFkb3cgYW5kIHRvb2xiYXIgc2hhZG93IGlmIGl0J3Mg
dG9vIHNtYWxsLgotICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0KChob3Jpem9u
dGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpICsgMSkgLyAyKTsKLSAgICAgICAgICAgICAgICB0b29s
YmFyU2hhZG93SGVpZ2h0ID0gaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5oZWlnaHQoKSAtIHNoYWRv
d1JlY3QuaGVpZ2h0KCkgLSBrVG9vbGJhclNoYWRvd09mZnNldDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WShob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lm1heFkoKSAt
IHNoYWRvd1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6
Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpLCBGbG9hdFBvaW50KDAsIHNo
YWRvd1JlY3QubWF4WSgpIC0ga1NoYWRvd1NpemUpKTsKLSAgICAgICAgICAgIHNoYWRvd0Nvcm5l
ck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QubWF4WSgpKTsKLSAgICAgICAgICAgIHNoYWRvd0Nvcm5l
ck9mZnNldC5zZXRZKC1rU2hhZG93U2l6ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lnko
KSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKLSAgICAgICAgICAgIHNoYWRv
d0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QueSgpKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaGFzVmVydGljYWxPdmVyaGFuZykgewotICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0
aChzaGFkb3dSZWN0LndpZHRoKCkgLSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKLSAg
ICAgICAgICAgIGlmIChzY3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKLSAgICAgICAgICAgICAg
ICBzaGFkb3dSZWN0LnNldFgoc2hhZG93UmVjdC54KCkgKyB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53
aWR0aCgpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dS
ZWN0LngoKSk7Ci0gICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNldFgoLWtTaGFk
b3dTaXplKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2hhZG93Q29y
bmVyT3JpZ2luLnNldFgoc2hhZG93UmVjdC5tYXhYKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBp
KyspCi0gICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0u
c3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxH
cmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlv
bihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKLQotICAgICAgICAvLyBEcmF3IGEgZHJvcC1zaGFk
b3cgZnJvbSB0aGUgdG9vbGJhci4KLSAgICAgICAgaWYgKHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8
IDApIHsKLSAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WShrVG9vbGJhclNoYWRvd09mZnNldCk7
Ci0gICAgICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodCh0b29sYmFyU2hhZG93SGVpZ2h0KTsK
LSAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNo
YWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSArIGtTaGFkb3dTaXpl
KSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9y
czsgaSsrKQotICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0Nv
bG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNvbG9yKTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBEcmF3IHRoZSBzaGFkb3cgZm9yIHRoZSB2ZXJ0aWNhbCBvdmVyaGFuZy4K
LSAgICBpZiAoaGFzVmVydGljYWxPdmVyaGFuZykgewotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+
IGdyYWRpZW50OwotICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSB2ZXJ0aWNhbE92ZXJoYW5n
UmVjdDsKLSAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0aChrU2hhZG93U2l6ZSk7Ci0gICAgICAg
IGlmIChzY3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKLSAgICAgICAgICAgIHNoYWRvd1JlY3Qu
c2V0WCh2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5tYXhYKCkgLSBzaGFkb3dSZWN0LndpZHRoKCkpOwot
ICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoc2hhZG93
UmVjdC5tYXhYKCksIDApLCBGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQ
b2ludChzaGFkb3dSZWN0LngoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC5tYXhYKCksIDAp
KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRv
d0NvbG9yczsgaSsrKQotICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93
Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOwotICAgICAgICBjb250ZXh0
LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChp
bnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7Ci0KLSAgICAgICAgLy8gRHJhdyBh
IGRyb3Atc2hhZG93IGZyb20gdGhlIHRvb2xiYXIuCi0gICAgICAgIHNoYWRvd1JlY3QgPSB2ZXJ0
aWNhbE92ZXJoYW5nUmVjdDsKLSAgICAgICAgc2hhZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93
T2Zmc2V0KTsKLSAgICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOwotICAg
ICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0
LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKLSAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3Jz
W2ldLmNvbG9yKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsK
LSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5
UmVjdCkpOwotICAgIH0KLQotICAgIC8vIElmIGJvdGggcmVjdGFuZ2xlcyBwcmVzZW50LCBkcmF3
IGEgcmFkaWFsIGdyYWRpZW50IGZvciB0aGUgY29ybmVyLgotICAgIGlmIChoYXNIb3Jpem9udGFs
T3ZlcmhhbmcgJiYgaGFzVmVydGljYWxPdmVyaGFuZykgewotICAgICAgICBSZWZQdHI8R3JhZGll
bnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShzaGFkb3dDb3JuZXJPcmlnaW4sIDAsIHNo
YWRvd0Nvcm5lck9yaWdpbiwga1NoYWRvd1NpemUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQotICAgICAgICAgICAgZ3JhZGllbnQtPmFk
ZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3Ip
OwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOwotICAgICAgICBj
b250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3Qoc2hhZG93Q29ybmVyT3JpZ2luLngoKSArIHNoYWRv
d0Nvcm5lck9mZnNldC54KCksIHNoYWRvd0Nvcm5lck9yaWdpbi55KCkgKyBzaGFkb3dDb3JuZXJP
ZmZzZXQueSgpLCBrU2hhZG93U2l6ZSwga1NoYWRvd1NpemUpKTsKLSAgICB9Ci19Ci0KLQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggM2IwMzM3ZWM2MWMz
Y2YyNjc0NzdkYzg5YWIxM2Y2ZDIxZDEyNWI1MC4uN2NiNTViY2U0MGE4NTU3M2MxZThjZWI1ZmRl
Zjg3MDY4NDkwNmRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0xNzE0LDcgKzE3MTQsOSBAQCBMYXlvdXRQb2ludCBSZW5kZXJMYXllcjo6bWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QKIExheW91dFBvaW50IFJlbmRlckxheWVyOjptYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBtX3Njcm9sbFNpemUgbWF5IG5v
dCBiZSB1cC10by1kYXRlIGlmIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5IGlzIHRydWUuCi0gICAg
cmV0dXJuIG1fc2Nyb2xsT3JpZ2luICsgbV9zY3JvbGxTaXplIC0gdmlzaWJsZUNvbnRlbnRSZWN0
KHRydWUpLnNpemUoKTsKKyAgICBMYXlvdXRQb2ludCBtYXhPZmZzZXQgPSAgbV9zY3JvbGxPcmln
aW4gKyBtX3Njcm9sbFNpemUgLSB2aXNpYmxlQ29udGVudFJlY3QodHJ1ZSkuc2l6ZSgpOworICAg
IG1heE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgcmV0dXJuIG1heE9mZnNldDsK
IH0KIAogTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5j
bHVkZVNjcm9sbGJhcnMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE5MTE5
OTI1MWRhOGNhZmZiOGI5MWY3NGZhNjM0YTQ0ODc0NGMzNTAuLmVkZWNjYTI0ZGI4MTczYjExMWU1
NGI4YzMzN2E1MGVmYmU1MjI2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDktMjIgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRPdmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMg
Q2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OmVuYWJsZVNjcm9sbE92ZXJoYW5nKToK
KyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3VwcG9ydDo6ZW5hYmxlU2Nyb2xsT3ZlcmhhbmcpOgorCiAyMDExLTA5LTIxICBBYXJv
biBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBvbGQgYW5kIGJ1
c3RlZCBjb250ZXh0IG5vdGlmaWNhdGlvbiBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaAppbmRleCBjYzQ3NDI4YzcxMDNk
NzJlNzBmM2NhN2Y4NTQ1NDA2NjE5YjdmZGEwLi5kMDFkZTNiOWFmMzE2MmE4ZTFkNjBhMzQ0NGQ4
MjE4ZDcyZTIyMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJUaGVtZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKQEAgLTEzOSw2ICsxMzksOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7CiAgICAgfTsKIAorICAgIC8v
IEluZGljYXRlcyB3aGV0aGVyIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBzY3JvbGwgb3Zlcmhhbmcu
CisgICAgdmlydHVhbCBib29sIGVuYWJsZVNjcm9sbE92ZXJoYW5nKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBG
b3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMKICAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0
aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgogICAgIC8vIHRo
ZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggNTQ4
NzI4NTUwYWJmYjQ4MDZlOWRlYjJlMTc5N2ViOTViNjJmNDYwZC4uMjRhYjEwNWY0NDhhMTAyM2E2
YjdiZjNiYzU1NzY0ZDIzMmU3ZGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC05MTcsNiArOTE3LDExIEBAIHN0YXRpYyB2b2lkIEdl
dFdlYlRoZW1lRXh0cmFQYXJhbXMoUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFydCwgUGxh
dGZvcm1TdXBwCiAgICAgfQogfQogCitib29sIFBsYXRmb3JtU3VwcG9ydDo6ZW5hYmxlU2Nyb2xs
T3ZlcmhhbmcoKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+dGhlbWVF
bmdpbmUoKS0+ZW5hYmxlU2Nyb2xsT3ZlcmhhbmcoKTsKK30KKwogSW50U2l6ZSBQbGF0Zm9ybVN1
cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoVGhlbWVQYXJ0IHBhcnQpCiB7CiAgICAgIHJldHVybiB3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJUaGVtZVBh
cnQocGFydCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108385</attachid>
            <date>2011-09-22 12:45:09 -0700</date>
            <delta_ts>2011-09-22 14:03:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68648-20110922154507.patch</filename>
            <type>text/plain</type>
            <size>21491</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzI1M2MzODYwYWM2MGIw
MzY4NmMyNDg4ODk4NDI5YWNiNDgzOTJkLi5jZDJkZWRiM2VlZDNmNWEwM2M0MWY3ZmY2OTQ4ODI2
MGVjN2U0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDktMjIgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRP
dmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGFzIHRoZXJlJ3Mgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgKHlldCkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06OlNjcm9sbGJhclRoZW1lQ2hyb21pdW0p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6flNjcm9sbGJhclRo
ZW1lQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKToKKwogMjAxMS0wOS0yMSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QncyBjb250ZXh0IHNob3VsZCBub3QgYmUgZGVzdHJveWVk
IGR1cmluZyBhdGV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggZTMyMTdiYjIwMDM4Y2FiMTNiZDY0YWQzMzU0MGVlZjc3
MTU2Yjg4Ni4uZjUwOGYwYzY3Yzg3OWUyM2QyOWEwNTQyMDRkOTU4MmViOGVmMTIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgK
QEAgLTM5Niw2ICszOTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJh
bXMgcHJvZ3Jlc3NCYXI7CiAgICAgfTsKIAorICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBw
bGF0Zm9ybSBzdXBwb3J0cyBzY3JvbGwgb3ZlcmhhbmcuCisgICAgc3RhdGljIGJvb2wgZW5hYmxl
U2Nyb2xsT3ZlcmhhbmcoKTsKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVt
ZSBwYXJ0LiBGb3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMKICAgICAvLyBsaWtlIHZlcnRpY2FsIHNj
cm9sbGJhciB0aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgog
ICAgIC8vIHRoZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVp
Z2h0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCAyNGIzZTE4ZWY0NWJjNTcyNTM3ZGUyMmFk
OWUxMjUwMTcyODA2ZjM5Li4xOGNlNjNhYTIxZDc3YmY4NWI5ZmI5MjNlNGFkYWFlZmI0NWUyOGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIK
ICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCkBAIC0zOSw2ICs0MSwxNDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpTY3JvbGxiYXJU
aGVtZUNocm9taXVtKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAg
ICAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjplbmFibGVTY3JvbGxPdmVyaGFuZygpKSB7CisgICAg
ICAgICAgICAvLyBMb2FkIHRoZSBsaW5lbiBwYXR0ZXJuIGltYWdlIHVzZWQgZm9yIG92ZXJoYW5n
IGRyYXdpbmcuCisgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IHBhdHRlcm5JbWFnZSA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgib3ZlcmhhbmdQYXR0ZXJuIik7CisgICAgICAgICAgICBt
X292ZXJoYW5nUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShwYXR0ZXJuSW1hZ2UsIHRydWUsIHRy
dWUpOworICAgICAgICB9CisgICAgfQorfQorCitTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp+U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50
UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3sK
KyAgICAvLyBEb2VzIHRoaXMgcGxhdGZvcm0gc3VwcG9ydCBvdmVyaGFuZz8KKyAgICBpZiAoIVBs
YXRmb3JtU3VwcG9ydDo6ZW5hYmxlU2Nyb2xsT3ZlcmhhbmcoKSkgeworICAgICAgICBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKHZpZXcsIGNvbnRleHQsIGhvcml6
b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFRoZSBleHRlbnQgb2YgZWFjaCBzaGFkb3cgaW4g
cGl4ZWxzLgorICAgIGNvbnN0IGludCBrU2hhZG93U2l6ZSA9IDQ7CisgICAgLy8gT2Zmc2V0IG9m
IG5lZ2F0aXZlIG9uZSBwaXhlbCB0byBtYWtlIHRoZSBncmFkaWVudCBibGVuZCB3aXRoIHRoZSB0
b29sYmFyJ3MgYm90dG9tIGJvcmRlci4KKyAgICBjb25zdCBpbnQga1Rvb2xiYXJTaGFkb3dPZmZz
ZXQgPSAtMTsKKyAgICBjb25zdCBzdHJ1Y3QgeworICAgICAgICBmbG9hdCBzdG9wOworICAgICAg
ICBDb2xvciBjb2xvcjsKKyAgICB9IGtTaGFkb3dDb2xvcnNbXSA9IHsKKyAgICAgICAgeyAwLjAw
MCwgQ29sb3IoMCwgMCwgMCwgMjU1KSB9LAorICAgICAgICB7IDAuMTI1LCBDb2xvcigwLCAwLCAw
LCA1NykgfSwKKyAgICAgICAgeyAwLjM3NSwgQ29sb3IoMCwgMCwgMCwgNDEpIH0sCisgICAgICAg
IHsgMC42MjUsIENvbG9yKDAsIDAsIDAsIDE4KSB9LAorICAgICAgICB7IDAuODc1LCBDb2xvcigw
LCAwLCAwLCA2KSB9LAorICAgICAgICB7IDEuMDAwLCBDb2xvcigwLCAwLCAwLCAwKSB9CisgICAg
fTsKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVtU2hhZG93Q29sb3JzID0gc2l6ZW9mKGtTaGFkb3dD
b2xvcnMpIC8gc2l6ZW9mKGtTaGFkb3dDb2xvcnNbMF0pOworCisgICAgY29uc3QgYm9vbCBoYXNI
b3Jpem9udGFsT3ZlcmhhbmcgPSAhaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCk7Cisg
ICAgY29uc3QgYm9vbCBoYXNWZXJ0aWNhbE92ZXJoYW5nID0gIXZlcnRpY2FsT3ZlcmhhbmdSZWN0
LmlzRW1wdHkoKTsKKyAgICAvLyBQcmVmZXIgbm9uLWFkZGl0aXZlIHNoYWRvd3MsIGJ1dCBkZWdy
YWRlIHRvIGFkZGl0aXZlIHNoYWRvd3MgaWYgdGhlcmUgaXMgdmVydGljYWwgb3ZlcmhhbmcuCisg
ICAgY29uc3QgYm9vbCB1c2VBZGRpdGl2ZVNoYWRvd3MgPSBoYXNWZXJ0aWNhbE92ZXJoYW5nOwor
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKwor
ICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKG1fb3ZlcmhhbmdQYXR0ZXJuKTsKKyAgICBpZiAo
aGFzSG9yaXpvbnRhbE92ZXJoYW5nKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisgICAgaWYgKGhhc1Zl
cnRpY2FsT3ZlcmhhbmcpCisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2
ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICBJbnRTaXplIHNjcm9sbE9m
ZnNldCA9IHZpZXctPnNjcm9sbE9mZnNldCgpOworICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVy
T3JpZ2luOworICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVyT2Zmc2V0OworCisgICAgLy8gRHJh
dyB0aGUgc2hhZG93IGZvciB0aGUgaG9yaXpvbnRhbCBvdmVyaGFuZy4KKyAgICBpZiAoaGFzSG9y
aXpvbnRhbE92ZXJoYW5nKSB7CisgICAgICAgIGludCB0b29sYmFyU2hhZG93SGVpZ2h0ID0ga1No
YWRvd1NpemU7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgIElu
dFJlY3Qgc2hhZG93UmVjdCA9IGhvcml6b250YWxPdmVyaGFuZ1JlY3Q7CisgICAgICAgIHNoYWRv
d1JlY3Quc2V0SGVpZ2h0KGtTaGFkb3dTaXplKTsKKyAgICAgICAgaWYgKHNjcm9sbE9mZnNldC5o
ZWlnaHQoKSA8IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VBZGRpdGl2ZVNoYWRvd3MpIHsKKyAg
ICAgICAgICAgICAgICB0b29sYmFyU2hhZG93SGVpZ2h0ID0gc3RkOjptaW4oaG9yaXpvbnRhbE92
ZXJoYW5nUmVjdC5oZWlnaHQoKSwga1NoYWRvd1NpemUpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpIDwgMiAqIGtTaGFkb3dTaXplICsga1Rv
b2xiYXJTaGFkb3dPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAvLyBTcGxpdCB0aGUgb3Zlcmhh
bmcgYXJlYSBiZXR3ZWVuIHRoZSB3ZWIgY29udGVudCBzaGFkb3cgYW5kIHRvb2xiYXIgc2hhZG93
IGlmIGl0J3MgdG9vIHNtYWxsLgorICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0
KChob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpICsgMSkgLyAyKTsKKyAgICAgICAgICAg
ICAgICB0b29sYmFyU2hhZG93SGVpZ2h0ID0gaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5oZWlnaHQo
KSAtIHNoYWRvd1JlY3QuaGVpZ2h0KCkgLSBrVG9vbGJhclNoYWRvd09mZnNldDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WShob3Jpem9udGFsT3ZlcmhhbmdSZWN0
Lm1heFkoKSAtIHNoYWRvd1JlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpLCBGbG9hdFBv
aW50KDAsIHNoYWRvd1JlY3QubWF4WSgpIC0ga1NoYWRvd1NpemUpKTsKKyAgICAgICAgICAgIHNo
YWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QubWF4WSgpKTsKKyAgICAgICAgICAgIHNo
YWRvd0Nvcm5lck9mZnNldC5zZXRZKC1rU2hhZG93U2l6ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFk
b3dSZWN0LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKKyAgICAgICAg
ICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QueSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaGFzVmVydGljYWxPdmVyaGFuZykgeworICAgICAgICAgICAgc2hhZG93UmVj
dC5zZXRXaWR0aChzaGFkb3dSZWN0LndpZHRoKCkgLSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0
aCgpKTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKKyAgICAg
ICAgICAgICAgICBzaGFkb3dSZWN0LnNldFgoc2hhZG93UmVjdC54KCkgKyB2ZXJ0aWNhbE92ZXJo
YW5nUmVjdC53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0
WChzaGFkb3dSZWN0LngoKSk7CisgICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNl
dFgoLWtTaGFkb3dTaXplKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNo
YWRvd0Nvcm5lck9yaWdpbi5zZXRYKHNoYWRvd1JlY3QubWF4WCgpKTsKKyAgICAgICAgfQorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQorICAg
ICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtT
aGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQo
Z3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93
UmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICAgICAgLy8gRHJhdyBhIGRyb3Atc2hhZG93IGZyb20g
dGhlIHRvb2xiYXIuCisgICAgICAgIGlmIChzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwKSB7Cisg
ICAgICAgICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJTaGFkb3dPZmZzZXQpOworICAgICAg
ICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQodG9vbGJhclNoYWRvd0hlaWdodCk7CisgICAgICAg
ICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0
LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkgKyBrU2hhZG93U2l6ZSkpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykK
KyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0u
c3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50
ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gRHJhdyB0aGUgc2hhZG93IGZvciB0aGUgdmVydGljYWwgb3ZlcmhhbmcuCisgICAgaWYg
KGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVu
dDsKKyAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gdmVydGljYWxPdmVyaGFuZ1JlY3Q7Cisg
ICAgICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoa1NoYWRvd1NpemUpOworICAgICAgICBpZiAoc2Ny
b2xsT2Zmc2V0LndpZHRoKCkgPCAwKSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFgodmVy
dGljYWxPdmVyaGFuZ1JlY3QubWF4WCgpIC0gc2hhZG93UmVjdC53aWR0aCgpKTsKKyAgICAgICAg
ICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHNoYWRvd1JlY3QubWF4
WCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0LngoKSwgMCkpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHNoYWRv
d1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCkpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCisgICAg
ICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1No
YWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChn
cmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dS
ZWN0LCBkaXJ0eVJlY3QpKTsKKworICAgICAgICAvLyBEcmF3IGEgZHJvcC1zaGFkb3cgZnJvbSB0
aGUgdG9vbGJhci4KKyAgICAgICAgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3ZlcmhhbmdSZWN0Owor
ICAgICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJTaGFkb3dPZmZzZXQpOworICAgICAgICBz
aGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7CisgICAgICAgIGdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgw
LCBzaGFkb3dSZWN0Lm1heFkoKSkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
a051bVNoYWRvd0NvbG9yczsgaSsrKQorICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3Rv
cChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7CisgICAgfQorCisg
ICAgLy8gSWYgYm90aCByZWN0YW5nbGVzIHByZXNlbnQsIGRyYXcgYSByYWRpYWwgZ3JhZGllbnQg
Zm9yIHRoZSBjb3JuZXIuCisgICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZyAmJiBoYXNWZXJ0
aWNhbE92ZXJoYW5nKSB7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKHNoYWRvd0Nvcm5lck9yaWdpbiwgMCwgc2hhZG93Q29ybmVyT3JpZ2luLCBr
U2hhZG93U2l6ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93
Q29sb3JzOyBpKyspCisgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dD
b2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZs
b2F0UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgpICsgc2hhZG93Q29ybmVyT2Zmc2V0LngoKSwg
c2hhZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRvd0Nvcm5lck9mZnNldC55KCksIGtTaGFkb3dT
aXplLCBrU2hhZG93U2l6ZSkpOworICAgIH0KK30KKwogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5oCmluZGV4IDExNzgxMjU2OWY2OWYyMDAzNzFiYWMwZjlkYTg3YTdjMzJk
ZTRmYTUuLjUwYjAyYTY3OGQ1YTQxZmJkZGU1NzQzMWRhZjJjMDhjZGMwZjU2OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtLmgKQEAgLTQwLDYgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAv
LyBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSBzY3JvbGxiYXIgY29kZSB3aGljaCBpcyBzaGFyZWQg
YmV0d2VlbiBDaHJvbWl1bQogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4LgogICAgIGNsYXNzIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW0gOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSgpOworICAgICAgICB2
aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKQEAgLTUyLDYg
KzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
aWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwog
CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopID0gMDsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxQYXR0ZXJuPiBtX292ZXJoYW5nUGF0dGVybjsK
ICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgK
aW5kZXggY2M5YTMwOGVlMjMwMDI1ZTU1NDlkZjgyMDMxMzNiN2UzYWVlMmIwYi4uZWQ4NGYzMmYz
N2JlMGIzNjM4YTM1MDQ0MzkxNWQ2MGI0ZGI2M2EwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aApAQCAtNjIsOCArNjIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiwgV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKICAgICBXS1Njcm9s
bGJhclBhaW50ZXJSZWYgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwpAQCAt
ODIsOSArODAsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVu
VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBj
b25zdCBWZWN0b3I8SW50UmVjdD4mKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8UGF0dGVybj4g
bV9vdmVyaGFuZ1BhdHRlcm47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRl
eCA0NzIzNDNkNDAxZTExNDg0MzJiZDI2ZWI2ZmQ4ZTk0MTg3YjBlMDBjLi5jMmRkMGQzMzE4ZmIx
NTY3NTUzYTI2MGQ3NGJlYTc2YjZkYjMyZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0K
QEAgLTE5NCwxMCArMTk0LDYgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYygpCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0
aWFsaXplZCA9IHRydWU7CiAKLSAgICAgICAgLy8gTG9hZCB0aGUgbGluZW4gcGF0dGVybiBpbWFn
ZSB1c2VkIGZvciBvdmVyaGFuZyBkcmF3aW5nLgotICAgICAgICBSZWZQdHI8SW1hZ2U+IHBhdHRl
cm5JbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgib3ZlcmhhbmdQYXR0ZXJuIik7
Ci0gICAgICAgIG1fb3ZlcmhhbmdQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRlcm5JbWFn
ZSwgdHJ1ZSwgdHJ1ZSk7Ci0KICAgICAgICAgW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIgcmVnaXN0
ZXJBc09ic2VydmVyXTsKICAgICAgICAgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgfQpAQCAt
Njc2LDEyNyArNjcyLDQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdp
dmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2MKICAgICB9CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqIHZpZXcsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpv
bnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICAvLyBUaGUgZXh0ZW50IG9mIGVhY2ggc2hh
ZG93IGluIHBpeGVscy4KLSAgICBjb25zdCBpbnQga1NoYWRvd1NpemUgPSA0OwotICAgIC8vIE9m
ZnNldCBvZiBuZWdhdGl2ZSBvbmUgcGl4ZWwgdG8gbWFrZSB0aGUgZ3JhZGllbnQgYmxlbmQgd2l0
aCB0aGUgdG9vbGJhcidzIGJvdHRvbSBib3JkZXIuCi0gICAgY29uc3QgaW50IGtUb29sYmFyU2hh
ZG93T2Zmc2V0ID0gLTE7Ci0gICAgY29uc3Qgc3RydWN0IHsKLSAgICAgICAgZmxvYXQgc3RvcDsK
LSAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgfSBrU2hhZG93Q29sb3JzW10gPSB7Ci0gICAgICAg
IHsgMC4wMDAsIENvbG9yKDAsIDAsIDAsIDI1NSkgfSwKLSAgICAgICAgeyAwLjEyNSwgQ29sb3Io
MCwgMCwgMCwgNTcpIH0sCi0gICAgICAgIHsgMC4zNzUsIENvbG9yKDAsIDAsIDAsIDQxKSB9LAot
ICAgICAgICB7IDAuNjI1LCBDb2xvcigwLCAwLCAwLCAxOCkgfSwKLSAgICAgICAgeyAwLjg3NSwg
Q29sb3IoMCwgMCwgMCwgNikgfSwKLSAgICAgICAgeyAxLjAwMCwgQ29sb3IoMCwgMCwgMCwgMCkg
fQotICAgIH07Ci0gICAgY29uc3QgdW5zaWduZWQga051bVNoYWRvd0NvbG9ycyA9IHNpemVvZihr
U2hhZG93Q29sb3JzKS9zaXplb2Yoa1NoYWRvd0NvbG9yc1swXSk7Ci0KLSAgICBjb25zdCBib29s
IGhhc0hvcml6b250YWxPdmVyaGFuZyA9ICFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHko
KTsKLSAgICBjb25zdCBib29sIGhhc1ZlcnRpY2FsT3ZlcmhhbmcgPSAhdmVydGljYWxPdmVyaGFu
Z1JlY3QuaXNFbXB0eSgpOwotICAgIC8vIFByZWZlciBub24tYWRkaXRpdmUgc2hhZG93cywgYnV0
IGRlZ3JhZGUgdG8gYWRkaXRpdmUgc2hhZG93cyBpZiB0aGVyZSBpcyB2ZXJ0aWNhbCBvdmVyaGFu
Zy4KLSAgICBjb25zdCBib29sIHVzZUFkZGl0aXZlU2hhZG93cyA9IGhhc1ZlcnRpY2FsT3Zlcmhh
bmc7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQp
OwotCi0gICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4obV9vdmVyaGFuZ1BhdHRlcm4pOwotICAg
IGlmIChoYXNIb3Jpem9udGFsT3ZlcmhhbmcpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKLSAgICBpZiAo
aGFzVmVydGljYWxPdmVyaGFuZykKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0
aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKLQotICAgIEludFNpemUgc2Ny
b2xsT2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7Ci0gICAgRmxvYXRQb2ludCBzaGFkb3dD
b3JuZXJPcmlnaW47Ci0gICAgRmxvYXRQb2ludCBzaGFkb3dDb3JuZXJPZmZzZXQ7Ci0KLSAgICAv
LyBEcmF3IHRoZSBzaGFkb3cgZm9yIHRoZSBob3Jpem9udGFsIG92ZXJoYW5nLgotICAgIGlmICho
YXNIb3Jpem9udGFsT3ZlcmhhbmcpIHsKLSAgICAgICAgaW50IHRvb2xiYXJTaGFkb3dIZWlnaHQg
PSBrU2hhZG93U2l6ZTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAgICAg
ICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKLSAgICAgICAg
c2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOwotICAgICAgICBpZiAoc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpIDwgMCkgewotICAgICAgICAgICAgaWYgKHVzZUFkZGl0aXZlU2hhZG93cykg
ewotICAgICAgICAgICAgICAgIHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBzdGQ6Om1pbihob3Jpem9u
dGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpLCBrU2hhZG93U2l6ZSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCkgPCAyICoga1NoYWRvd1NpemUg
KyBrVG9vbGJhclNoYWRvd09mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBv
dmVyaGFuZyBhcmVhIGJldHdlZW4gdGhlIHdlYiBjb250ZW50IHNoYWRvdyBhbmQgdG9vbGJhciBz
aGFkb3cgaWYgaXQncyB0b28gc21hbGwuCi0gICAgICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRI
ZWlnaHQoKGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCkgKyAxKSAvIDIpOwotICAgICAg
ICAgICAgICAgIHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmhl
aWdodCgpIC0gc2hhZG93UmVjdC5oZWlnaHQoKSAtIGtUb29sYmFyU2hhZG93T2Zmc2V0OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRZKGhvcml6b250YWxPdmVyaGFu
Z1JlY3QubWF4WSgpIC0gc2hhZG93UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSksIEZs
b2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkgLSBrU2hhZG93U2l6ZSkpOwotICAgICAgICAg
ICAgc2hhZG93Q29ybmVyT3JpZ2luLnNldFkoc2hhZG93UmVjdC5tYXhZKCkpOwotICAgICAgICAg
ICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNldFkoLWtTaGFkb3dTaXplKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAs
IHNoYWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSkpOwotICAg
ICAgICAgICAgc2hhZG93Q29ybmVyT3JpZ2luLnNldFkoc2hhZG93UmVjdC55KCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAgICAgICBzaGFk
b3dSZWN0LnNldFdpZHRoKHNoYWRvd1JlY3Qud2lkdGgoKSAtIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LndpZHRoKCkpOwotICAgICAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgewot
ICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WChzaGFkb3dSZWN0LngoKSArIHZlcnRpY2Fs
T3ZlcmhhbmdSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdp
bi5zZXRYKHNoYWRvd1JlY3QueCgpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZz
ZXQuc2V0WCgta1NoYWRvd1NpemUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0Lm1heFgoKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1T
aGFkb3dDb2xvcnM7IGkrKykKLSAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoa1No
YWRvd0NvbG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNvbG9yKTsKLSAgICAgICAgY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJl
Y3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOwotCi0gICAgICAgIC8vIERy
YXcgYSBkcm9wLXNoYWRvdyBmcm9tIHRoZSB0b29sYmFyLgotICAgICAgICBpZiAoc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpIDwgMCkgewotICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRZKGtUb29sYmFy
U2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0KHRvb2xiYXJT
aGFkb3dIZWlnaHQpOwotICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZs
b2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgp
ICsga1NoYWRvd1NpemUpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBr
TnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9y
U3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOwotICAg
ICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERyYXcgdGhlIHNoYWRvdyBmb3IgdGhlIHZlcnRp
Y2FsIG92ZXJoYW5nLgotICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAgIFJl
ZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Ci0gICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwotICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKGtTaGFkb3dT
aXplKTsKLSAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgewotICAgICAgICAg
ICAgc2hhZG93UmVjdC5zZXRYKHZlcnRpY2FsT3ZlcmhhbmdSZWN0Lm1heFgoKSAtIHNoYWRvd1Jl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxv
YXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC54KCks
IDApKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dS
ZWN0Lm1heFgoKSwgMCkpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7Ci0g
ICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKLQotICAg
ICAgICAvLyBEcmF3IGEgZHJvcC1zaGFkb3cgZnJvbSB0aGUgdG9vbGJhci4KLSAgICAgICAgc2hh
ZG93UmVjdCA9IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OwotICAgICAgICBzaGFkb3dSZWN0LnNldFko
a1Rvb2xiYXJTaGFkb3dPZmZzZXQpOwotICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hh
ZG93U2l6ZSk7Ci0gICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50
KDAsIHNoYWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSkpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQot
ICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3As
IGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoZ3JhZGllbnQpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hh
ZG93UmVjdCwgZGlydHlSZWN0KSk7Ci0gICAgfQotCi0gICAgLy8gSWYgYm90aCByZWN0YW5nbGVz
IHByZXNlbnQsIGRyYXcgYSByYWRpYWwgZ3JhZGllbnQgZm9yIHRoZSBjb3JuZXIuCi0gICAgaWYg
KGhhc0hvcml6b250YWxPdmVyaGFuZyAmJiBoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAg
IFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKHNoYWRvd0Nvcm5l
ck9yaWdpbiwgMCwgc2hhZG93Q29ybmVyT3JpZ2luLCBrU2hhZG93U2l6ZSk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAg
ICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0Nv
bG9yc1tpXS5jb2xvcik7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVu
dCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChzaGFkb3dDb3JuZXJPcmln
aW4ueCgpICsgc2hhZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hhZG93Q29ybmVyT3JpZ2luLnkoKSAr
IHNoYWRvd0Nvcm5lck9mZnNldC55KCksIGtTaGFkb3dTaXplLCBrU2hhZG93U2l6ZSkpOwotICAg
IH0KLX0KLQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE5MTE5OTI1MWRhOGNh
ZmZiOGI5MWY3NGZhNjM0YTQ0ODc0NGMzNTAuLmVkZWNjYTI0ZGI4MTczYjExMWU1NGI4YzMzN2E1
MGVmYmU1MjI2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDktMjIgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmVmYWN0b3IgcGFpbnRPdmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0g
cGxhdGZvcm1zIHRvIHJldXNlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OmVuYWJsZVNjcm9sbE92ZXJoYW5nKToKKyAgICAgICAg
KiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Vw
cG9ydDo6ZW5hYmxlU2Nyb2xsT3ZlcmhhbmcpOgorCiAyMDExLTA5LTIxICBBYXJvbiBCb29kbWFu
ICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBvbGQgYW5kIGJ1c3RlZCBjb250
ZXh0IG5vdGlmaWNhdGlvbiBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaAppbmRleCBjYzQ3NDI4YzcxMDNkNzJlNzBmM2Nh
N2Y4NTQ1NDA2NjE5YjdmZGEwLi5kMDFkZTNiOWFmMzE2MmE4ZTFkNjBhMzQ0NGQ4MjE4ZDcyZTIy
MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJU
aGVtZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YlRoZW1lRW5naW5lLmgKQEAgLTEzOSw2ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgICAgIFByb2dy
ZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7CiAgICAgfTsKIAorICAgIC8vIEluZGljYXRl
cyB3aGV0aGVyIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBzY3JvbGwgb3ZlcmhhbmcuCisgICAgdmly
dHVhbCBib29sIGVuYWJsZVNjcm9sbE92ZXJoYW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFyaWFi
bGUgc2l6ZWQgaXRlbXMKICAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMsIHRo
ZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgogICAgIC8vIHRoZSB0cmFjayB3
aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggNTQ4NzI4NTUwYWJm
YjQ4MDZlOWRlYjJlMTc5N2ViOTViNjJmNDYwZC4uMjRhYjEwNWY0NDhhMTAyM2E2YjdiZjNiYzU1
NzY0ZDIzMmU3ZGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwCkBAIC05MTcsNiArOTE3LDExIEBAIHN0YXRpYyB2b2lkIEdldFdlYlRoZW1l
RXh0cmFQYXJhbXMoUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFydCwgUGxhdGZvcm1TdXBw
CiAgICAgfQogfQogCitib29sIFBsYXRmb3JtU3VwcG9ydDo6ZW5hYmxlU2Nyb2xsT3Zlcmhhbmco
KQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+dGhlbWVFbmdpbmUoKS0+
ZW5hYmxlU2Nyb2xsT3ZlcmhhbmcoKTsKK30KKwogSW50U2l6ZSBQbGF0Zm9ybVN1cHBvcnQ6Omdl
dFRoZW1lUGFydFNpemUoVGhlbWVQYXJ0IHBhcnQpCiB7CiAgICAgIHJldHVybiB3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJUaGVtZVBhcnQocGFydCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108398</attachid>
            <date>2011-09-22 14:04:05 -0700</date>
            <delta_ts>2011-09-22 15:18:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68648-20110922170403.patch</filename>
            <type>text/plain</type>
            <size>19529</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzI1M2MzODYwYWM2MGIw
MzY4NmMyNDg4ODk4NDI5YWNiNDgzOTJkLi42MmJkMjdiZjZiOWUxYjQyMmU0OGIwYWJiYmRjNWIy
OGEyZDhlNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjIgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRP
dmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp+U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMpOgorCiAyMDExLTA5
LTIxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCdzIGNvbnRleHQgc2hvdWxkIG5vdCBiZSBk
ZXN0cm95ZWQgZHVyaW5nIGF0ZXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCAyNGIzZTE4
ZWY0NWJjNTcyNTM3ZGUyMmFkOWUxMjUwMTcyODA2ZjM5Li5iM2M4ZjIzZDJiZWE0YWZiYmJjZjA0
NmVkMWZlMDhkMWQ0NTY4N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJT
Y3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmgiCkBAIC0zOSw2ICs0MCwxNDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
KCkKK3sKKyNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCisgICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgLy8gTG9hZCB0aGUgbGluZW4gcGF0dGVybiBpbWFnZSB1c2Vk
IGZvciBvdmVyaGFuZyBkcmF3aW5nLgorICAgICAgICBSZWZQdHI8SW1hZ2U+IHBhdHRlcm5JbWFn
ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgib3ZlcmhhbmdQYXR0ZXJuIik7CisgICAg
ICAgIG1fb3ZlcmhhbmdQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRlcm5JbWFnZSwgdHJ1
ZSwgdHJ1ZSk7CisgICAgfQorI2VuZGlmCit9CisKK1Njcm9sbGJhclRoZW1lQ2hyb21pdW06On5T
Y3JvbGxiYXJUaGVtZUNocm9taXVtKCkKK3sKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyogdmlldywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQor
eworICAgIC8vIERvZXMgdGhpcyBwbGF0Zm9ybSBzdXBwb3J0IG92ZXJoYW5nPworI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKKyAgICBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVy
aGFuZ0FyZWFzKHZpZXcsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2Fs
T3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOworI2Vsc2UKKyAgICAvLyBUaGUgZXh0ZW50IG9mIGVh
Y2ggc2hhZG93IGluIHBpeGVscy4KKyAgICBjb25zdCBpbnQga1NoYWRvd1NpemUgPSA0OworICAg
IC8vIE9mZnNldCBvZiBuZWdhdGl2ZSBvbmUgcGl4ZWwgdG8gbWFrZSB0aGUgZ3JhZGllbnQgYmxl
bmQgd2l0aCB0aGUgdG9vbGJhcidzIGJvdHRvbSBib3JkZXIuCisgICAgY29uc3QgaW50IGtUb29s
YmFyU2hhZG93T2Zmc2V0ID0gLTE7CisgICAgY29uc3Qgc3RydWN0IHsKKyAgICAgICAgZmxvYXQg
c3RvcDsKKyAgICAgICAgQ29sb3IgY29sb3I7CisgICAgfSBrU2hhZG93Q29sb3JzW10gPSB7Cisg
ICAgICAgIHsgMC4wMDAsIENvbG9yKDAsIDAsIDAsIDI1NSkgfSwKKyAgICAgICAgeyAwLjEyNSwg
Q29sb3IoMCwgMCwgMCwgNTcpIH0sCisgICAgICAgIHsgMC4zNzUsIENvbG9yKDAsIDAsIDAsIDQx
KSB9LAorICAgICAgICB7IDAuNjI1LCBDb2xvcigwLCAwLCAwLCAxOCkgfSwKKyAgICAgICAgeyAw
Ljg3NSwgQ29sb3IoMCwgMCwgMCwgNikgfSwKKyAgICAgICAgeyAxLjAwMCwgQ29sb3IoMCwgMCwg
MCwgMCkgfQorICAgIH07CisgICAgY29uc3QgdW5zaWduZWQga051bVNoYWRvd0NvbG9ycyA9IHNp
emVvZihrU2hhZG93Q29sb3JzKSAvIHNpemVvZihrU2hhZG93Q29sb3JzWzBdKTsKKworICAgIGNv
bnN0IGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJoYW5nID0gIWhvcml6b250YWxPdmVyaGFuZ1JlY3Qu
aXNFbXB0eSgpOworICAgIGNvbnN0IGJvb2wgaGFzVmVydGljYWxPdmVyaGFuZyA9ICF2ZXJ0aWNh
bE92ZXJoYW5nUmVjdC5pc0VtcHR5KCk7CisgICAgLy8gUHJlZmVyIG5vbi1hZGRpdGl2ZSBzaGFk
b3dzLCBidXQgZGVncmFkZSB0byBhZGRpdGl2ZSBzaGFkb3dzIGlmIHRoZXJlIGlzIHZlcnRpY2Fs
IG92ZXJoYW5nLgorICAgIGNvbnN0IGJvb2wgdXNlQWRkaXRpdmVTaGFkb3dzID0gaGFzVmVydGlj
YWxPdmVyaGFuZzsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
Y29udGV4dCk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihtX292ZXJoYW5nUGF0dGVy
bik7CisgICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZykKKyAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOwor
ICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChp
bnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworCisgICAgSW50
U2l6ZSBzY3JvbGxPZmZzZXQgPSB2aWV3LT5zY3JvbGxPZmZzZXQoKTsKKyAgICBGbG9hdFBvaW50
IHNoYWRvd0Nvcm5lck9yaWdpbjsKKyAgICBGbG9hdFBvaW50IHNoYWRvd0Nvcm5lck9mZnNldDsK
KworICAgIC8vIERyYXcgdGhlIHNoYWRvdyBmb3IgdGhlIGhvcml6b250YWwgb3ZlcmhhbmcuCisg
ICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZykgeworICAgICAgICBpbnQgdG9vbGJhclNoYWRv
d0hlaWdodCA9IGtTaGFkb3dTaXplOworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50
OworICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0Owor
ICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7CisgICAgICAgIGlmIChz
Y3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwKSB7CisgICAgICAgICAgICBpZiAodXNlQWRkaXRpdmVT
aGFkb3dzKSB7CisgICAgICAgICAgICAgICAgdG9vbGJhclNoYWRvd0hlaWdodCA9IHN0ZDo6bWlu
KGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCksIGtTaGFkb3dTaXplKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5oZWlnaHQoKSA8IDIgKiBrU2hh
ZG93U2l6ZSArIGtUb29sYmFyU2hhZG93T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgLy8gU3Bs
aXQgdGhlIG92ZXJoYW5nIGFyZWEgYmV0d2VlbiB0aGUgd2ViIGNvbnRlbnQgc2hhZG93IGFuZCB0
b29sYmFyIHNoYWRvdyBpZiBpdCdzIHRvbyBzbWFsbC4KKyAgICAgICAgICAgICAgICBzaGFkb3dS
ZWN0LnNldEhlaWdodCgoaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5oZWlnaHQoKSArIDEpIC8gMik7
CisgICAgICAgICAgICAgICAgdG9vbGJhclNoYWRvd0hlaWdodCA9IGhvcml6b250YWxPdmVyaGFu
Z1JlY3QuaGVpZ2h0KCkgLSBzaGFkb3dSZWN0LmhlaWdodCgpIC0ga1Rvb2xiYXJTaGFkb3dPZmZz
ZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFkoaG9yaXpvbnRh
bE92ZXJoYW5nUmVjdC5tYXhZKCkgLSBzaGFkb3dSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAg
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QubWF4
WSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSAtIGtTaGFkb3dTaXplKSk7Cisg
ICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WShzaGFkb3dSZWN0Lm1heFkoKSk7Cisg
ICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZzZXQuc2V0WSgta1NoYWRvd1NpemUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0
UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QubWF4WSgp
KSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WShzaGFkb3dSZWN0LnkoKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgICAg
ICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoc2hhZG93UmVjdC53aWR0aCgpIC0gdmVydGljYWxPdmVy
aGFuZ1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkg
PCAwKSB7CisgICAgICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRYKHNoYWRvd1JlY3QueCgpICsg
dmVydGljYWxPdmVyaGFuZ1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgc2hhZG93Q29y
bmVyT3JpZ2luLnNldFgoc2hhZG93UmVjdC54KCkpOworICAgICAgICAgICAgICAgIHNoYWRvd0Nv
cm5lck9mZnNldC5zZXRYKC1rU2hhZG93U2l6ZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0Lm1heFgoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xv
cnM7IGkrKykKKyAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9y
c1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNvbG9yKTsKKyAgICAgICAgY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJz
ZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOworCisgICAgICAgIC8vIERyYXcgYSBkcm9w
LXNoYWRvdyBmcm9tIHRoZSB0b29sYmFyLgorICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpIDwgMCkgeworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zm
c2V0KTsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0KHRvb2xiYXJTaGFkb3dIZWln
aHQpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQo
MCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpICsga1NoYWRv
d1NpemUpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93
Q29sb3JzOyBpKyspCisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hh
ZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIERyYXcgdGhlIHNoYWRvdyBmb3IgdGhlIHZlcnRpY2FsIG92ZXJo
YW5nLgorICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7CisgICAgICAgIFJlZlB0cjxHcmFk
aWVudD4gZ3JhZGllbnQ7CisgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3Zl
cmhhbmdSZWN0OworICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKGtTaGFkb3dTaXplKTsKKyAg
ICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgeworICAgICAgICAgICAgc2hhZG93
UmVjdC5zZXRYKHZlcnRpY2FsT3ZlcmhhbmdSZWN0Lm1heFgoKSAtIHNoYWRvd1JlY3Qud2lkdGgo
KSk7CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChz
aGFkb3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC54KCksIDApKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxv
YXRQb2ludChzaGFkb3dSZWN0LngoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC5tYXhYKCks
IDApKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9y
czsgaSsrKQorICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3Jz
W2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRG
aWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICAgICAgLy8gRHJhdyBhIGRyb3At
c2hhZG93IGZyb20gdGhlIHRvb2xiYXIuCisgICAgICAgIHNoYWRvd1JlY3QgPSB2ZXJ0aWNhbE92
ZXJoYW5nUmVjdDsKKyAgICAgICAgc2hhZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zmc2V0
KTsKKyAgICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICBn
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSks
IEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAgICAgIGdyYWRpZW50
LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNv
bG9yKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAg
ICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkp
OworICAgIH0KKworICAgIC8vIElmIGJvdGggcmVjdGFuZ2xlcyBwcmVzZW50LCBkcmF3IGEgcmFk
aWFsIGdyYWRpZW50IGZvciB0aGUgY29ybmVyLgorICAgIGlmIChoYXNIb3Jpem9udGFsT3Zlcmhh
bmcgJiYgaGFzVmVydGljYWxPdmVyaGFuZykgeworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShzaGFkb3dDb3JuZXJPcmlnaW4sIDAsIHNoYWRvd0Nv
cm5lck9yaWdpbiwga1NoYWRvd1NpemUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwga051bVNoYWRvd0NvbG9yczsgaSsrKQorICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9y
U3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChGbG9hdFJlY3Qoc2hhZG93Q29ybmVyT3JpZ2luLngoKSArIHNoYWRvd0Nvcm5l
ck9mZnNldC54KCksIHNoYWRvd0Nvcm5lck9yaWdpbi55KCkgKyBzaGFkb3dDb3JuZXJPZmZzZXQu
eSgpLCBrU2hhZG93U2l6ZSwga1NoYWRvd1NpemUpKTsKKyAgICB9CisjZW5kaWYKK30KKwogYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
IHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0
aW1pemF0aW9uIHRvIHNlZSBpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCmluZGV4IDExNzgxMjU2OWY2OWYy
MDAzNzFiYWMwZjlkYTg3YTdjMzJkZTRmYTUuLjUwYjAyYTY3OGQ1YTQxZmJkZGU1NzQzMWRhZjJj
MDhjZGMwZjU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKQEAgLTQwLDYgKzQwLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSBzY3JvbGxiYXIg
Y29kZSB3aGljaCBpcyBzaGFyZWQgYmV0d2VlbiBDaHJvbWl1bQogICAgIC8vIFdpbmRvd3MgYW5k
IExpbnV4LgogICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gOiBwdWJsaWMgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bSgpOworICAgICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3Jv
bGxiYXIqKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXIqKTsKQEAgLTUyLDYgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXpl
KFNjcm9sbGJhciopID0gMDsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxQYXR0ZXJu
PiBtX292ZXJoYW5nUGF0dGVybjsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjLmgKaW5kZXggY2M5YTMwOGVlMjMwMDI1ZTU1NDlkZjgyMDMxMzNi
N2UzYWVlMmIwYi4uZWQ4NGYzMmYzN2JlMGIzNjM4YTM1MDQ0MzkxNWQ2MGI0ZGI2M2EwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtNjIsOCArNjIsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgV0tTY3JvbGxiYXJQYWlu
dGVyUmVmKTsKICAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXIqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xs
VmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFu
Z0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0
b25zKFNjcm9sbGJhciopOwpAQCAtODIsOSArODAsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
ciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mKTsKLQotcHJpdmF0ZToK
LSAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5tbQppbmRleCA0NzIzNDNkNDAxZTExNDg0MzJiZDI2ZWI2ZmQ4ZTk0MTg3
YjBlMDBjLi5jMmRkMGQzMzE4ZmIxNTY3NTUzYTI2MGQ3NGJlYTc2YjZkYjMyZTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTE5NCwxMCArMTk0LDYgQEAgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYzo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpCiAgICAgaWYgKCFpbml0aWFs
aXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAKLSAgICAgICAgLy8gTG9hZCB0
aGUgbGluZW4gcGF0dGVybiBpbWFnZSB1c2VkIGZvciBvdmVyaGFuZyBkcmF3aW5nLgotICAgICAg
ICBSZWZQdHI8SW1hZ2U+IHBhdHRlcm5JbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgib3ZlcmhhbmdQYXR0ZXJuIik7Ci0gICAgICAgIG1fb3ZlcmhhbmdQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKHBhdHRlcm5JbWFnZSwgdHJ1ZSwgdHJ1ZSk7Ci0KICAgICAgICAgW1Njcm9sbGJh
clByZWZzT2JzZXJ2ZXIgcmVnaXN0ZXJBc09ic2VydmVyXTsKICAgICAgICAgcHJlZmVyZW5jZXND
aGFuZ2VkKCk7CiAgICAgfQpAQCAtNjc2LDEyNyArNjcyLDQgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2MKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVy
dGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICAvLyBU
aGUgZXh0ZW50IG9mIGVhY2ggc2hhZG93IGluIHBpeGVscy4KLSAgICBjb25zdCBpbnQga1NoYWRv
d1NpemUgPSA0OwotICAgIC8vIE9mZnNldCBvZiBuZWdhdGl2ZSBvbmUgcGl4ZWwgdG8gbWFrZSB0
aGUgZ3JhZGllbnQgYmxlbmQgd2l0aCB0aGUgdG9vbGJhcidzIGJvdHRvbSBib3JkZXIuCi0gICAg
Y29uc3QgaW50IGtUb29sYmFyU2hhZG93T2Zmc2V0ID0gLTE7Ci0gICAgY29uc3Qgc3RydWN0IHsK
LSAgICAgICAgZmxvYXQgc3RvcDsKLSAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgfSBrU2hhZG93
Q29sb3JzW10gPSB7Ci0gICAgICAgIHsgMC4wMDAsIENvbG9yKDAsIDAsIDAsIDI1NSkgfSwKLSAg
ICAgICAgeyAwLjEyNSwgQ29sb3IoMCwgMCwgMCwgNTcpIH0sCi0gICAgICAgIHsgMC4zNzUsIENv
bG9yKDAsIDAsIDAsIDQxKSB9LAotICAgICAgICB7IDAuNjI1LCBDb2xvcigwLCAwLCAwLCAxOCkg
fSwKLSAgICAgICAgeyAwLjg3NSwgQ29sb3IoMCwgMCwgMCwgNikgfSwKLSAgICAgICAgeyAxLjAw
MCwgQ29sb3IoMCwgMCwgMCwgMCkgfQotICAgIH07Ci0gICAgY29uc3QgdW5zaWduZWQga051bVNo
YWRvd0NvbG9ycyA9IHNpemVvZihrU2hhZG93Q29sb3JzKS9zaXplb2Yoa1NoYWRvd0NvbG9yc1sw
XSk7Ci0KLSAgICBjb25zdCBib29sIGhhc0hvcml6b250YWxPdmVyaGFuZyA9ICFob3Jpem9udGFs
T3ZlcmhhbmdSZWN0LmlzRW1wdHkoKTsKLSAgICBjb25zdCBib29sIGhhc1ZlcnRpY2FsT3Zlcmhh
bmcgPSAhdmVydGljYWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpOwotICAgIC8vIFByZWZlciBub24t
YWRkaXRpdmUgc2hhZG93cywgYnV0IGRlZ3JhZGUgdG8gYWRkaXRpdmUgc2hhZG93cyBpZiB0aGVy
ZSBpcyB2ZXJ0aWNhbCBvdmVyaGFuZy4KLSAgICBjb25zdCBib29sIHVzZUFkZGl0aXZlU2hhZG93
cyA9IGhhc1ZlcnRpY2FsT3Zlcmhhbmc7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotCi0gICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4obV9v
dmVyaGFuZ1BhdHRlcm4pOwotICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcmhhbmcpCi0gICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBk
aXJ0eVJlY3QpKTsKLSAgICBpZiAoaGFzVmVydGljYWxPdmVyaGFuZykKLSAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3Qp
KTsKLQotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7Ci0g
ICAgRmxvYXRQb2ludCBzaGFkb3dDb3JuZXJPcmlnaW47Ci0gICAgRmxvYXRQb2ludCBzaGFkb3dD
b3JuZXJPZmZzZXQ7Ci0KLSAgICAvLyBEcmF3IHRoZSBzaGFkb3cgZm9yIHRoZSBob3Jpem9udGFs
IG92ZXJoYW5nLgotICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcmhhbmcpIHsKLSAgICAgICAgaW50
IHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBrU2hhZG93U2l6ZTsKLSAgICAgICAgUmVmUHRyPEdyYWRp
ZW50PiBncmFkaWVudDsKLSAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gaG9yaXpvbnRhbE92
ZXJoYW5nUmVjdDsKLSAgICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOwot
ICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgMCkgewotICAgICAgICAgICAgaWYg
KHVzZUFkZGl0aXZlU2hhZG93cykgewotICAgICAgICAgICAgICAgIHRvb2xiYXJTaGFkb3dIZWln
aHQgPSBzdGQ6Om1pbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpLCBrU2hhZG93U2l6
ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0
KCkgPCAyICoga1NoYWRvd1NpemUgKyBrVG9vbGJhclNoYWRvd09mZnNldCkgewotICAgICAgICAg
ICAgICAgIC8vIFNwbGl0IHRoZSBvdmVyaGFuZyBhcmVhIGJldHdlZW4gdGhlIHdlYiBjb250ZW50
IHNoYWRvdyBhbmQgdG9vbGJhciBzaGFkb3cgaWYgaXQncyB0b28gc21hbGwuCi0gICAgICAgICAg
ICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoKGhvcml6b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0
KCkgKyAxKSAvIDIpOwotICAgICAgICAgICAgICAgIHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBob3Jp
em9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpIC0gc2hhZG93UmVjdC5oZWlnaHQoKSAtIGtUb29s
YmFyU2hhZG93T2Zmc2V0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hhZG93UmVjdC5z
ZXRZKGhvcml6b250YWxPdmVyaGFuZ1JlY3QubWF4WSgpIC0gc2hhZG93UmVjdC5oZWlnaHQoKSk7
Ci0gICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBz
aGFkb3dSZWN0Lm1heFkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkgLSBrU2hh
ZG93U2l6ZSkpOwotICAgICAgICAgICAgc2hhZG93Q29ybmVyT3JpZ2luLnNldFkoc2hhZG93UmVj
dC5tYXhZKCkpOwotICAgICAgICAgICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNldFkoLWtTaGFkb3dT
aXplKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFk
b3dSZWN0Lm1heFkoKSkpOwotICAgICAgICAgICAgc2hhZG93Q29ybmVyT3JpZ2luLnNldFkoc2hh
ZG93UmVjdC55KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5n
KSB7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKHNoYWRvd1JlY3Qud2lkdGgoKSAt
IHZlcnRpY2FsT3ZlcmhhbmdSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgaWYgKHNjcm9sbE9m
ZnNldC53aWR0aCgpIDwgMCkgewotICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WChzaGFk
b3dSZWN0LngoKSArIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAg
ICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRYKHNoYWRvd1JlY3QueCgpKTsKLSAgICAgICAgICAg
ICAgICBzaGFkb3dDb3JuZXJPZmZzZXQuc2V0WCgta1NoYWRvd1NpemUpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dS
ZWN0Lm1heFgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKLSAgICAgICAgICAgIGdyYWRp
ZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9yc1tpXS5zdG9wLCBrU2hhZG93Q29sb3JzW2ld
LmNvbG9yKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKLSAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVj
dCkpOwotCi0gICAgICAgIC8vIERyYXcgYSBkcm9wLXNoYWRvdyBmcm9tIHRoZSB0b29sYmFyLgot
ICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgMCkgewotICAgICAgICAgICAgc2hh
ZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIHNoYWRvd1Jl
Y3Quc2V0SGVpZ2h0KHRvb2xiYXJTaGFkb3dIZWlnaHQpOwotICAgICAgICAgICAgZ3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBv
aW50KDAsIHNoYWRvd1JlY3QueSgpICsga1NoYWRvd1NpemUpKTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dD
b2xvcnNbaV0uY29sb3IpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdy
YWRpZW50KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFk
b3dSZWN0LCBkaXJ0eVJlY3QpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERyYXcgdGhl
IHNoYWRvdyBmb3IgdGhlIHZlcnRpY2FsIG92ZXJoYW5nLgotICAgIGlmIChoYXNWZXJ0aWNhbE92
ZXJoYW5nKSB7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Ci0gICAgICAgIElu
dFJlY3Qgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OwotICAgICAgICBzaGFkb3dS
ZWN0LnNldFdpZHRoKGtTaGFkb3dTaXplKTsKLSAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0
aCgpIDwgMCkgewotICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRYKHZlcnRpY2FsT3ZlcmhhbmdS
ZWN0Lm1heFgoKSAtIHNoYWRvd1JlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0
UG9pbnQoc2hhZG93UmVjdC54KCksIDApKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAw
KSwgRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCkpOwotICAgICAgICB9Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAg
ICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRv
d0NvbG9yc1tpXS5jb2xvcik7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFk
aWVudCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0
LCBkaXJ0eVJlY3QpKTsKLQotICAgICAgICAvLyBEcmF3IGEgZHJvcC1zaGFkb3cgZnJvbSB0aGUg
dG9vbGJhci4KLSAgICAgICAgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OwotICAg
ICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJTaGFkb3dPZmZzZXQpOwotICAgICAgICBzaGFk
b3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7Ci0gICAgICAgIGdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpKSwgRmxvYXRQb2ludCgwLCBz
aGFkb3dSZWN0Lm1heFkoKSkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051
bVNoYWRvd0NvbG9yczsgaSsrKQotICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChr
U2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOwotICAgICAgICBj
b250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOwotICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7Ci0gICAgfQotCi0gICAg
Ly8gSWYgYm90aCByZWN0YW5nbGVzIHByZXNlbnQsIGRyYXcgYSByYWRpYWwgZ3JhZGllbnQgZm9y
IHRoZSBjb3JuZXIuCi0gICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZyAmJiBoYXNWZXJ0aWNh
bE92ZXJoYW5nKSB7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKHNoYWRvd0Nvcm5lck9yaWdpbiwgMCwgc2hhZG93Q29ybmVyT3JpZ2luLCBrU2hh
ZG93U2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29s
b3JzOyBpKyspCi0gICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xv
cnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7Ci0gICAgICAgIGNvbnRleHQtPnNl
dEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0
UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgpICsgc2hhZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hh
ZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRvd0Nvcm5lck9mZnNldC55KCksIGtTaGFkb3dTaXpl
LCBrU2hhZG93U2l6ZSkpOwotICAgIH0KLX0KLQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDE5MTE5OTI1MWRhOGNhZmZiOGI5MWY3NGZhNjM0YTQ0ODc0NGMzNTAuLjAyYTNiNWJm
ZDliMTJjN2U4Yzk3YmY1NDcxMmYyOTBjNjFhYjIzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjIgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRPdmVyaGFuZ0FyZWFzIHRvIGFs
bG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNlIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorCiAy
MDExLTA5LTIxICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
bW92ZSBvbGQgYW5kIGJ1c3RlZCBjb250ZXh0IG5vdGlmaWNhdGlvbiBBUElzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggYzdjMDc4Y2VlNDk3NjE2YTZmODI2N2RmNTNlZDRj
NDRhYzNlMWExOS4uZmJiMmU1YTMyYjg4Y2I1MDZhN2ZjMDg1NjgzNTMwOGFmZTc2NTgzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtMTQwLDYgKzE0MCw5IEBACiAgICAg
ICB9XSwKICAgICAgIFsndG91Y2h1aT09MScsIHsKICAgICAgICAgJ2VuYWJsZV90b3VjaF9pY29u
X2xvYWRpbmcnOiAxLAorICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzogWworICAgICAgICAgICdF
TkFCTEVfUlVCQkVSX0JBTkRJTkc9MScsCisgICAgICAgIF0sCiAgICAgICB9XSwKICAgICAgICMg
TWFjIE9TIFggdXNlcyBBY2NlbGVyYXRlLmZyYW1ld29yayBGRlQgYnkgZGVmYXVsdCBpbnN0ZWFk
IG9mIEZGbXBlZy4KICAgICAgIFsnT1MhPSJtYWMiJywgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108409</attachid>
            <date>2011-09-22 15:18:12 -0700</date>
            <delta_ts>2011-09-23 14:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68648-20110922181810.patch</filename>
            <type>text/plain</type>
            <size>19439</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzI1M2MzODYwYWM2MGIw
MzY4NmMyNDg4ODk4NDI5YWNiNDgzOTJkLi4zNjBhZWJiNWI0NWU4ZWUwZTEzMzUzMjZjYWYyYWVl
YTBmMTNlZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjIgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgcGFpbnRP
dmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRvIHJldXNl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSAoeWV0
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
Ojp+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNocm9taXVtOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMpOgorCiAy
MDExLTA5LTIxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCdzIGNvbnRleHQgc2hvdWxkIG5v
dCBiZSBkZXN0cm95ZWQgZHVyaW5nIGF0ZXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCAy
NGIzZTE4ZWY0NWJjNTcyNTM3ZGUyMmFkOWUxMjUwMTcyODA2ZjM5Li42Y2M0ZDNkYjE4ODgyNTg3
OGM1OWYwZGQzYTM2NThmMzczYWU3NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMjgs
NiArMjgsMTEgQEAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtLmgiCiAKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKworI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykK
KyNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIlNjcm9sbGFibGVB
cmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaCIKQEAgLTM5LDYgKzQ0LDE0NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCitTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OworICAgICAgICAvLyBMb2FkIHRoZSBsaW5lbiBwYXR0ZXJuIGltYWdlIHVzZWQgZm9yIG92ZXJo
YW5nIGRyYXdpbmcuCisgICAgICAgIFJlZlB0cjxJbWFnZT4gcGF0dGVybkltYWdlID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJvdmVyaGFuZ1BhdHRlcm4iKTsKKyAgICAgICAgbV9vdmVy
aGFuZ1BhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUocGF0dGVybkltYWdlLCB0cnVlLCB0cnVlKTsK
KyAgICB9Cit9CisKK1Njcm9sbGJhclRoZW1lQ2hyb21pdW06On5TY3JvbGxiYXJUaGVtZUNocm9t
aXVtKCkKK3sKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludE92ZXJoYW5n
QXJlYXMoU2Nyb2xsVmlldyogdmlldywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92
ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIC8vIFRoZSBleHRl
bnQgb2YgZWFjaCBzaGFkb3cgaW4gcGl4ZWxzLgorICAgIGNvbnN0IGludCBrU2hhZG93U2l6ZSA9
IDQ7CisgICAgLy8gT2Zmc2V0IG9mIG5lZ2F0aXZlIG9uZSBwaXhlbCB0byBtYWtlIHRoZSBncmFk
aWVudCBibGVuZCB3aXRoIHRoZSB0b29sYmFyJ3MgYm90dG9tIGJvcmRlci4KKyAgICBjb25zdCBp
bnQga1Rvb2xiYXJTaGFkb3dPZmZzZXQgPSAtMTsKKyAgICBjb25zdCBzdHJ1Y3QgeworICAgICAg
ICBmbG9hdCBzdG9wOworICAgICAgICBDb2xvciBjb2xvcjsKKyAgICB9IGtTaGFkb3dDb2xvcnNb
XSA9IHsKKyAgICAgICAgeyAwLjAwMCwgQ29sb3IoMCwgMCwgMCwgMjU1KSB9LAorICAgICAgICB7
IDAuMTI1LCBDb2xvcigwLCAwLCAwLCA1NykgfSwKKyAgICAgICAgeyAwLjM3NSwgQ29sb3IoMCwg
MCwgMCwgNDEpIH0sCisgICAgICAgIHsgMC42MjUsIENvbG9yKDAsIDAsIDAsIDE4KSB9LAorICAg
ICAgICB7IDAuODc1LCBDb2xvcigwLCAwLCAwLCA2KSB9LAorICAgICAgICB7IDEuMDAwLCBDb2xv
cigwLCAwLCAwLCAwKSB9CisgICAgfTsKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVtU2hhZG93Q29s
b3JzID0gc2l6ZW9mKGtTaGFkb3dDb2xvcnMpIC8gc2l6ZW9mKGtTaGFkb3dDb2xvcnNbMF0pOwor
CisgICAgY29uc3QgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmhhbmcgPSAhaG9yaXpvbnRhbE92ZXJo
YW5nUmVjdC5pc0VtcHR5KCk7CisgICAgY29uc3QgYm9vbCBoYXNWZXJ0aWNhbE92ZXJoYW5nID0g
IXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKTsKKyAgICAvLyBQcmVmZXIgbm9uLWFkZGl0
aXZlIHNoYWRvd3MsIGJ1dCBkZWdyYWRlIHRvIGFkZGl0aXZlIHNoYWRvd3MgaWYgdGhlcmUgaXMg
dmVydGljYWwgb3ZlcmhhbmcuCisgICAgY29uc3QgYm9vbCB1c2VBZGRpdGl2ZVNoYWRvd3MgPSBo
YXNWZXJ0aWNhbE92ZXJoYW5nOworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKKworICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKG1fb3Zlcmhh
bmdQYXR0ZXJuKTsKKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nKQorICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcmhhbmcpCisgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisK
KyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IHZpZXctPnNjcm9sbE9mZnNldCgpOworICAgIEZs
b2F0UG9pbnQgc2hhZG93Q29ybmVyT3JpZ2luOworICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVy
T2Zmc2V0OworCisgICAgLy8gRHJhdyB0aGUgc2hhZG93IGZvciB0aGUgaG9yaXpvbnRhbCBvdmVy
aGFuZy4KKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nKSB7CisgICAgICAgIGludCB0b29s
YmFyU2hhZG93SGVpZ2h0ID0ga1NoYWRvd1NpemU7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4g
Z3JhZGllbnQ7CisgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IGhvcml6b250YWxPdmVyaGFu
Z1JlY3Q7CisgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0KGtTaGFkb3dTaXplKTsKKyAgICAg
ICAgaWYgKHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VB
ZGRpdGl2ZVNoYWRvd3MpIHsKKyAgICAgICAgICAgICAgICB0b29sYmFyU2hhZG93SGVpZ2h0ID0g
c3RkOjptaW4oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5oZWlnaHQoKSwga1NoYWRvd1NpemUpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpIDwg
MiAqIGtTaGFkb3dTaXplICsga1Rvb2xiYXJTaGFkb3dPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICAvLyBTcGxpdCB0aGUgb3ZlcmhhbmcgYXJlYSBiZXR3ZWVuIHRoZSB3ZWIgY29udGVudCBzaGFk
b3cgYW5kIHRvb2xiYXIgc2hhZG93IGlmIGl0J3MgdG9vIHNtYWxsLgorICAgICAgICAgICAgICAg
IHNoYWRvd1JlY3Quc2V0SGVpZ2h0KChob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpICsg
MSkgLyAyKTsKKyAgICAgICAgICAgICAgICB0b29sYmFyU2hhZG93SGVpZ2h0ID0gaG9yaXpvbnRh
bE92ZXJoYW5nUmVjdC5oZWlnaHQoKSAtIHNoYWRvd1JlY3QuaGVpZ2h0KCkgLSBrVG9vbGJhclNo
YWRvd09mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WSho
b3Jpem9udGFsT3ZlcmhhbmdSZWN0Lm1heFkoKSAtIHNoYWRvd1JlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93
UmVjdC5tYXhZKCkpLCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QubWF4WSgpIC0ga1NoYWRvd1Np
emUpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QubWF4
WSgpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9mZnNldC5zZXRZKC1rU2hhZG93U2l6ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVj
dC5tYXhZKCkpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1Jl
Y3QueSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGFzVmVydGljYWxPdmVyaGFuZykgewor
ICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0aChzaGFkb3dSZWN0LndpZHRoKCkgLSB2ZXJ0
aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxPZmZzZXQu
d2lkdGgoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFgoc2hhZG93UmVj
dC54KCkgKyB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICBz
aGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0LngoKSk7CisgICAgICAgICAgICAgICAg
c2hhZG93Q29ybmVyT2Zmc2V0LnNldFgoLWtTaGFkb3dTaXplKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRYKHNoYWRvd1JlY3QubWF4
WCgpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNo
YWRvd0NvbG9yczsgaSsrKQorICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hh
ZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVj
dChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICAgICAgLy8gRHJh
dyBhIGRyb3Atc2hhZG93IGZyb20gdGhlIHRvb2xiYXIuCisgICAgICAgIGlmIChzY3JvbGxPZmZz
ZXQuaGVpZ2h0KCkgPCAwKSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJT
aGFkb3dPZmZzZXQpOworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQodG9vbGJhclNo
YWRvd0hlaWdodCk7CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxv
YXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkg
KyBrU2hhZG93U2l6ZSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtO
dW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICAgICAg
Y29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRHJhdyB0aGUgc2hhZG93IGZvciB0aGUgdmVydGlj
YWwgb3ZlcmhhbmcuCisgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgICAgUmVm
UHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gdmVy
dGljYWxPdmVyaGFuZ1JlY3Q7CisgICAgICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoa1NoYWRvd1Np
emUpOworICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCAwKSB7CisgICAgICAgICAg
ICBzaGFkb3dSZWN0LnNldFgodmVydGljYWxPdmVyaGFuZ1JlY3QubWF4WCgpIC0gc2hhZG93UmVj
dC53aWR0aCgpKTsKKyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9h
dFBvaW50KHNoYWRvd1JlY3QubWF4WCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0LngoKSwg
MCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0
Lm1heFgoKSwgMCkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hh
ZG93Q29sb3JzOyBpKyspCisgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFk
b3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKKworICAgICAgICAvLyBEcmF3
IGEgZHJvcC1zaGFkb3cgZnJvbSB0aGUgdG9vbGJhci4KKyAgICAgICAgc2hhZG93UmVjdCA9IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OworICAgICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJTaGFk
b3dPZmZzZXQpOworICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7Cisg
ICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1Jl
Y3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSkpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQorICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xv
cnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQp
OworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGly
dHlSZWN0KSk7CisgICAgfQorCisgICAgLy8gSWYgYm90aCByZWN0YW5nbGVzIHByZXNlbnQsIGRy
YXcgYSByYWRpYWwgZ3JhZGllbnQgZm9yIHRoZSBjb3JuZXIuCisgICAgaWYgKGhhc0hvcml6b250
YWxPdmVyaGFuZyAmJiBoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7CisgICAgICAgIFJlZlB0cjxHcmFk
aWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKHNoYWRvd0Nvcm5lck9yaWdpbiwgMCwg
c2hhZG93Q29ybmVyT3JpZ2luLCBrU2hhZG93U2l6ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCisgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xv
cik7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgpICsgc2hh
ZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hhZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRvd0Nvcm5l
ck9mZnNldC55KCksIGtTaGFkb3dTaXplLCBrU2hhZG93U2l6ZSkpOworICAgIH0KK30KKyNlbmRp
ZgorCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1iKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQt
dGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKaW5kZXggMTE3ODEy
NTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2MzMmRlNGZhNS4uMTc5YzM0ZTk2NTRhMWYyOTQ3NTU4
ZDZjNDI0MTI5MDYyZWMxZTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaApAQCAtNDAsNiArNDAsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgY29udGFpbnMgdGhlIHNj
cm9sbGJhciBjb2RlIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuIENocm9taXVtCiAgICAgLy8gV2lu
ZG93cyBhbmQgTGludXguCiAgICAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSA6IHB1Ymxp
YyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CisjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQor
ICAgIHB1YmxpYzoKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSgpOworICAgICAgICB2
aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworI2VuZGlmCisKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0
dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwpA
QCAtNTIsNiArNTksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciop
ID0gMDsKKworI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKKyAgICBwcml2YXRlOgorICAgICAg
ICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CisjZW5kaWYKICAgICB9OwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5kZXggY2M5YTMw
OGVlMjMwMDI1ZTU1NDlkZjgyMDMxMzNiN2UzYWVlMmIwYi4uZWQ4NGYzMmYzN2JlMGIzNjM4YTM1
MDQ0MzkxNWQ2MGI0ZGI2M2EwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtNjIsOCAr
NjIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Ny
b2xsYmFyKiwgV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKICAgICBXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBw
YWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwpAQCAtODIsOSArODAsNiBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8
SW50UmVjdD4mKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1Bh
dHRlcm47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA0NzIzNDNkNDAx
ZTExNDg0MzJiZDI2ZWI2ZmQ4ZTk0MTg3YjBlMDBjLi5jMmRkMGQzMzE4ZmIxNTY3NTUzYTI2MGQ3
NGJlYTc2YjZkYjMyZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTE5NCwxMCAr
MTk0LDYgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYygpCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRy
dWU7CiAKLSAgICAgICAgLy8gTG9hZCB0aGUgbGluZW4gcGF0dGVybiBpbWFnZSB1c2VkIGZvciBv
dmVyaGFuZyBkcmF3aW5nLgotICAgICAgICBSZWZQdHI8SW1hZ2U+IHBhdHRlcm5JbWFnZSA9IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgib3ZlcmhhbmdQYXR0ZXJuIik7Ci0gICAgICAgIG1f
b3ZlcmhhbmdQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRlcm5JbWFnZSwgdHJ1ZSwgdHJ1
ZSk7Ci0KICAgICAgICAgW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIgcmVnaXN0ZXJBc09ic2VydmVy
XTsKICAgICAgICAgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgfQpAQCAtNjc2LDEyNyArNjcy
LDQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2MKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqIHZpZXcsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
UmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkKLXsKLSAgICAvLyBUaGUgZXh0ZW50IG9mIGVhY2ggc2hhZG93IGluIHBpeGVs
cy4KLSAgICBjb25zdCBpbnQga1NoYWRvd1NpemUgPSA0OwotICAgIC8vIE9mZnNldCBvZiBuZWdh
dGl2ZSBvbmUgcGl4ZWwgdG8gbWFrZSB0aGUgZ3JhZGllbnQgYmxlbmQgd2l0aCB0aGUgdG9vbGJh
cidzIGJvdHRvbSBib3JkZXIuCi0gICAgY29uc3QgaW50IGtUb29sYmFyU2hhZG93T2Zmc2V0ID0g
LTE7Ci0gICAgY29uc3Qgc3RydWN0IHsKLSAgICAgICAgZmxvYXQgc3RvcDsKLSAgICAgICAgQ29s
b3IgY29sb3I7Ci0gICAgfSBrU2hhZG93Q29sb3JzW10gPSB7Ci0gICAgICAgIHsgMC4wMDAsIENv
bG9yKDAsIDAsIDAsIDI1NSkgfSwKLSAgICAgICAgeyAwLjEyNSwgQ29sb3IoMCwgMCwgMCwgNTcp
IH0sCi0gICAgICAgIHsgMC4zNzUsIENvbG9yKDAsIDAsIDAsIDQxKSB9LAotICAgICAgICB7IDAu
NjI1LCBDb2xvcigwLCAwLCAwLCAxOCkgfSwKLSAgICAgICAgeyAwLjg3NSwgQ29sb3IoMCwgMCwg
MCwgNikgfSwKLSAgICAgICAgeyAxLjAwMCwgQ29sb3IoMCwgMCwgMCwgMCkgfQotICAgIH07Ci0g
ICAgY29uc3QgdW5zaWduZWQga051bVNoYWRvd0NvbG9ycyA9IHNpemVvZihrU2hhZG93Q29sb3Jz
KS9zaXplb2Yoa1NoYWRvd0NvbG9yc1swXSk7Ci0KLSAgICBjb25zdCBib29sIGhhc0hvcml6b250
YWxPdmVyaGFuZyA9ICFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKTsKLSAgICBjb25z
dCBib29sIGhhc1ZlcnRpY2FsT3ZlcmhhbmcgPSAhdmVydGljYWxPdmVyaGFuZ1JlY3QuaXNFbXB0
eSgpOwotICAgIC8vIFByZWZlciBub24tYWRkaXRpdmUgc2hhZG93cywgYnV0IGRlZ3JhZGUgdG8g
YWRkaXRpdmUgc2hhZG93cyBpZiB0aGVyZSBpcyB2ZXJ0aWNhbCBvdmVyaGFuZy4KLSAgICBjb25z
dCBib29sIHVzZUFkZGl0aXZlU2hhZG93cyA9IGhhc1ZlcnRpY2FsT3Zlcmhhbmc7Ci0KLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotCi0gICAgY29u
dGV4dC0+c2V0RmlsbFBhdHRlcm4obV9vdmVyaGFuZ1BhdHRlcm4pOwotICAgIGlmIChoYXNIb3Jp
em9udGFsT3ZlcmhhbmcpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbiho
b3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKLSAgICBpZiAoaGFzVmVydGljYWxP
dmVyaGFuZykKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2Fs
T3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKLQotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0g
dmlldy0+c2Nyb2xsT2Zmc2V0KCk7Ci0gICAgRmxvYXRQb2ludCBzaGFkb3dDb3JuZXJPcmlnaW47
Ci0gICAgRmxvYXRQb2ludCBzaGFkb3dDb3JuZXJPZmZzZXQ7Ci0KLSAgICAvLyBEcmF3IHRoZSBz
aGFkb3cgZm9yIHRoZSBob3Jpem9udGFsIG92ZXJoYW5nLgotICAgIGlmIChoYXNIb3Jpem9udGFs
T3ZlcmhhbmcpIHsKLSAgICAgICAgaW50IHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBrU2hhZG93U2l6
ZTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAgICAgICAgSW50UmVjdCBz
aGFkb3dSZWN0ID0gaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKLSAgICAgICAgc2hhZG93UmVjdC5z
ZXRIZWlnaHQoa1NoYWRvd1NpemUpOwotICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
IDwgMCkgewotICAgICAgICAgICAgaWYgKHVzZUFkZGl0aXZlU2hhZG93cykgewotICAgICAgICAg
ICAgICAgIHRvb2xiYXJTaGFkb3dIZWlnaHQgPSBzdGQ6Om1pbihob3Jpem9udGFsT3ZlcmhhbmdS
ZWN0LmhlaWdodCgpLCBrU2hhZG93U2l6ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGhvcml6
b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCkgPCAyICoga1NoYWRvd1NpemUgKyBrVG9vbGJhclNo
YWRvd09mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBvdmVyaGFuZyBhcmVh
IGJldHdlZW4gdGhlIHdlYiBjb250ZW50IHNoYWRvdyBhbmQgdG9vbGJhciBzaGFkb3cgaWYgaXQn
cyB0b28gc21hbGwuCi0gICAgICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoKGhvcml6
b250YWxPdmVyaGFuZ1JlY3QuaGVpZ2h0KCkgKyAxKSAvIDIpOwotICAgICAgICAgICAgICAgIHRv
b2xiYXJTaGFkb3dIZWlnaHQgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmhlaWdodCgpIC0gc2hh
ZG93UmVjdC5oZWlnaHQoKSAtIGtUb29sYmFyU2hhZG93T2Zmc2V0OwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRZKGhvcml6b250YWxPdmVyaGFuZ1JlY3QubWF4WSgp
IC0gc2hhZG93UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSksIEZsb2F0UG9pbnQoMCwg
c2hhZG93UmVjdC5tYXhZKCkgLSBrU2hhZG93U2l6ZSkpOwotICAgICAgICAgICAgc2hhZG93Q29y
bmVyT3JpZ2luLnNldFkoc2hhZG93UmVjdC5tYXhZKCkpOwotICAgICAgICAgICAgc2hhZG93Q29y
bmVyT2Zmc2V0LnNldFkoLWtTaGFkb3dTaXplKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3Qu
eSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSkpOwotICAgICAgICAgICAgc2hh
ZG93Q29ybmVyT3JpZ2luLnNldFkoc2hhZG93UmVjdC55KCkpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0LnNldFdp
ZHRoKHNoYWRvd1JlY3Qud2lkdGgoKSAtIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LndpZHRoKCkpOwot
ICAgICAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgewotICAgICAgICAgICAg
ICAgIHNoYWRvd1JlY3Quc2V0WChzaGFkb3dSZWN0LngoKSArIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LndpZHRoKCkpOwotICAgICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRYKHNoYWRv
d1JlY3QueCgpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZzZXQuc2V0WCgta1No
YWRvd1NpemUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaGFkb3dD
b3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0Lm1heFgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7
IGkrKykKLSAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoa1NoYWRvd0NvbG9yc1tp
XS5zdG9wLCBrU2hhZG93Q29sb3JzW2ldLmNvbG9yKTsKLSAgICAgICAgY29udGV4dC0+c2V0Rmls
bEdyYWRpZW50KGdyYWRpZW50KTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0
aW9uKHNoYWRvd1JlY3QsIGRpcnR5UmVjdCkpOwotCi0gICAgICAgIC8vIERyYXcgYSBkcm9wLXNo
YWRvdyBmcm9tIHRoZSB0b29sYmFyLgotICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
IDwgMCkgewotICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRZKGtUb29sYmFyU2hhZG93T2Zmc2V0
KTsKLSAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0SGVpZ2h0KHRvb2xiYXJTaGFkb3dIZWlnaHQp
OwotICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwg
c2hhZG93UmVjdC55KCkpLCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpICsga1NoYWRvd1Np
emUpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29s
b3JzOyBpKyspCi0gICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93
Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIERyYXcgdGhlIHNoYWRvdyBmb3IgdGhlIHZlcnRpY2FsIG92ZXJoYW5n
LgotICAgIGlmIChoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVu
dD4gZ3JhZGllbnQ7Ci0gICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IHZlcnRpY2FsT3Zlcmhh
bmdSZWN0OwotICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKGtTaGFkb3dTaXplKTsKLSAgICAg
ICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgewotICAgICAgICAgICAgc2hhZG93UmVj
dC5zZXRYKHZlcnRpY2FsT3ZlcmhhbmdSZWN0Lm1heFgoKSAtIHNoYWRvd1JlY3Qud2lkdGgoKSk7
Ci0gICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFk
b3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC54KCksIDApKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9h
dFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwg
MCkpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hh
ZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFk
b3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7Ci0gICAgICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKLQotICAgICAgICAvLyBEcmF3
IGEgZHJvcC1zaGFkb3cgZnJvbSB0aGUgdG9vbGJhci4KLSAgICAgICAgc2hhZG93UmVjdCA9IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwotICAgICAgICBzaGFkb3dSZWN0LnNldFkoa1Rvb2xiYXJTaGFk
b3dPZmZzZXQpOwotICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7Ci0g
ICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KDAsIHNoYWRvd1Jl
Y3QueSgpKSwgRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSkpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQotICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xv
cnNbaV0uY29sb3IpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQp
OwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGly
dHlSZWN0KSk7Ci0gICAgfQotCi0gICAgLy8gSWYgYm90aCByZWN0YW5nbGVzIHByZXNlbnQsIGRy
YXcgYSByYWRpYWwgZ3JhZGllbnQgZm9yIHRoZSBjb3JuZXIuCi0gICAgaWYgKGhhc0hvcml6b250
YWxPdmVyaGFuZyAmJiBoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Ci0gICAgICAgIFJlZlB0cjxHcmFk
aWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKHNoYWRvd0Nvcm5lck9yaWdpbiwgMCwg
c2hhZG93Q29ybmVyT3JpZ2luLCBrU2hhZG93U2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCi0gICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xv
cik7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgpICsgc2hh
ZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hhZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRvd0Nvcm5l
ck9mZnNldC55KCksIGtTaGFkb3dTaXplLCBrU2hhZG93U2l6ZSkpOwotICAgIH0KLX0KLQotCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE5MTE5OTI1MWRhOGNhZmZiOGI5MWY3NGZh
NjM0YTQ0ODc0NGMzNTAuLjAyYTNiNWJmZDliMTJjN2U4Yzk3YmY1NDcxMmYyOTBjNjFhYjIzNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjIg
IEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Ig
cGFpbnRPdmVyaGFuZ0FyZWFzIHRvIGFsbG93IG5vbi1NYWMgQ2hyb21pdW0gcGxhdGZvcm1zIHRv
IHJldXNlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmZWF0dXJlcy5neXBpOgorCiAyMDExLTA5LTIxICBBYXJvbiBCb29kbWFuICA8YWFAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBvbGQgYW5kIGJ1c3RlZCBjb250ZXh0IG5vdGlm
aWNhdGlvbiBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggYzdjMDc4
Y2VlNDk3NjE2YTZmODI2N2RmNTNlZDRjNDRhYzNlMWExOS4uZmJiMmU1YTMyYjg4Y2I1MDZhN2Zj
MDg1NjgzNTMwOGFmZTc2NTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpA
QCAtMTQwLDYgKzE0MCw5IEBACiAgICAgICB9XSwKICAgICAgIFsndG91Y2h1aT09MScsIHsKICAg
ICAgICAgJ2VuYWJsZV90b3VjaF9pY29uX2xvYWRpbmcnOiAxLAorICAgICAgICAnZmVhdHVyZV9k
ZWZpbmVzJzogWworICAgICAgICAgICdFTkFCTEVfUlVCQkVSX0JBTkRJTkc9MScsCisgICAgICAg
IF0sCiAgICAgICB9XSwKICAgICAgICMgTWFjIE9TIFggdXNlcyBBY2NlbGVyYXRlLmZyYW1ld29y
ayBGRlQgYnkgZGVmYXVsdCBpbnN0ZWFkIG9mIEZGbXBlZy4KICAgICAgIFsnT1MhPSJtYWMiJywg
ewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>