<?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>35072</bug_id>
          
          <creation_ts>2010-02-17 21:47:10 -0800</creation_ts>
          <short_desc>[Mac] Move Icon::iconForFiles() code to WebChromeClient::iconForFiles().</short_desc>
          <delta_ts>2011-06-15 14:45:01 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>35067</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191398</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-17 21:47:10 -0800</bug_when>
    <thetext>[Mac] Move Icon::iconForFiles() code to WebChromeClient::iconForFiles().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191399</commentid>
    <comment_count>1</comment_count>
      <attachid>48969</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-17 21:50:42 -0800</bug_when>
    <thetext>Created attachment 48969
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191402</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-02-17 21:55:37 -0800</bug_when>
    <thetext>Isn’t moving code from WebCore to WebKit going in completely the wrong direction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191406</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-17 22:01:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Isn’t moving code from WebCore to WebKit going in completely the wrong
&gt; direction?

The API change (Icon::iconForFiles() to ChromeClient::iconForFiles()) was agreed in Bug#32054 because Chromium can&apos;t load icons in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191684</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-18 11:32:09 -0800</bug_when>
    <thetext>My apologies.  I clearly didn&apos;t read the other patch closely enough to realize that code was moving from WebCore to WebKit.  I should have commented on that before.  It&apos;s obvious looking back.

Mark is right, historically the wisdom is that moving things out of WebKIt and into WebCore is a good thing.  Makes the code cross-plaform and shared among more ports.  Every WebKIt layer is a porting burden.

Although your patch added a good feature (asynchronous icon loading), I think that we may need to re-visit how it was done.

Why do we need any special per-platform code for &quot;icon&quot; loading.  Don&apos;t we already have plenty of async code for loading data files?  Can&apos;t we load these icons the same way we would load any other CachedImage file?

Ideally the asynchronous loading code could all be shared by all WebCore ports, and only the individual &quot;read the bits off disk&quot; and &quot;turn these icon bits into an Image&quot; would be per-port.  None of that seems like it needs to be in WebKit.

I guess the problem is that the OS might not actually be loading files directly.  In the case of Mac OS X, the library APIs hand you back NSImage pointers instead of any URL to load?  Is that correct?

Perhaps other platforms function the same in which case the *entire* load is platform specific, and it may make sense to do the load entirely in the platform-speicifc bits we call WebKit as you have done.

I think I&apos;ve talked myself in circles.  Lunch time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191794</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-18 17:48:52 -0800</bug_when>
    <thetext>I tried an idea of icon loading via a special URL several months ago.  However it failed because of some security restrictions.

The current behavior is:
 1. FileChooser calls Icon::iconForFiles()
 2. FileChooser calls ChromeClient::iconForFiles() if the above failed.
Darin and Maciej didn&apos;t like such duplicated API situation.

How about changing it to:
 * FileChooser calls just ChromeClient::iconForFiles().
  So, all platforms need to implement ChromeClient::iconForFiles()
 
* Provide optional sub-API, Icon::iconForFiles().
  Chromium won&apos;t implement it.
  ChromeClient::iconForFiles() for other platforms call iconForFiles()
 
We don&apos;t need to move existing iconForFiles() implementations from WebCore in this idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201705</commentid>
    <comment_count>6</comment_count>
      <attachid>51121</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-18 22:44:10 -0700</bug_when>
    <thetext>Created attachment 51121
Another approach

Instead of moving icon loading code, just call Icon::createIconForFiles() from ChromeClient::iconForFiles().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201712</commentid>
    <comment_count>7</comment_count>
      <attachid>51121</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-18 22:57:21 -0700</bug_when>
    <thetext>Comment on attachment 51121
Another approach

&gt; +#if !PLATFORM(Chromium)
&gt;      static PassRefPtr&lt;Icon&gt; createIconForFiles(const Vector&lt;String&gt;&amp; filenames);

Oops, it should be CHROMIUM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201858</commentid>
    <comment_count>8</comment_count>
      <attachid>51121</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-19 08:12:32 -0700</bug_when>
    <thetext>Comment on attachment 51121
Another approach

&gt; -void ChromeClient::iconForFiles(const Vector&lt;WebCore::String&gt;&amp;, PassRefPtr&lt;WebCore::FileChooser&gt;)
&gt; +void ChromeClient::iconForFiles(const Vector&lt;WebCore::String&gt;&amp; filenames, PassRefPtr&lt;WebCore::FileChooser&gt; chooser)

This function name is not good. The function doesn&apos;t return an icon, so it shouldn&apos;t be named &quot;icon&quot;. I suggest the name chooseIconForFiles.

The argument types on this function may also be wrong. A function should only take a PassRefPtr if it&apos;s taking ownership of an object. This function does not take ownership of the FileChooser object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202533</commentid>
    <comment_count>9</comment_count>
      <attachid>48969</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-22 09:21:00 -0700</bug_when>
    <thetext>Comment on attachment 48969
Proposed patch

Darin&apos;s comments lead me to r- this patch.  I&apos;m not sure we&apos;ve reached consensus about whether to have this code reach out to WebKit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202534</commentid>
    <comment_count>10</comment_count>
      <attachid>51121</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-22 09:21:12 -0700</bug_when>
    <thetext>Comment on attachment 51121
Another approach

Darin&apos;s comments lead me to r- this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202998</commentid>
    <comment_count>11</comment_count>
      <attachid>51412</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-23 04:45:34 -0700</bug_when>
    <thetext>Created attachment 51412
Another approach (rev.2)

Renamed iconForFiles() to chooseIconForFiles().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202999</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-23 04:46:45 -0700</bug_when>
    <thetext>&gt; This function name is not good. The function doesn&apos;t return an icon, so it
&gt; shouldn&apos;t be named &quot;icon&quot;. I suggest the name chooseIconForFiles.

Done.

&gt; The argument types on this function may also be wrong. A function should only
&gt; take a PassRefPtr if it&apos;s taking ownership of an object. This function does not
&gt; take ownership of the FileChooser object.

Chromium implementation will need to take ownership because of asynchronous loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203198</commentid>
    <comment_count>13</comment_count>
      <attachid>51412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-23 14:03:16 -0700</bug_when>
    <thetext>Comment on attachment 51412
Another approach (rev.2)

&gt; -    m_icon = Icon::createIconForFiles(m_filenames);
&gt; -    // If synchronous icon loading failed, try asynchronous loading.
&gt; -    if (!m_icon &amp;&amp; m_filenames.size() &amp;&amp; m_client)
&gt; -        m_client-&gt;iconForFiles(m_filenames);
&gt; +    m_icon = 0;
&gt; +    if (m_filenames.size() &amp;&amp; m_client)
&gt; +        m_client-&gt;chooseIconForFiles(m_filenames);

Could you explain why the m_icon = 0 code is needed/helpful here?

&gt; -    // Deprecated.  This function will be removed.
&gt; -    // FIXME: Remove it when all implementations are moved to ChromeClient::iconForFiles().
&gt; +#if !PLATFORM(CHROMIUM)
&gt;      static PassRefPtr&lt;Icon&gt; createIconForFiles(const Vector&lt;String&gt;&amp; filenames);
&gt; +#endif

If Chromium is neither calling not implementing this function, it seems OK to just leave the declaration there without an ugly conditional. It does no real harm. Will this function eventually be removed or not? I don&apos;t understand the status of this function. Is it just a helper for WebKit? Maybe other platforms will later want to remove this too. Maybe new platforms won&apos;t need it. I think having an ifdef around it is strange.

Maybe the right thing to do is to move the body of this function from WebCore into WebKit for all platforms, and then remove it entirely from WebCore.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203363</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-24 02:17:22 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 51412 [details])
&gt; &gt; -    m_icon = Icon::createIconForFiles(m_filenames);
&gt; &gt; -    // If synchronous icon loading failed, try asynchronous loading.
&gt; &gt; -    if (!m_icon &amp;&amp; m_filenames.size() &amp;&amp; m_client)
&gt; &gt; -        m_client-&gt;iconForFiles(m_filenames);
&gt; &gt; +    m_icon = 0;
&gt; &gt; +    if (m_filenames.size() &amp;&amp; m_client)
&gt; &gt; +        m_client-&gt;chooseIconForFiles(m_filenames);
&gt; 
&gt; Could you explain why the m_icon = 0 code is needed/helpful here?

It makes no sense, and should be removed.
I don&apos;t remember why I added it :-P

&gt; &gt; -    // Deprecated.  This function will be removed.
&gt; &gt; -    // FIXME: Remove it when all implementations are moved to ChromeClient::iconForFiles().
&gt; &gt; +#if !PLATFORM(CHROMIUM)
&gt; &gt;      static PassRefPtr&lt;Icon&gt; createIconForFiles(const Vector&lt;String&gt;&amp; filenames);
&gt; &gt; +#endif
&gt; 
&gt; If Chromium is neither calling not implementing this function, it seems OK to
&gt; just leave the declaration there without an ugly conditional. It does no real
&gt; harm.

I see. I&apos;ll remove the #ifdef.

&gt; Will this function eventually be removed or not? I don&apos;t understand the
&gt; status of this function. Is it just a helper for WebKit? Maybe other platforms
&gt; will later want to remove this too. Maybe new platforms won&apos;t need it. I think
&gt; having an ifdef around it is strange.
&gt; 
&gt; Maybe the right thing to do is to move the body of this function from WebCore
&gt; into WebKit for all platforms, and then remove it entirely from WebCore.

Yeah, you wrote so in Bug#32054. But bdash and eric objected in this bug.
Hmm, I&apos;ll wait for additional comments from bdash and eric for a few days, and if no objections, I&apos;ll update the original patch in this bug (Moving Icon loading code for Mac).

&gt; r=me

Anyway, I&apos;ll land this patch (Another approach rev.2) with the above fixes.  It&apos;s not harmful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203365</commentid>
    <comment_count>15</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-24 02:38:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; r=me
&gt; 
&gt; Anyway, I&apos;ll land this patch (Another approach rev.2) with the above fixes. 
&gt; It&apos;s not harmful.

Landed as r56439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206328</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-03-30 19:08:04 -0700</bug_when>
    <thetext>This patch (http://trac.webkit.org/changeset/56439) caused a major regression (https://bugs.webkit.org/show_bug.cgi?id=36723)

Since:
1 - It didn&apos;t change functionality
2 - The approach was generally not liked.
3 - In general, round tripping between WebCore and WebKit is something we try to *reduce*

...I think it needs to be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206332</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-30 19:15:03 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This patch (http://trac.webkit.org/changeset/56439) caused a major regression
&gt; (https://bugs.webkit.org/show_bug.cgi?id=36723)
&gt; 
&gt; Since:
&gt; 1 - It didn&apos;t change functionality
&gt; 2 - The approach was generally not liked.
&gt; 3 - In general, round tripping between WebCore and WebKit is something we try
&gt; to *reduce*
&gt; 
&gt; ...I think it needs to be rolled out.

Brady, I already post a fix for the regression.  Please don&apos;t roll it out.
Even if we rolled it out, the problem would not be solved with platforms of which Icon::iconForFiles() returns 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206333</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-03-30 19:17:20 -0700</bug_when>
    <thetext>(In reply to comment #17)

I replied to this in https://bugs.webkit.org/show_bug.cgi?id=36723 where it is more directly relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211776</commentid>
    <comment_count>19</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-12 17:05:05 -0700</bug_when>
    <thetext>Today I have understood moving code from WebCore to WebKit is too bad if a platform has two different WebKit layers.  So, I won&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421583</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-15 14:36:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I tried an idea of icon loading via a special URL several months ago.  However it failed because of some security restrictions.

Looking at this code now a few months later, I am becoming convinced we need to address this differently. Icon code looks complicated, brittle, and in spirit very similar to how we load images. Perhaps we could try giving another shot to reusing image plumbing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421592</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-15 14:45:01 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #5)
&gt; &gt; I tried an idea of icon loading via a special URL several months ago.  However it failed because of some security restrictions.
&gt; 
&gt; Looking at this code now a few months later, I am becoming convinced we need to address this differently. Icon code looks complicated, brittle, and in spirit very similar to how we load images. Perhaps we could try giving another shot to reusing image plumbing?

Created bug 62758 to track this idea.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48969</attachid>
            <date>2010-02-17 21:50:42 -0800</date>
            <delta_ts>2010-03-22 09:21:00 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-35072-20100218145040.patch</filename>
            <type>text/plain</type>
            <size>8207</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODE5NmQ4Yi4uZTE5YWU3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMi0xOCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW01hY10gTW92ZSBJY29uOjppY29uRm9yRmlsZXMoKSBjb2RlIHRvIFdl
YkNocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3MgorCisgICAgICAgIC0gUmVtb3ZlIHRoZSBjb2Rl
IGluIEljb246Omljb25Gb3JGaWxlcygpCisgICAgICAgIC0gRXhwb3NlIEljb24uaAorCisgICAg
ICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyk6CisKIDIwMTAtMDItMTcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDYyMTVlMjQuLjg4
NWUwMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3Jl
L1dlYkNvcmUuYmFzZS5leHAKQEAgLTE1Miw2ICsxNTIsNyBAQCBfX1pON1dlYkNvcmUxMUNhY2hl
ZEZyYW1lMjZzZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVQTlNfMjNDYWNoZWRGcmFtZVBsYXRm
b3JtRAogX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDdyZWFwcGx5RXYKIF9fWk43V2ViQ29yZTEx
RWRpdENvbW1hbmQ3dW5hcHBseUV2CiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTBjaG9vc2VG
aWxlRVJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGljb25Mb2FkZWRF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNEljb25FRUUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIx
MWNob29zZUZpbGVzRVJLTjNXVEY2VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMUZpbGVDaG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExY29tcGxldGVV
UkxFUktOU182U3RyaW5nRQpAQCAtNDgxLDYgKzQ4Miw4IEBAIF9fWk43V2ViQ29yZTRGb250QzFF
UktOU18xNkZvbnRQbGF0Zm9ybURhdGFFYgogX19aTjdXZWJDb3JlNEZvbnRDMUV2CiBfX1pON1dl
YkNvcmU0Rm9udEQxRXYKIF9fWk43V2ViQ29yZTRGb250YVNFUktTMF8KK19fWk43V2ViQ29yZTRJ
Y29uQzFFUDdOU0ltYWdlCitfX1pON1dlYkNvcmU0SWNvbkQxRXYKIF9fWk43V2ViQ29yZTRLVVJM
MTBpbnZhbGlkYXRlRXYKIF9fWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQYXJzZWRVUkxTdHJpbmdU
YWdFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlNEtVUkxDMUVQNU5TVVJMCkBAIC05NjMsNiAr
OTY2LDcgQEAgX19aTks3V2ViQ29yZTZTdHJpbmc2bGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmU2U3Ry
aW5nN2lzRW1wdHlFdgogX19aTks3V2ViQ29yZTZTdHJpbmc5c3Vic3RyaW5nRWpqCiBfX1pOSzdX
ZWJDb3JlNlN0cmluZ2N2TjNKU0M3VVN0cmluZ0VFdgorX19aTks3V2ViQ29yZTZTdHJpbmdpeEVq
CiBfX1pOSzdXZWJDb3JlNldpZGdldDIzY29udmVydFRvQ29udGFpbmluZ1ZpZXdFUktOU183SW50
UmVjdEUKIF9fWk5LN1dlYkNvcmU2V2lkZ2V0MjNjb252ZXJ0VG9Db250YWluaW5nVmlld0VSS05T
XzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmU2V2lkZ2V0MjVjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3RVJLTlNfN0ludFJlY3RFCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDhiYTVlNGIuLjZhMTBlMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNzE2LDcgKzM3MTYsNyBAQAogCQlCMjc1MzU2QjBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjc1MzUzRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NkMw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzRTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRT
aXplLmNwcCAqLzsgfTsKIAkJQjI3NTM1NkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0Yw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUIyNzUzNTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJY29u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0
MDBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oICovOyB9OworCQlCMjc1MzU2RTBCMDUzODE0MDAy
Q0U2NEYgLyogSWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3NTM1NDAwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1MzU2RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3NTM1NDEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQjI3
NTM1NzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1
MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bWFnZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGU5ZjJkYzcuLmE2ZWIxMmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaElj
b24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyNlbGlmIFBMQVRGT1JN
KE1BQykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGUoTlNJbWFnZSogaW1hZ2Up
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlKSk7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbSBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXggYmM4YzMxMi4u
MWJlNjZjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1h
Yy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC0z
OSw0MCArMzksMTAgQEAgSWNvbjo6fkljb24oKQogewogfQogCi0vLyBGSVhNRTogTW92ZSB0aGUg
Y29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJ
Y29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykK
Ky8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KK1Bhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKLSAgICBpZiAoZmlsZW5hbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBib29sIHVzZUljb25Gcm9tRmlyc3RG
aWxlOwotI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgLy8gRklYTUU6IGZpbmQgYSBiZXR0
ZXIgaW1hZ2UgZm9yIG11bHRpcGxlIGZpbGVzIHRvIHVzZSBvbiBUaWdlci4KLSAgICB1c2VJY29u
RnJvbUZpcnN0RmlsZSA9IHRydWU7Ci0jZWxzZQotICAgIHVzZUljb25Gcm9tRmlyc3RGaWxlID0g
ZmlsZW5hbWVzLnNpemUoKSA9PSAxOwotI2VuZGlmCi0gICAgaWYgKHVzZUljb25Gcm9tRmlyc3RG
aWxlKSB7Ci0gICAgICAgIC8vIERvbid0IHBhc3MgcmVsYXRpdmUgZmlsZW5hbWVzIC0tIHdlIGRv
bid0IHdhbnQgYSByZXN1bHQgdGhhdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4K
LSAgICAgICAgLy8gTmVlZCAwVSBoZXJlIHRvIGRpc2FtYmlndWF0ZSBTdHJpbmc6Om9wZXJhdG9y
W10gZnJvbSBvcGVyYXRvcihOU1N0cmluZyosIGludClbXQotICAgICAgICBpZiAoZmlsZW5hbWVz
WzBdLmlzRW1wdHkoKSB8fCBmaWxlbmFtZXNbMF1bMFVdICE9ICcvJykKLSAgICAgICAgICAgIHJl
dHVybiAwOwotCi0gICAgICAgIE5TSW1hZ2UqIGltYWdlID0gW1tOU1dvcmtzcGFjZSBzaGFyZWRX
b3Jrc3BhY2VdIGljb25Gb3JGaWxlOmZpbGVuYW1lc1swXV07Ci0gICAgICAgIGlmICghaW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElj
b24oaW1hZ2UpKTsKLSAgICB9Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKICAgICByZXR1cm4g
MDsKLSNlbHNlCi0gICAgTlNJbWFnZSogaW1hZ2UgPSBbTlNJbWFnZSBpbWFnZU5hbWVkOk5TSW1h
Z2VOYW1lTXVsdGlwbGVEb2N1bWVudHNdOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlKSk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDFiNGJhNjUuLmFjZWYxODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMDItMTggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtNYWNdIE1vdmUgSWNvbjo6aWNv
bkZvckZpbGVzKCkgY29kZSB0byBXZWJDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNzIKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKToKKwogMjAxMC0wMi0xNyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIyMjQw
ZDkuLjAxODNmNTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCkBAIC01Niw2ICs1Niw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50
UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CkBAIC02MzEsOSArNjMyLDQyIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpy
dW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9vc2VyKQogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpp
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2Vy
PikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICAv
LyBGSVhNRTogTW92ZSB0aGUgY29kZSBvZiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBoZXJl
LgorICAgIFJlZlB0cjxJY29uPiBpY29uOworICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKSB7
CisgICAgICAgIGNob29zZXItPmljb25Mb2FkZWQoaWNvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgQVNTRVJUKGNob29zZXIpOworCisgICAgYm9vbCB1c2VJY29uRnJvbUZpcnN0Rmls
ZTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIC8vIEZJWE1FOiBmaW5kIGEgYmV0dGVy
IGltYWdlIGZvciBtdWx0aXBsZSBmaWxlcyB0byB1c2Ugb24gVGlnZXIuCisgICAgdXNlSWNvbkZy
b21GaXJzdEZpbGUgPSB0cnVlOworI2Vsc2UKKyAgICB1c2VJY29uRnJvbUZpcnN0RmlsZSA9IGZp
bGVuYW1lcy5zaXplKCkgPT0gMTsKKyNlbmRpZgorICAgIGlmICh1c2VJY29uRnJvbUZpcnN0Rmls
ZSkgeworICAgICAgICAvLyBEb24ndCBwYXNzIHJlbGF0aXZlIGZpbGVuYW1lcyAtLSB3ZSBkb24n
dCB3YW50IGEgcmVzdWx0IHRoYXQgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisg
ICAgICAgIC8vIE5lZWQgMFUgaGVyZSB0byBkaXNhbWJpZ3VhdGUgU3RyaW5nOjpvcGVyYXRvcltd
IGZyb20gb3BlcmF0b3IoTlNTdHJpbmcqLCBpbnQpW10KKyAgICAgICAgaWYgKGZpbGVuYW1lc1sw
XS5pc0VtcHR5KCkgfHwgZmlsZW5hbWVzWzBdWzBVXSAhPSAnLycpIHsKKyAgICAgICAgICAgIGNo
b29zZXItPmljb25Mb2FkZWQoaWNvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBOU0ltYWdlKiBpbWFnZSA9IFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNl
XSBpY29uRm9yRmlsZTpmaWxlbmFtZXNbMF1dOworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAg
ICAgICBpY29uID0gSWNvbjo6Y3JlYXRlKGltYWdlKTsKKyAgICAgICAgY2hvb3Nlci0+aWNvbkxv
YWRlZChpY29uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZm5kZWYgQlVJTERJTkdfT05f
VElHRVIKKyAgICBOU0ltYWdlKiBpbWFnZSA9IFtOU0ltYWdlIGltYWdlTmFtZWQ6TlNJbWFnZU5h
bWVNdWx0aXBsZURvY3VtZW50c107CisgICAgaWYgKGltYWdlKQorICAgICAgICBpY29uID0gSWNv
bjo6Y3JlYXRlKGltYWdlKTsKKyNlbmRpZgorICAgIGNob29zZXItPmljb25Mb2FkZWQoaWNvbik7
CiB9CiAKIEtleWJvYXJkVUlNb2RlIFdlYkNocm9tZUNsaWVudDo6a2V5Ym9hcmRVSU1vZGUoKQo=
</data>
<flag name="review"
          id="31717"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51121</attachid>
            <date>2010-03-18 22:44:10 -0700</date>
            <delta_ts>2010-03-23 04:45:34 -0700</delta_ts>
            <desc>Another approach</desc>
            <filename>0001-icon-api.patch</filename>
            <type>text/plain</type>
            <size>16361</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGNjZWE2MS4uOTc0NTQ2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0xOCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisK
KyAgICAgICAgcjU0OTIzIG1hZGUgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZGVwcmVjYXRl
ZC4gSG93ZXZlciBtb3ZpbmcKKyAgICAgICAgZXhpc3RpbmcgaWNvbiBsb2FkaW5nIGNvZGUgdG8g
b3V0c2lkZSBvZiBXZWJDb3JlIGlzIG5vdCBnb29kLiAgU28sCisgICAgICAgIHdlIGFzc3VtZToK
KyAgICAgICAgLSBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpIGlzIHRoZSBwcmltYXJ5IEFQ
SSB0byBsb2FkIGljb25zLgorICAgICAgICAtIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcygpIGlz
IGFuIG9wdGlvbmFsIEFQSSB0byBoZWxwCisgICAgICAgICAgaW1wbGVtZW50aW5nIENocm9tZUNs
aWVudDo6aWNvbkZvckZpbGVzKCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGEgY2Fs
bCB0byBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBmcm9tCisgICAgICAgIEZpbGVDaG9vc2Vy
Ojpsb2FkSWNvbigpLCBhbmQgQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKSBvZgorICAgICAg
ICBub24tQ2hyb21pdW0gcG9ydHMgY2FsbHMgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOiBFeHBvcnQgRmlsZUNob29zZXI6Omljb25Mb2Fk
ZWQoKSwKKyAgICAgICAgICBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSwgYW5kIEljb246On5J
Y29uKCkuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBFeHBv
cnQgSWNvbi5oCisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUNob29zZXI6OmxvYWRJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JY29uLmg6IERlY2xhcmUgY3JlYXRlSWNvbkZvckZpbGVzKCkgaWYgbm90IENocm9taXVt
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bUxpbnV4
LmNwcDogUmVtb3ZlIGNyZWF0ZUljb25Gb3JGaWxlcygpLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bU1hYy5jcHA6IGRpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bVdpbi5jcHA6IGRpdHRvLgorCiAy
MDEwLTAzLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzMzg+IFJlbW92ZSB1bnVzZWQgUmVuZGVyUmVwbGFjZWQ6
OmFkanVzdE92ZXJmbG93Rm9yQm94U2hhZG93QW5kUmVmbGVjdCgpIGRlY2xhcmF0aW9uCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAKaW5kZXggMzY1YWZkNC4uMGE2YjIzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJh
c2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApAQCAtMTUxLDYgKzE1MSw3IEBA
IF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRVBO
U18yM0NhY2hlZEZyYW1lUGxhdGZvcm1ECiBfX1pON1dlYkNvcmUxMUVkaXRDb21tYW5kN3JlYXBw
bHlFdgogX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDd1bmFwcGx5RXYKIF9fWk43V2ViQ29yZTEx
RmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOU182U3RyaW5nRQorX19aTjdXZWJDb3JlMTFGaWxl
Q2hvb3NlcjEwaWNvbkxvYWRlZEVOM1dURjEwUGFzc1JlZlB0cklOU180SWNvbkVFRQogX19aTjdX
ZWJDb3JlMTFGaWxlQ2hvb3NlcjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlNfNlN0cmlu
Z0VMbTBFRUUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXJEMUV2CiBfX1pON1dlYkNvcmUxMUZy
YW1lTG9hZGVyMTFjb21wbGV0ZVVSTEVSS05TXzZTdHJpbmdFCkBAIC00ODEsNiArNDgyLDggQEAg
X19aTjdXZWJDb3JlNEZvbnRDMUVSS05TXzE2Rm9udFBsYXRmb3JtRGF0YUViCiBfX1pON1dlYkNv
cmU0Rm9udEMxRXYKIF9fWk43V2ViQ29yZTRGb250RDFFdgogX19aTjdXZWJDb3JlNEZvbnRhU0VS
S1MwXworX19aTjdXZWJDb3JlNEljb24xOGNyZWF0ZUljb25Gb3JGaWxlc0VSS04zV1RGNlZlY3Rv
cklOU182U3RyaW5nRUxtMEVFRQorX19aTjdXZWJDb3JlNEljb25EMUV2CiBfX1pON1dlYkNvcmU0
S1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3Ry
aW5nVGFnRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTRLVVJMQzFFUDVOU1VSTApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNzc5YzM3Li42ZTFmNzQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzczNyw3
ICszNzM3LDcgQEAKIAkJQjI3NTM1NkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0QwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUIyNzUzNTZDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1M0UwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5jcHAgKi87IH07CiAJCUIyNzUzNTZE
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTNGMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNp
emUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlC
Mjc1MzU2RTBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDAwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24u
aCAqLzsgfTsKKwkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJY29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQjI3NTM1NkYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZS5jcHAgKi87IH07CiAJCUIyNzUzNTcwMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NzEwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjc1MzU0MzBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cAppbmRleCBhMmQ0NzcwLi4xNDA0N2Y0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAt
NzgsOSArNzgsOCBAQCB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzKQogCiB2b2lkIEZpbGVDaG9vc2VyOjpsb2FkSWNvbigpCiB7Ci0g
ICAgbV9pY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKG1fZmlsZW5hbWVzKTsKLSAgICAv
LyBJZiBzeW5jaHJvbm91cyBpY29uIGxvYWRpbmcgZmFpbGVkLCB0cnkgYXN5bmNocm9ub3VzIGxv
YWRpbmcuCi0gICAgaWYgKCFtX2ljb24gJiYgbV9maWxlbmFtZXMuc2l6ZSgpICYmIG1fY2xpZW50
KQorICAgIG1faWNvbiA9IDA7CisgICAgaWYgKG1fZmlsZW5hbWVzLnNpemUoKSAmJiBtX2NsaWVu
dCkKICAgICAgICAgbV9jbGllbnQtPmljb25Gb3JGaWxlcyhtX2ZpbGVuYW1lcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggZTlmMmRjNy4uNDU2ODFmZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgKQEAgLTUxLDkgKzUxLDkgQEAgY2xhc3MgU3RyaW5nOwogICAgIAogY2xh
c3MgSWNvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEljb24+IHsKIHB1YmxpYzoKLSAgICAvLyBEZXBy
ZWNhdGVkLiAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuCi0gICAgLy8gRklYTUU6IFJl
bW92ZSBpdCB3aGVuIGFsbCBpbXBsZW1lbnRhdGlvbnMgYXJlIG1vdmVkIHRvIENocm9tZUNsaWVu
dDo6aWNvbkZvckZpbGVzKCkuCisjaWYgIVBMQVRGT1JNKENocm9taXVtKQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKTsKKyNlbmRpZgogCiAgICAgfkljb24oKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JY29uQ2hyb21pdW1MaW51eC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCAxMzg2MTYzLi4xNmY1NWUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ljb25DaHJvbWl1bUxpbnV4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bUxpbnV4LmNwcApAQCAtNDYsMTIgKzQ2LDYgQEAg
SWNvbjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JY29uQ2hyb21pdW1NYWMuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JY29uQ2hyb21pdW1NYWMuY3BwCmluZGV4
IDIzY2E2OTguLmEyNGFmYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSWNvbkNocm9taXVtTWFjLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bU1hYy5jcHAKQEAgLTM5LDExICszOSw2IEBACiAgCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogSWNv
bjo6fkljb24oKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JY29uQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JY29uQ2hyb21pdW1XaW4uY3BwCmluZGV4IGIwMTQ1ZjguLmU5NThkNGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSWNvbkNocm9taXVtV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1
bVdpbi5jcHAKQEAgLTUyLDEzICs1Miw2IEBAIEljb246On5JY29uKCkKICAgICAgICAgRGVzdHJv
eUljb24obV9pY29uKTsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKLXsKLSAgICAvLyBGSVhNRTog
V2UgY2FuJ3QgYWNjZXNzIGljb25zIGRpcmVjdGx5IGZyb20gcmVuZGVyZXIgcHJvY2Vzc2VzLgot
ICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTQwOTIKLSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDAwM2M4ZC4uN2I0YmNlYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMC0wMy0xOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpj
cmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisKKyAgICAgICAgQ2FsbCBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoKSBmcm9tIGljb25Gb3JGaWxlcygpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKwogMjAxMC0wMy0xNiAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IGM2
M2EwM2IuLjQ5MzQxYjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5j
bHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJ3ZWJraXRnZW9sb2Nh
dGlvbnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgpAQCAtNTcz
LDEwICs1NzQsOSBAQCB2b2lkIENocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFz
c1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiAgICAgZ3RrX3dpZGdldF9kZXN0
cm95KGRpYWxvZyk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2Vy
PikKK3ZvaWQgQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlN0cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gY2hv
b3NlcikKIHsKLSAgICAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSBpbiBJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMoKSBoZXJlLgotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY2hvb3Nlci0+aWNv
bkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCmRpZmYgLS1naXQg
YS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCAy
MTE4YjY3Li41ZWI0Y2UyIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMy0xOCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBv
cHRpb25hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1MDcyCisKKyAgICAgICAgQ2FsbCBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBmcm9tIGlj
b25Gb3JGaWxlcygpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFp
a3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6Omljb25Gb3JGaWxl
cyk6CisKIDIwMTAtMDMtMTYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKaW5kZXggMTcyMTM3ZC4uZWFj
ZjFjNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
SGFpa3UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNp
bmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zNTYsOSArMzU3LDkgQEAgdm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6aWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lk
IENocm9tZUNsaWVudEhhaWt1OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKGZpbGVuYW1lcykpOwogfQogCiBib29sIENocm9tZUNsaWVudEhhaWt1OjpzZXRDdXJzb3Io
UGxhdGZvcm1DdXJzb3JIYW5kbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGQxMGUwODMuLjZmM2FlYjkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTAtMDMtMTggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgb3B0aW9uYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3MgorCisgICAgICAgIENhbGwgSWNvbjo6Y3Jl
YXRlSWNvbkZvckZpbGVzKCkgZnJvbSBpY29uRm9yRmlsZXMoKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
aWNvbkZvckZpbGVzKToKKwogMjAxMC0wMy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggOGQ2NWY0OS4uMWNjN2Uz
NSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAg
LTU2LDYgKzU2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvSWNvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4u
aD4KQEAgLTY0Myw5ICs2NDQsOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIpCiB7Ci0gICAgLy8gRklYTUU6IE1v
dmUgdGhlIGNvZGUgb2YgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgaGVyZS4KKyAgICBjaG9v
c2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0K
IAogS2V5Ym9hcmRVSU1vZGUgV2ViQ2hyb21lQ2xpZW50OjprZXlib2FyZFVJTW9kZSgpCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA3
NTBhZmY5Li42Y2UxZWIxIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMy0xOCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25h
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcy
CisKKyAgICAgICAgQ2FsbCBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBmcm9tIGljb25Gb3JG
aWxlcygpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6Omljb25Gb3JGaWxlcyk6CisKIDIwMTAt
MDMtMTggIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggZDU4ZTVlYi4uOWQxNzNkNSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRRdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtNDcxLDEwICs0NzIsOSBAQCB2b2lkIENocm9tZUNs
aWVudFF0OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2Vy
PiBwcnBGaWxlQwogICAgIH0KIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6aWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIENo
cm9tZUNsaWVudFF0OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICAvLyBGSVhNRTogTW92
ZSB0aGUgY29kZSBvZiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBoZXJlLgotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OnNldEN1cnNvcihQ
bGF0Zm9ybUN1cnNvckhhbmRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZTZhOWNkMC4uOWM1MjRmZiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMC0wMy0xOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisKKyAgICAgICAgQ2FsbCBJY29uOjpjcmVh
dGVJY29uRm9yRmlsZXMoKSBmcm9tIGljb25Gb3JGaWxlcygpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
aWNvbkZvckZpbGVzKToKKwogMjAxMC0wMy0xNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ3ZDIyNzkuLjU3NzU4
NjggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNl
bmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
Y29uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgpAQCAt
NzQ5LDEwICs3NTAsOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1l
KiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZQogICAgIC8vIEZJWE1FOiBT
aG93IHNvbWUgc29ydCBvZiBlcnJvciBpZiB0b28gbWFueSBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5k
IHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLiAgRm9yIG5vdywgdGhpcyB3aWxsIGZhaWwgc2lsZW50
bHkuCiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPikKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0
cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gY2hvb3Nl
cikKIHsKLSAgICAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSBvZiBJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMoKSBoZXJlLgotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY2hvb3Nlci0+aWNvbkxv
YWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUgY3Vyc29yKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXgg
ODg1MGY1Yi4uZGY3MmY2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTggIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgb3B0aW9u
YWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3
MgorCisgICAgICAgIENhbGwgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZnJvbSBpY29uRm9y
RmlsZXMoKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6Omljb25Gb3JGaWxlcyk6CisKIDIwMTAt
MDMtMTYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21l
Q2xpZW50V3guY3BwCmluZGV4IDI0M2Y5N2MuLjU1MTlmOWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVl
c3QuaCIKKyNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBA
IC00NDEsOSArNDQyLDkgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6cnVuT3BlblBhbmVsKEZyYW1l
KiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBDaHJvbWVDbGllbnRXeDo6aWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIENocm9tZUNsaWVudFd4OjppY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4gY2hvb3NlcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNob29zZXItPmljb25M
b2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCiBib29sIENo
cm9tZUNsaWVudFd4OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCi0tIAoxLjYuMy4z
Cgo=
</data>
<flag name="review"
          id="34332"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="34334"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51412</attachid>
            <date>2010-03-23 04:45:34 -0700</date>
            <delta_ts>2010-03-24 02:38:30 -0700</delta_ts>
            <desc>Another approach (rev.2)</desc>
            <filename>0001-icon-api.patch</filename>
            <type>text/plain</type>
            <size>27865</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTk1ZmYxYS4uZjQ0NjIyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wMy0xOCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisK
KyAgICAgICAgcjU0OTIzIG1hZGUgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZGVwcmVjYXRl
ZC4gSG93ZXZlciBtb3ZpbmcKKyAgICAgICAgZXhpc3RpbmcgaWNvbiBsb2FkaW5nIGNvZGUgdG8g
b3V0c2lkZSBvZiBXZWJDb3JlIGlzIG5vdCBnb29kLiAgU28sCisgICAgICAgIHdlIGFzc3VtZToK
KyAgICAgICAgLSBDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcygpLCByZW5hbWVkIGZy
b20gaWNvbkZvckZpbGVzKCksIGlzCisgICAgICAgICAgdGhlIHByaW1hcnkgQVBJIHRvIGxvYWQg
aWNvbnMuCisgICAgICAgIC0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgaXMgYW4gb3B0aW9u
YWwgQVBJIHRvIGhlbHAKKyAgICAgICAgICBpbXBsZW1lbnRpbmcgQ2hyb21lQ2xpZW50OjppY29u
Rm9yRmlsZXMoKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYSBjYWxsIHRvIEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcygpIGZyb20KKyAgICAgICAgRmlsZUNob29zZXI6OmxvYWRJY29u
KCksIGFuZCBDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcygpIG9mCisgICAgICAgIG5v
bi1DaHJvbWl1bSBwb3J0cyBjYWxscyBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKS4KKworICAg
ICAgICAqIFdlYkNvcmUuYmFzZS5leHA6IEV4cG9ydCBGaWxlQ2hvb3Nlcjo6aWNvbkxvYWRlZCgp
LAorICAgICAgICAgIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcygpLCBhbmQgSWNvbjo6fkljb24o
KS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEV4cG9ydCBJ
Y29uLmgKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnQuaDogUmVuYW1lIGljb25Gb3JGaWxl
cygpIHRvIGNob29zZUljb25Gb3JGaWxlcygpLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDog
ZGl0dG8uCisgICAgICAgICogcGFnZS9DaHJvbWUuaDogZGl0dG8uCisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmxvYWRJY29uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6IERlY2xhcmUgY3JlYXRlSWNvbkZvckZpbGVzKCkgaWYg
bm90IENocm9taXVtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25D
aHJvbWl1bUxpbnV4LmNwcDogUmVtb3ZlIGNyZWF0ZUljb25Gb3JGaWxlcygpLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bU1hYy5jcHA6IGRpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bVdpbi5jcHA6
IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6
IFJlbmFtZSBpY29uRm9yRmlsZXMoKSB0byBjaG9vc2VJY29uRm9yRmlsZXMoKS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDogZGl0dG8uCisKIDIwMTAtMDMt
MjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMzY1YWZkNC4uMGE2YjIzNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cApAQCAtMTUxLDYgKzE1MSw3IEBAIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhRVBOU18yM0NhY2hlZEZyYW1lUGxhdGZvcm1ECiBfX1pON1dlYkNv
cmUxMUVkaXRDb21tYW5kN3JlYXBwbHlFdgogX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDd1bmFw
cGx5RXYKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOU182U3RyaW5n
RQorX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlcjEwaWNvbkxvYWRlZEVOM1dURjEwUGFzc1JlZlB0
cklOU180SWNvbkVFRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlcjExY2hvb3NlRmlsZXNFUktO
M1dURjZWZWN0b3JJTlNfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXJE
MUV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFjb21wbGV0ZVVSTEVSS05TXzZTdHJpbmdF
CkBAIC00ODEsNiArNDgyLDggQEAgX19aTjdXZWJDb3JlNEZvbnRDMUVSS05TXzE2Rm9udFBsYXRm
b3JtRGF0YUViCiBfX1pON1dlYkNvcmU0Rm9udEMxRXYKIF9fWk43V2ViQ29yZTRGb250RDFFdgog
X19aTjdXZWJDb3JlNEZvbnRhU0VSS1MwXworX19aTjdXZWJDb3JlNEljb24xOGNyZWF0ZUljb25G
b3JGaWxlc0VSS04zV1RGNlZlY3RvcklOU182U3RyaW5nRUxtMEVFRQorX19aTjdXZWJDb3JlNElj
b25EMUV2CiBfX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmU0S1VS
TEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTRL
VVJMQzFFUDVOU1VSTApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkYjg0ZmM2Li5kOGU2MDQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzc0Myw3ICszNzQzLDcgQEAKIAkJQjI3NTM1NkIwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1M0QwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyNzUzNTZDMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0UwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5j
cHAgKi87IH07CiAJCUIyNzUzNTZEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTNGMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCMjc1MzU2RTBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDAwQjA1
MzgxNDAwMkNFNjRGIC8qIEljb24uaCAqLzsgfTsKKwkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRG
IC8qIEljb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyNzUzNTQwMEIwNTM4MTQwMDJDRTY0RiAvKiBJY29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NkYwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyNzUzNTQxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgKi87IH07CiAJCUIyNzUzNTcw
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NzEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MzBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VT
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCA4YmNlNTI5Li5jYTFjOWMyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1Jl
ZlB0cjxGaWxlQ2hvb3Nlcj4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAppbmRleCBlZmMyYzAwLi40MTc0Njk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNDMwLDkgKzQzMCw5IEBA
IHZvaWQgQ2hyb21lOjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPiBmaWxlQ2hvb3NlcikKICAgICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBm
aWxlQ2hvb3Nlcik7CiB9CiAKLXZvaWQgQ2hyb21lOjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIp
Cit2b2lkIENocm9tZTo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQogewotICAgIG1f
Y2xpZW50LT5pY29uRm9yRmlsZXMoZmlsZW5hbWVzLCBmaWxlQ2hvb3Nlcik7CisgICAgbV9jbGll
bnQtPmNob29zZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMsIGZpbGVDaG9vc2VyKTsKIH0KIAogYm9v
bCBDaHJvbWU6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSBjdXJzb3IpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXgg
M2FkZjI1ZC4uNzIzMTJiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBi
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTM1LDcgKzEzNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9y
RnJhbWUoRnJhbWUqKTsKIAogICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NS
ZWZQdHI8RmlsZUNob29zZXI+KTsKLSAgICAgICAgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CisgICAgICAgIHZvaWQgY2hv
b3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pOwogCiAgICAgICAgIGJvb2wgc2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCmluZGV4IGU0YmM4ZDEuLjgzMTI5MjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTE4OSw4ICsxODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+KSA9IDA7CiAgICAgICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4g
aWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KLSAgICAgICAgLy8gVGhpcyBpcyBjYWxsZWQg
b25seSBpZiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSByZXR1cm5zIDAuCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBQYXNzUmVmUHRy
PEZpbGVDaG9vc2VyPikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKSA9
IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYTJkNDc3MC4uYjBlZjEzYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTc4LDEwICs3OCw5IEBAIHZvaWQgRmlsZUNob29z
ZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAKIHZvaWQg
RmlsZUNob29zZXI6OmxvYWRJY29uKCkKIHsKLSAgICBtX2ljb24gPSBJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMobV9maWxlbmFtZXMpOwotICAgIC8vIElmIHN5bmNocm9ub3VzIGljb24gbG9hZGlu
ZyBmYWlsZWQsIHRyeSBhc3luY2hyb25vdXMgbG9hZGluZy4KLSAgICBpZiAoIW1faWNvbiAmJiBt
X2ZpbGVuYW1lcy5zaXplKCkgJiYgbV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5pY29uRm9y
RmlsZXMobV9maWxlbmFtZXMpOworICAgIG1faWNvbiA9IDA7CisgICAgaWYgKG1fZmlsZW5hbWVz
LnNpemUoKSAmJiBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmNob29zZUljb25Gb3JGaWxl
cyhtX2ZpbGVuYW1lcyk7CiB9CiAKIHZvaWQgRmlsZUNob29zZXI6Omljb25Mb2FkZWQoUGFzc1Jl
ZlB0cjxJY29uPiBpY29uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IGU3ZmViM2UuLjQwMjhk
NDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NNdWx0
aXBsZUZpbGVzKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGFjY2VwdFR5cGVzKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBpY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYpID0gMDsKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpOwogfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAppbmRleCBlOWYyZGM3Li4yN2Q3YzAwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBTdHJpbmc7CiAgICAgCiBjbGFzcyBJ
Y29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogcHVibGljOgotICAgIC8vIERlcHJlY2F0
ZWQuICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4KLSAgICAvLyBGSVhNRTogUmVtb3Zl
IGl0IHdoZW4gYWxsIGltcGxlbWVudGF0aW9ucyBhcmUgbW92ZWQgdG8gQ2hyb21lQ2xpZW50Ojpp
Y29uRm9yRmlsZXMoKS4KKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMpOworI2VuZGlmCiAKICAgICB+SWNvbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bUxpbnV4LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSWNvbkNocm9taXVtTGludXguY3BwCmluZGV4IDEz
ODYxNjMuLjE2ZjU1ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSWNvbkNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSWNvbkNocm9taXVtTGludXguY3BwCkBAIC00NiwxMiArNDYsNiBAQCBJY29u
Ojp+SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bU1hYy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ljb25DaHJvbWl1bU1hYy5jcHAKaW5kZXggMjNj
YTY5OC4uYTI0YWZiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JY29uQ2hyb21pdW1NYWMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSWNvbkNocm9taXVtTWFjLmNwcApAQCAtMzksMTEgKzM5LDYgQEAKICAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQotewotICAgIHJldHVybiAwOwotfQotCiBJY29uOjp+
SWNvbigpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ljb25DaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ljb25DaHJvbWl1bVdpbi5jcHAKaW5kZXggYjAxNDVmOC4uZTk1OGQ0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JY29uQ2hyb21pdW1XaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSWNvbkNocm9taXVtV2lu
LmNwcApAQCAtNTIsMTMgKzUyLDYgQEAgSWNvbjo6fkljb24oKQogICAgICAgICBEZXN0cm95SWNv
bihtX2ljb24pOwogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQotewotICAgIC8vIEZJWE1FOiBXZSBj
YW4ndCBhY2Nlc3MgaWNvbnMgZGlyZWN0bHkgZnJvbSByZW5kZXJlciBwcm9jZXNzZXMuCi0gICAg
Ly8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDA5
MgotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuY3BwCmluZGV4IGEzMTQ0MmEuLjE0ZDEyNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTExNCwxMCArMTE0LDEwIEBAIFN0cmluZyBS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6YWNjZXB0VHlwZXMoKQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKS0+YWNjZXB0KCk7CiB9CiAKLXZvaWQgUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6Omljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKQordm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKENocm9tZSog
Y2hyb21lUG9pbnRlciA9IGNocm9tZSgpKQotICAgICAgICBjaHJvbWVQb2ludGVyLT5pY29uRm9y
RmlsZXMoZmlsZW5hbWVzLCBtX2ZpbGVDaG9vc2VyKTsKKyAgICAgICAgY2hyb21lUG9pbnRlci0+
Y2hvb3NlSWNvbkZvckZpbGVzKGZpbGVuYW1lcywgbV9maWxlQ2hvb3Nlcik7CiB9CiAKIHZvaWQg
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNsaWNrKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IDQ1NDA0MWEuLjk5ZGQzNWMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVwYWludCgpIHsgUmVuZGVyQmxvY2s6OnJlcGFpbnQoKTsgfQog
ICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcygpOwogICAgIFN0cmluZyBhY2NlcHRUeXBlcygp
OwotICAgIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9p
ZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAogICAgIENocm9t
ZSogY2hyb21lKCkgY29uc3Q7CiAgICAgaW50IG1heEZpbGVuYW1lV2lkdGgoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDBjNTA1ZjguLjI3MWVhODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEwLTAzLTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlcygpIG9wdGlvbmFsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNzIKKworICAgICAgICAtIFJlbmFtZSBpY29uRm9yRmls
ZXMoKSB0byBjaG9vc2VJY29uRm9yRmlsZXMoKS4KKyAgICAgICAgLSBDYWxsIEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcygpIGZyb20gY2hvb3NlSWNvbkZvckZpbGVzKCkuCisKKyAgICAgICAgKiBz
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OmNob29zZUljb25Gb3JGaWxlcyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
aDoKKwogMjAxMC0wMy0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKaW5kZXggNmExMTlhYS4uMjA5MDA1MiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBDaHJvbWVD
bGllbnRJbXBsOjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9v
c2VyPiBmaWxlQ2gKICAgICBjaG9vc2VyQ29tcGxldGlvbi0+ZGlkQ2hvb3NlRmlsZShXZWJWZWN0
b3I8V2ViU3RyaW5nPigpKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjppY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZp
bGVDaG9vc2VyPikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hv
b3Nlcj4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmgKaW5kZXggMzhkNmFjYi4uNzI4MTVkMyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpG
cmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7Ci0gICAgdmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNo
b29zZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwog
ICAgIHZpcnR1YWwgYm9vbCBzZXRDdXJzb3IoV2ViQ29yZTo6UGxhdGZvcm1DdXJzb3JIYW5kbGUp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhU
TUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDQ1ODk3MTkuLjY2NjU5NzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMjMgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkg
b3B0aW9uYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNTA3MgorCisgICAgICAgIC0gUmVuYW1lIGljb25Gb3JGaWxlcygpIHRvIGNob29zZUljb25G
b3JGaWxlcygpLgorICAgICAgICAtIENhbGwgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZnJv
bSBjaG9vc2VJY29uRm9yRmlsZXMoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
Lmg6CisKIDIwMTAtMDMtMTggIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50b0BnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggYzYzYTAzYi4uOWYyZmMy
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
Q1N0cmluZy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJY29uLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIndlYmtpdGdlb2xvY2F0aW9ucG9saWN5ZGVj
aXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCkBAIC01NzMsMTAgKzU3NCw5IEBA
IHZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsK
IH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U3RyaW5nPiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KQordm9pZCBDaHJv
bWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5n
PiYgZmlsZW5hbWVzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBjaG9vc2VyKQog
ewotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2RlIGluIEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cygpIGhlcmUuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjaG9vc2VyLT5pY29uTG9hZGVk
KEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAogYm9vbCBDaHJvbWVD
bGllbnQ6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDkwZjJkNDguLjZkNWI0ZDYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTEwLDcgKzEx
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1h
eEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogICAgICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcj4pOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nl
cj4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
Tm9kZSopIHsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZwppbmRleCAyMTE4YjY3Li43MTkxNjBmIDEwMDY0NAotLS0gYS9XZWJL
aXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMC0wMy0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisKKyAgICAgICAgLSBSZW5hbWUgaWNvbkZv
ckZpbGVzKCkgdG8gY2hvb3NlSWNvbkZvckZpbGVzKCkuCisgICAgICAgIC0gQ2FsbCBJY29uOjpj
cmVhdGVJY29uRm9yRmlsZXMoKSBmcm9tIGNob29zZUljb25Gb3JGaWxlcygpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNob29zZUljb25Gb3JGaWxlcyk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wMy0xNiAgWXVyeSBTZW1p
a2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEhhaWt1LmNwcAppbmRleCAxNzIxMzdkLi5hMjlmOGEwIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTM1Niw5
ICszNTcsOSBAQCB2b2lkIENocm9tZUNsaWVudEhhaWt1OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IENocm9tZUNsaWVudEhhaWt1OjppY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPikKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmNob29zZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBQYXNzUmVmUHRyPEZp
bGVDaG9vc2VyPiBjaG9vc2VyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY2hvb3Nl
ci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAK
IGJvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkK
ZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlr
dS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5k
ZXggODM4YTU3OS4uMDM2MmIyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKEZyYW1lKikgeyB9CiAKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPik7Ci0gICAgICAgIHZvaWQgaWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOworICAgICAgICB2b2lkIGNo
b29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+KTsKIAogICAgICAgICBib29sIHNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSk7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggYmZmMDE3OS4uYzY5OTFjOSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMy0y
MyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoKSBvcHRpb25hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1MDcyCisKKyAgICAgICAgLSBSZW5hbWUgaWNvbkZvckZpbGVzKCkgdG8gY2hvb3Nl
SWNvbkZvckZpbGVzKCkuCisgICAgICAgIC0gQ2FsbCBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMo
KSBmcm9tIGNob29zZUljb25Gb3JGaWxlcygpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMpOgor
CiAyMDEwLTAzLTIyICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MzBkMGVlLi4yODdlNmFmIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJh
bWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7Ci0gICAgdmlydHVhbCB2b2lk
IGljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
aWxlQ2hvb3Nlcj4pOwogCiAgICAgdmlydHVhbCBib29sIHNldEN1cnNvcihXZWJDb3JlOjpQbGF0
Zm9ybUN1cnNvckhhbmRsZSkgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA4ZDY1ZjQ5Li4xZDdmYmIyIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysg
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNTYsNiAr
NTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9JY29uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAt
NjQzLDkgKzY0NCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUq
LCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9vc2VyKQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cywgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICAvLyBGSVhNRTogTW92
ZSB0aGUgY29kZSBvZiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBoZXJlLgorICAgIGNob29z
ZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQog
CiBLZXlib2FyZFVJTW9kZSBXZWJDaHJvbWVDbGllbnQ6OmtleWJvYXJkVUlNb2RlKCkKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMy
NjcxYTEuLjAyODQyYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAzLTIzICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcygpIG9wdGlvbmFs
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNzIK
KworICAgICAgICAtIFJlbmFtZSBpY29uRm9yRmlsZXMoKSB0byBjaG9vc2VJY29uRm9yRmlsZXMo
KS4KKyAgICAgICAgLSBDYWxsIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcygpIGZyb20gY2hvb3Nl
SWNvbkZvckZpbGVzKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2hvb3NlSWNvbkZvckZp
bGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCiAyMDEw
LTAzLTIyICBLZW50IEhhbnNlbiAgPGtlbnQuaGFuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKaW5kZXggZDU4ZTVlYi4uODM2ZmQyOSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnRRdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVHJhY2tlci5oIgpAQCAtNDcxLDEwICs0NzIsOSBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojpy
dW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxl
QwogICAgIH0KIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6aWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIENocm9tZUNsaWVu
dFF0OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICAvLyBGSVhNRTogTW92ZSB0
aGUgY29kZSBvZiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBoZXJlLgotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoZmlsZW5hbWVzKSk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OnNldEN1cnNvcihQbGF0
Zm9ybUN1cnNvckhhbmRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmgKaW5kZXggMjc1MTM0Mi4uMmRjNTIyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1Jl
ZlB0cjxGaWxlQ2hvb3Nlcj4pOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOworICAgICAgICB2
aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFz
c1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVE
aWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDAyOWFlNmEuLjFjMDQzY2QgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgb3B0aW9uYWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3MgorCisgICAgICAgIC0gUmVuYW1l
IGljb25Gb3JGaWxlcygpIHRvIGNob29zZUljb25Gb3JGaWxlcygpLgorICAgICAgICAtIENhbGwg
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZnJvbSBjaG9vc2VJY29uRm9yRmlsZXMoKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgICogV2ViQ29yZUxvY2FsaXplZFN0cmluZ3MuY3BwOgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ3
ZDIyNzkuLmYyYTYyNzggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KICNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgpAQCAtNzQ5LDEwICs3NTAsOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3Bl
blBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZQogICAg
IC8vIEZJWE1FOiBTaG93IHNvbWUgc29ydCBvZiBlcnJvciBpZiB0b28gbWFueSBmaWxlcyBhcmUg
c2VsZWN0ZWQgYW5kIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLiAgRm9yIG5vdywgdGhpcyB3aWxs
IGZhaWwgc2lsZW50bHkuCiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVD
aG9vc2VyPikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
aWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSBvZiBJ
Y29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBoZXJlLgotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVz
KSk7CiB9CiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JI
YW5kbGUgY3Vyc29yKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggOGYzYzk4Ni4uNWRmNGRiMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBwYWludEN1c3RvbVNjcm9sbENvcm5lcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7
Ci0gICAgdmlydHVhbCB2b2lkIGljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3Ry
aW5nPiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwogCiAgICAgdmlydHVhbCBib29sIHNldEN1
cnNvcihXZWJDb3JlOjpQbGF0Zm9ybUN1cnNvckhhbmRsZSBjdXJzb3IpOwogCmRpZmYgLS1naXQg
YS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCBiYzZjNmRk
Li44YTI2YmQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMy0yMyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBvcHRpb25hbC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDcyCisKKyAg
ICAgICAgLSBSZW5hbWUgaWNvbkZvckZpbGVzKCkgdG8gY2hvb3NlSWNvbkZvckZpbGVzKCkuCisg
ICAgICAgIC0gQ2FsbCBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoKSBmcm9tIGNob29zZUljb25G
b3JGaWxlcygpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y2hvb3NlSWNvbkZvckZpbGVzKToK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDMtMjAg
IEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4
XSBCdWlsZCBmaXhlcyBhZnRlciByZWNlbnQgY2hhbmdlcywgaW5jbHVkaW5nIG1vdmUgb2Ygc2V0
RGF0YWJhc2VzRW5hYmxlZCBmcm9tIFNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guY3BwCmluZGV4IDI0M2Y5N2MuLjBkOWFiOWIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVz
LmgiCkBAIC00NDEsOSArNDQyLDkgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6cnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBDaHJvbWVDbGllbnRXeDo6aWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIENocm9tZUNsaWVudFd4OjpjaG9v
c2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgUGFzc1JlZlB0
cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNo
b29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwog
fQogCiBib29sIENocm9tZUNsaWVudFd4OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUp
CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oIGIv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCA3MWRhNjNkLi45
MDczNGUyIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAgLTEy
OCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7Ci0gICAgdmlydHVhbCB2b2lk
IGljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCiAgICAgdmlydHVhbCB2b2lkIGZv
cm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CiAKLS0gCjEuNy4wLjIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>