<?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>169199</bug_id>
          
          <creation_ts>2017-03-06 05:36:41 -0800</creation_ts>
          <short_desc>ImageDecoder can be deleted while the async decoder thread is still using it</short_desc>
          <delta_ts>2017-03-13 17:04:50 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=167304</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=169576</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>agomez</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>magomez</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1283740</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-06 05:36:41 -0800</bug_when>
    <thetext>As explained by Miguel in bug #167304

&quot;* The second crash affects multiplatform code, and it happens because the decoder being used in the decoding thread can be deleted while there&apos;s still decoding happening.
The decoder is a unique_ptr stored in ImageSource, and that class is the one that sets it to ImageFrameCache, which is the one using it (it&apos;s stored as a simple pointer in ImageFrameCache).
When ImageSource::clear() gets called, it sets the ImageFrameCache decoder to null, without ensuring somehow that it&apos;s not being used at that point by the decoding thread, and this causes the crash.

I see 2 ways to fix this:

* Using a lock to ensure that ImageFrameCache::stopAsyncDecodingQueue() doesn&apos;t return until the decoding thread has stopped processing the requested frames. That function gets called before ImageSource::clear() and its mission is to stop the decoding in the secondary thread, but currently it&apos;s possible that there&apos;s a frame being decoded when that function returns. If we add a lock there and in the function that performs the decoding in the secondary thread, we can be sure that there&apos;s no decoding happening and we can delete the decoder safely. I&apos;ve tested this fix and it seems to work properly.

* Another option is to turn the decoder into a RefPtr inside ImageSource, pass that RefPtr to ImageFrameCache and use it inside the function that performs the decoding in the secondary thread. This way ImageSource can unref the decoder when it wants, but it won&apos;t be destroyed until the decoding thread finishes using it.

Which do you think is the best option?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283813</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-06 10:29:57 -0800</bug_when>
    <thetext>*** Bug 166838 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283815</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-06 10:30:03 -0800</bug_when>
    <thetext>*** Bug 168589 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283817</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-06 10:30:10 -0800</bug_when>
    <thetext>*** Bug 169132 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285271</commentid>
    <comment_count>4</comment_count>
      <attachid>303905</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-09 03:42:56 -0800</bug_when>
    <thetext>Created attachment 303905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285272</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 03:44:59 -0800</bug_when>
    <thetext>Attachment 303905 did not pass style-queue:


ERROR: Source/WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285285</commentid>
    <comment_count>6</comment_count>
      <attachid>303909</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-09 05:37:28 -0800</bug_when>
    <thetext>Created attachment 303909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285286</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 05:40:10 -0800</bug_when>
    <thetext>Attachment 303909 did not pass style-queue:


ERROR: Source/WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285334</commentid>
    <comment_count>8</comment_count>
      <attachid>303909</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-03-09 08:50:54 -0800</bug_when>
    <thetext>Comment on attachment 303909
Patch

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

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:263
&gt; -    decodingQueue()-&gt;dispatch([this, protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedQueue)] {
&gt; +    decodingQueue()-&gt;dispatch([this, protectedThis = makeRef(*this), protectedQueue = decodingQueue(), protectedDecoder = m_decoder] {

I was doing something similar to what you are doing here and smfr did not like it, https://bugs.webkit.org/show_bug.cgi?id=155546#c54. I think I agree with him that protecting ref pointers should not be buried inside a function call.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:376
&gt; +        return (m_decoder.get()-&gt;*functor)();

It can also be written like this:
    return (*m_decoder.*functor)();

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:378
&gt; +    *cachedValue = (m_decoder.get()-&gt;*functor)();

Ditto.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.h:39
&gt; +#if USE(CG)
&gt; +#include &quot;ImageDecoderCG.h&quot;
&gt; +#elif USE(DIRECT2D)
&gt; +#include &quot;ImageDecoderDirect2D.h&quot;
&gt; +#include &lt;WinCodec.h&gt;
&gt; +#else
&gt; +#include &quot;ImageDecoder.h&quot;
&gt; +#endif
&gt; +

Instead of moving these headers to the header file, you can move the implementation of setDecoder() and decoder() to the source file and just keep the ImageDecoder forward declaration.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.h:66
&gt; +    void setDecoder(RefPtr&lt;ImageDecoder&gt; decoder) { m_decoder = decoder; }

Can&apos;t this be?

    void setDecoder(const RefPtr&lt;ImageDecoder&gt;&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285415</commentid>
    <comment_count>9</comment_count>
      <attachid>303939</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-09 11:29:37 -0800</bug_when>
    <thetext>Created attachment 303939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285416</commentid>
    <comment_count>10</comment_count>
      <attachid>303939</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-09 11:31:54 -0800</bug_when>
    <thetext>Comment on attachment 303939
Patch

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

&gt; Source/WebCore/platform/graphics/ImageFrameCache.h:58
&gt; +    void setDecoder(const RefPtr&lt;ImageDecoder&gt;&amp;);

It doesn&apos;t make sense to pass a const RefPtr. Pass a RefPtr&lt;&gt;&amp;&amp; to transfer ownership, or a ImageDecoder&amp; to just retain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285420</commentid>
    <comment_count>11</comment_count>
      <attachid>303939</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-03-09 11:42:17 -0800</bug_when>
    <thetext>Comment on attachment 303939
Patch

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

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:75
&gt; +    m_decoder = decoder;

This function should look this:

     if (m_decoder == decoder)
           return;
     // Changing the decoder has to stop the decoding thread. The current frame will
     // continue decoding safely because the decoding thread has its own protected
     // copy of the old decoder.
     stopAsyncDecodingQueue();
     m_decoder = decoder;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285461</commentid>
    <comment_count>12</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-09 12:33:24 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 303939 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303939&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageFrameCache.h:58
&gt; &gt; +    void setDecoder(const RefPtr&lt;ImageDecoder&gt;&amp;);
&gt; 
&gt; It doesn&apos;t make sense to pass a const RefPtr. Pass a RefPtr&lt;&gt;&amp;&amp; to transfer
&gt; ownership, or a ImageDecoder&amp; to just retain.

Sorry, I haven&apos;t fully mastered RefPtr yet.
I don&apos;t want to transfer ownership, but the parameter to setDecoder() can be nullptr, so I guess ImageDecoder&amp; is not an option either.
I guess it should just be ImageDecoder* then, and then assign it to the RefPtr inside ImageFrameCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285547</commentid>
    <comment_count>13</comment_count>
      <attachid>303979</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-09 13:35:55 -0800</bug_when>
    <thetext>Created attachment 303979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285550</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 13:37:26 -0800</bug_when>
    <thetext>Attachment 303979 did not pass style-queue:


ERROR: Source/WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287109</commentid>
    <comment_count>15</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-13 01:53:24 -0700</bug_when>
    <thetext>Guys, is this ok now? Should I make any other modification? Thanks for your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287110</commentid>
    <comment_count>16</comment_count>
      <attachid>303979</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-13 02:09:12 -0700</bug_when>
    <thetext>Comment on attachment 303979
Patch

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

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:80
&gt; +    // copy of the old decoder.

I would say reference instead of copy here.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:290
&gt; +    RefPtr&lt;ImageDecoder&gt; protectedDecoder = m_decoder;

We could use a ref for this one too, I guess m_decoder can&apos;t be nullptr at this point, we are using protectedDecoder inside the lambda without any null check.

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:63
&gt; +        // Returns 0 if we can&apos;t sniff a supported type from the provided data (possibly

0 -&gt; nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287126</commentid>
    <comment_count>17</comment_count>
      <attachid>304249</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-03-13 03:29:22 -0700</bug_when>
    <thetext>Created attachment 304249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287127</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 03:34:01 -0700</bug_when>
    <thetext>Attachment 304249 did not pass style-queue:


ERROR: Source/WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287139</commentid>
    <comment_count>19</comment_count>
      <attachid>304249</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 05:01:05 -0700</bug_when>
    <thetext>Comment on attachment 304249
Patch

Clearing flags on attachment: 304249

Committed r213833: &lt;http://trac.webkit.org/changeset/213833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287140</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 05:01:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287179</commentid>
    <comment_count>21</comment_count>
      <attachid>304249</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-03-13 09:01:25 -0700</bug_when>
    <thetext>Comment on attachment 304249
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests.

I think you need to add a new test. You can add an internal API which forces the ImageDecoder to be deleted. A function like this needs to be called from an internal API.

void BitmapImage::clearDecoder()
{
    m_source.clear(data());
}

And then a new frame is requested. Without your patch this scenario should crash. To expose a BitmapImage function through Internals, you may look at Internals::imageFrameIndex(). And to write a test for animated images, you may look fast/images/animated-image-loop-count.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287368</commentid>
    <comment_count>22</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 15:07:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/30888034&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287370</commentid>
    <comment_count>23</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 15:08:09 -0700</bug_when>
    <thetext>Can we file a new bug to track the need for a test for this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287429</commentid>
    <comment_count>24</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-03-13 17:04:50 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Can we file a new bug to track the need for a test for this patch?

https://bugs.webkit.org/show_bug.cgi?id=169576.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303905</attachid>
            <date>2017-03-09 03:42:56 -0800</date>
            <delta_ts>2017-03-09 05:37:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169199-20170309124254.patch</filename>
            <type>text/plain</type>
            <size>12790</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJjY2QxNDA3ZGZlMjFh
ZmYxNjE2Zjg0NjczYWExZDkxYTUxZjE0Mi4uOGMyYTNlMzk4ZWIyYzFkNjZjZmIzM2Y1Y2Q5OGQz
N2ViNTA2YTQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAzLTA5ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1hZ2VEZWNvZGVyIGNh
biBiZSBkZWxldGVkIHdoaWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2lu
ZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgaW1hZ2UgZGVjb2RlciB1c2VkIGJ5IEltYWdlU291cmNlIGFuZCBJbWFnZUZyYW1lQ2Fj
aGUgaW50byBhIFJlZlB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGFuZCB1bmlxdWVfcHRyLCBhbmQg
cGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVjb2RlciB0aHJlYWQuIFRoaXMgZW5zdXJlcyB0aGF0
IHRoZSBkZWNvZGVyCisgICAgICAgIHdpbGwgc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBkZWNv
ZGluZyB0aHJlYWQgaXMgcHJvY2Vzc2luZyBmcmFtZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lQ2FjaGU6OnNldERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUNhY2hlOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2
YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTct
MDMtMDggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9k
ZXJuIE1lZGlhIENvbnRyb2xzXSBpT1M6IExpdmUgQnJvYWRjYXN0IHZpZGVvIHNob3dzIHNjcnVi
YmVyIHdpdGggMDA6MDAgZHVyYXRpb24gdW50aWwgcGF1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCA1NWI4Yjlm
YzUxNGU0MzFiMjJiMmNmYjYwZWJjMzMyYzMzNmM5MDg4Li42YzY2MmQ2NzVmMWUwN2FkNThhNGNj
ZTg2M2M5MGM3Mzk4MTYyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAgLTI2OCwxNiArMjY4LDEzIEBAIHZvaWQg
SW1hZ2VGcmFtZUNhY2hlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAKICAgICBtX2ZyYW1l
UmVxdWVzdFF1ZXVlLm9wZW4oKTsKIAotICAgIFJlZjxJbWFnZUZyYW1lQ2FjaGU+IHByb3RlY3Rl
ZFRoaXMgPSBSZWY8SW1hZ2VGcmFtZUNhY2hlPigqdGhpcyk7Ci0gICAgUmVmPFdvcmtRdWV1ZT4g
cHJvdGVjdGVkUXVldWUgPSBkZWNvZGluZ1F1ZXVlKCk7Ci0KICAgICAvLyBXZSBuZWVkIHRvIHBy
b3RlY3QgdGhpcyBhbmQgbV9kZWNvZGluZ1F1ZXVlIGZyb20gYmVpbmcgZGVsZXRlZCB3aGlsZSB3
ZSBhcmUgaW4gdGhlIGRlY29kaW5nIGxvb3AuCi0gICAgZGVjb2RpbmdRdWV1ZSgpLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHByb3RlY3Rl
ZFF1ZXVlID0gV1RGTW92ZShwcm90ZWN0ZWRRdWV1ZSldIHsKKyAgICBkZWNvZGluZ1F1ZXVlKCkt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb3RlY3Rl
ZFF1ZXVlID0gZGVjb2RpbmdRdWV1ZSgpLCBwcm90ZWN0ZWREZWNvZGVyID0gbV9kZWNvZGVyXSB7
CiAgICAgICAgIEltYWdlRnJhbWVSZXF1ZXN0IGZyYW1lUmVxdWVzdDsKIAogICAgICAgICB3aGls
ZSAobV9mcmFtZVJlcXVlc3RRdWV1ZS5kZXF1ZXVlKGZyYW1lUmVxdWVzdCkpIHsKICAgICAgICAg
ICAgIC8vIEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4K
LSAgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gbV9kZWNvZGVyLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJz
YW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3Quc2l6ZUZvckRyYXdpbmcpOworICAgICAgICAgICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBwcm90ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGlu
Z0xldmVsLCBmcmFtZVJlcXVlc3Quc2l6ZUZvckRyYXdpbmcpOwogCiAgICAgICAgICAgICAvLyBV
cGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIG1haW4gdGhyZWFkIHRvIGF2b2lkIHVwZGF0
aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50IHRocmVhZC4KICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFF1ZXVlID0gcHJvdGVjdGVkUXVldWUu
Y29weVJlZigpLCBuYXRpdmVJbWFnZSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKQEAgLTM4
NSw5ICszODIsOSBAQCBUIEltYWdlRnJhbWVDYWNoZTo6bWV0YWRhdGEoY29uc3QgVCYgZGVmYXVs
dFZhbHVlLCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZQogICAgICAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOwogCiAgICAgaWYgKCFjYWNoZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIChtX2Rl
Y29kZXItPipmdW5jdG9yKSgpOworICAgICAgICByZXR1cm4gKG1fZGVjb2Rlci5nZXQoKS0+KmZ1
bmN0b3IpKCk7CiAKLSAgICAqY2FjaGVkVmFsdWUgPSAobV9kZWNvZGVyLT4qZnVuY3RvcikoKTsK
KyAgICAqY2FjaGVkVmFsdWUgPSAobV9kZWNvZGVyLmdldCgpLT4qZnVuY3RvcikoKTsKICAgICBk
aWREZWNvZGVQcm9wZXJ0aWVzKG1fZGVjb2Rlci0+Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkpOwogICAgIHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKaW5kZXgg
ZGNkYWJmZTdkYzZlNzYwNzlmMTcwNzJiOWU1ODMyMzM5YTU2NGY1YS4uYjkzYzljMmU1NTQwODFl
NzViNWYxZjYyNTRhODhjNjkwN2YxN2MyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJJbWFnZUZy
YW1lLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCkBAIC0zOCw3ICszOSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7Ci1j
bGFzcyBJbWFnZURlY29kZXI7CiAKIGNsYXNzIEltYWdlRnJhbWVDYWNoZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEltYWdlRnJhbWVDYWNoZT4gewogICAgIGZyaWVuZCBjbGFzcyBJbWFnZVNvdXJjZTsK
QEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogCiAgICAgfkltYWdlRnJhbWVDYWNoZSgpOwogCi0g
ICAgdm9pZCBzZXREZWNvZGVyKEltYWdlRGVjb2RlciogZGVjb2RlcikgeyBtX2RlY29kZXIgPSBk
ZWNvZGVyOyB9Ci0gICAgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWNvZGVyOyB9CisgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxJbWFnZURlY29kZXI+IGRlY29k
ZXIpIHsgbV9kZWNvZGVyID0gZGVjb2RlcjsgfQorICAgIFJlZlB0cjxJbWFnZURlY29kZXI+IGRl
Y29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KIAogICAgIHVuc2lnbmVkIGRlY29k
ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQogICAgIHZvaWQgZGVzdHJv
eUFsbERlY29kZWREYXRhKCkgeyBkZXN0cm95RGVjb2RlZERhdGEoZnJhbWVDb3VudCgpLCBmcmFt
ZUNvdW50KCkpOyB9CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbWFn
ZUZyYW1lJiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4mIHNpemVGb3JEcmF3aW5nID0geyB9KTsKIAogICAgIElt
YWdlKiBtX2ltYWdlIHsgbnVsbHB0ciB9OwotICAgIEltYWdlRGVjb2RlciogbV9kZWNvZGVyIHsg
bnVsbHB0ciB9OworICAgIFJlZlB0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICB1bnNp
Z25lZCBtX2RlY29kZWRTaXplIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fZGVjb2RlZFByb3BlcnRp
ZXNTaXplIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKaW5kZXggNjg4YThjNzI3MzA3OGU0OTcyOGEwNzA3MDQ4OWM0MDk5MzRk
MDkwNS4uNDllZjBmNDEyNzU4MDdhZWE2MmQzMmJjN2FhNGQ1OTkzODExNzcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtODQs
NyArODQsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ2FjaGUtPnNldERlY29kZXIobV9kZWNvZGVyLmdl
dCgpKTsKKyAgICBtX2ZyYW1lQ2FjaGUtPnNldERlY29kZXIobV9kZWNvZGVyKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKaW5kZXggNTJiZGIyYmEwMTY5MTM1YmQ3ZTM5Y2JlODc0YzIwY2QyMzJkODg3Mi4u
NDBhYmYxNzEzNTI2YmQ2NmE0MzQ3ZGZlNTU0Zjc3OGVjOGM0MzY5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlY29kZXJUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBo
aWNzQ29udGV4dCopOwogCiAgICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gbV9mcmFtZUNhY2hlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8
SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDVmZmNkOWUy
OTFkOTgwYWQ0NDQ0OTRmMWU3MzA2MmQ4OWI1YTYzYmEuLmMwMDcxYTRkOGJmYzhmMjVlYWQ0ZmYw
ZDQ5MTg4NThhMjQ0NjNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSW1hZ2VEZWNvZGVyIHsKK2NsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGlj
IFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFn
ZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgK
aW5kZXggNjRhZGQwYmE4NGQxMTNmYjBkMzljMmY3NDJjMThhODk0ZTE0YjI5Yy4uMzAxZmZhZDBi
MmRmZWFkNTZiOGE3ZjM0ZWEzOTQ1OTMzMWRjNjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgK
QEAgLTM2LDE0ICszNiwxNCBAQCBpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlRGVjb2RlciB7CitjbGFzcyBJbWFnZURlY29k
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMg
UmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VEZWNvZGVyKCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzRlNjYw
NGE3YTQ0YzJjMjRlZTEwNzE1OGIyY2E0MTg4MTFhNDZjZC4uYWQ2ZTQwMjk4YTIxMGZkZTg5MDVl
YzI5YzIwYzQwMjkzYTU3NzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJv
b2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RT
aWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250
ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpAQCAtMTA1LDI0ICsxMDUsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
bWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VEZWNvZGVyPihh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pKTsKIAogICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRlbnRz
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IHsgc3RkOjpt
YWtlX3VuaXF1ZTxQTkdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNv
ZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogCiAgICAgaWYg
KG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWduYXR1cmUoY29u
dGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBz
dGQ6Om1ha2VfdW5pcXVlPElDT0ltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFn
ZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAKICAg
ICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZURl
Y29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogI2lmIFVTRShXRUJQKQogICAgIGlmIChtYXRj
aGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8V0VCUEltYWdlRGVjb2Rlcj4oYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogI2VuZGlmCiAKICAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShj
b250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7
IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJNUElt
YWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA2MzAyMTMwYmE2ZWZmNzZjNTJk
NDI0MjQwYWI4YjNiYWEyZmYwZjg2Li4xZjhiNjU1NjY5NTg0NTg1N2IyMmNkNjA0Y2Q4ZjVkYzVm
N2U2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgYWxsb3dzIGltYWdl
IGRlY29kZXJzIHRvIGRvd25zYW1wbGUKICAgICAvLyBhdCBkZWNvZGUgdGltZS4gIEltYWdlIGRl
Y29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCiAgICAgLy8gfG1f
bWF4TnVtUGl4ZWxzfC4gIEZJWE1FOiBOb3QgeWV0IHN1cHBvcnRlZCBieSBhbGwgZGVjb2RlcnMu
Ci0gICAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKKyAgICBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgog
ICAgICAgICBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAtNjAsMTAgKzYw
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5
cGUuICBSZXR1cm5zIDAgaWYKLSAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQg
dHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQorICAgICAgICAvLyBSZXR1cm5z
IDAgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBk
YXRhIChwb3NzaWJseQogICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRh
IHlldCkuCi0gICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0ID0gMDsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303909</attachid>
            <date>2017-03-09 05:37:28 -0800</date>
            <delta_ts>2017-03-09 11:29:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169199-20170309143726.patch</filename>
            <type>text/plain</type>
            <size>13330</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJjY2QxNDA3ZGZlMjFh
ZmYxNjE2Zjg0NjczYWExZDkxYTUxZjE0Mi4uOGMyYTNlMzk4ZWIyYzFkNjZjZmIzM2Y1Y2Q5OGQz
N2ViNTA2YTQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAzLTA5ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1hZ2VEZWNvZGVyIGNh
biBiZSBkZWxldGVkIHdoaWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2lu
ZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgaW1hZ2UgZGVjb2RlciB1c2VkIGJ5IEltYWdlU291cmNlIGFuZCBJbWFnZUZyYW1lQ2Fj
aGUgaW50byBhIFJlZlB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGFuZCB1bmlxdWVfcHRyLCBhbmQg
cGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVjb2RlciB0aHJlYWQuIFRoaXMgZW5zdXJlcyB0aGF0
IHRoZSBkZWNvZGVyCisgICAgICAgIHdpbGwgc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBkZWNv
ZGluZyB0aHJlYWQgaXMgcHJvY2Vzc2luZyBmcmFtZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lQ2FjaGU6OnNldERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUNhY2hlOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2
YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTct
MDMtMDggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9k
ZXJuIE1lZGlhIENvbnRyb2xzXSBpT1M6IExpdmUgQnJvYWRjYXN0IHZpZGVvIHNob3dzIHNjcnVi
YmVyIHdpdGggMDA6MDAgZHVyYXRpb24gdW50aWwgcGF1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCA1NWI4Yjlm
YzUxNGU0MzFiMjJiMmNmYjYwZWJjMzMyYzMzNmM5MDg4Li5kNjA4ZGRlMWMwMjJkMGRlOWVjMTFh
ZmQ3OWE5MGMxMmRhOTNmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAgLTI5LDE1ICsyOSw2IEBACiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAKLSNpZiBVU0UoQ0cpCi0j
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRl
ICJJbWFnZURlY29kZXJEaXJlY3QyRC5oIgotI2luY2x1ZGUgPFdpbkNvZGVjLmg+Ci0jZWxzZQot
I2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCi0KICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC0yNjgsMTYgKzI1OSwxMyBAQCB2b2lkIEltYWdlRnJhbWVDYWNoZTo6
c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogCiAgICAgbV9mcmFtZVJlcXVlc3RRdWV1ZS5vcGVu
KCk7CiAKLSAgICBSZWY8SW1hZ2VGcmFtZUNhY2hlPiBwcm90ZWN0ZWRUaGlzID0gUmVmPEltYWdl
RnJhbWVDYWNoZT4oKnRoaXMpOwotICAgIFJlZjxXb3JrUXVldWU+IHByb3RlY3RlZFF1ZXVlID0g
ZGVjb2RpbmdRdWV1ZSgpOwotCiAgICAgLy8gV2UgbmVlZCB0byBwcm90ZWN0IHRoaXMgYW5kIG1f
ZGVjb2RpbmdRdWV1ZSBmcm9tIGJlaW5nIGRlbGV0ZWQgd2hpbGUgd2UgYXJlIGluIHRoZSBkZWNv
ZGluZyBsb29wLgotICAgIGRlY29kaW5nUXVldWUoKS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBwcm90ZWN0ZWRRdWV1ZSA9IFdURk1vdmUo
cHJvdGVjdGVkUXVldWUpXSB7CisgICAgZGVjb2RpbmdRdWV1ZSgpLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRRdWV1ZSA9IGRlY29kaW5n
UXVldWUoKSwgcHJvdGVjdGVkRGVjb2RlciA9IG1fZGVjb2Rlcl0gewogICAgICAgICBJbWFnZUZy
YW1lUmVxdWVzdCBmcmFtZVJlcXVlc3Q7CiAKICAgICAgICAgd2hpbGUgKG1fZnJhbWVSZXF1ZXN0
UXVldWUuZGVxdWV1ZShmcmFtZVJlcXVlc3QpKSB7CiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAgICAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJh
bWVSZXF1ZXN0LnNpemVGb3JEcmF3aW5nKTsKKyAgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJh
bWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1
ZXN0LnNpemVGb3JEcmF3aW5nKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQg
ZnJhbWVzIG9uIHRoZSBtYWluIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2Fj
aGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRRdWV1ZSA9IHByb3RlY3RlZFF1ZXVlLmNvcHlSZWYoKSwgbmF0aXZl
SW1hZ2UsIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CkBAIC0zODUsOSArMzczLDkgQEAgVCBJ
bWFnZUZyYW1lQ2FjaGU6Om1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgc3RkOjpvcHRp
b25hbDxUPiogY2FjaGVkVmFsdWUKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIAogICAg
IGlmICghY2FjaGVkVmFsdWUpCi0gICAgICAgIHJldHVybiAobV9kZWNvZGVyLT4qZnVuY3Rvciko
KTsKKyAgICAgICAgcmV0dXJuIChtX2RlY29kZXIuZ2V0KCktPipmdW5jdG9yKSgpOwogCi0gICAg
KmNhY2hlZFZhbHVlID0gKG1fZGVjb2Rlci0+KmZ1bmN0b3IpKCk7CisgICAgKmNhY2hlZFZhbHVl
ID0gKG1fZGVjb2Rlci5nZXQoKS0+KmZ1bmN0b3IpKCk7CiAgICAgZGlkRGVjb2RlUHJvcGVydGll
cyhtX2RlY29kZXItPmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpKTsKICAgICBy
ZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCmluZGV4IGRjZGFiZmU3ZGM2ZTc2MDc5
ZjE3MDcyYjllNTgzMjMzOWE1NjRmNWEuLmIxYTEyMTc0MThmZjM0NmFjNDBiY2YxMzM1ZTdmYTdk
YjIzMWE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCkBAIC0yOCw2ICsyOCwxNSBAQAogI2luY2x1ZGUgIkltYWdlRnJhbWUu
aCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyQ0cuaCIKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZURlY29k
ZXJEaXJlY3QyRC5oIgorI2luY2x1ZGUgPFdpbkNvZGVjLmg+CisjZWxzZQorI2luY2x1ZGUgIklt
YWdlRGVjb2Rlci5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TeW5jaHJvbml6ZWRGaXhlZFF1ZXVl
Lmg+CkBAIC0zOCw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBJbWFnZURlY29kZXI7CiAKIGNsYXNzIElt
YWdlRnJhbWVDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVDYWNoZT4gewogICAg
IGZyaWVuZCBjbGFzcyBJbWFnZVNvdXJjZTsKQEAgLTU1LDggKzYzLDggQEAgcHVibGljOgogCiAg
ICAgfkltYWdlRnJhbWVDYWNoZSgpOwogCi0gICAgdm9pZCBzZXREZWNvZGVyKEltYWdlRGVjb2Rl
ciogZGVjb2RlcikgeyBtX2RlY29kZXIgPSBkZWNvZGVyOyB9Ci0gICAgSW1hZ2VEZWNvZGVyKiBk
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CisgICAgdm9pZCBzZXREZWNvZGVy
KFJlZlB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIpIHsgbV9kZWNvZGVyID0gZGVjb2RlcjsgfQor
ICAgIFJlZlB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29k
ZXI7IH0KIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNv
ZGVkU2l6ZTsgfQogICAgIHZvaWQgZGVzdHJveUFsbERlY29kZWREYXRhKCkgeyBkZXN0cm95RGVj
b2RlZERhdGEoZnJhbWVDb3VudCgpLCBmcmFtZUNvdW50KCkpOyB9CkBAIC0xMzYsNyArMTQ0LDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBJbWFnZUZyYW1lJiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJz
YW1wbGluZ0xldmVsPiYgPSB7IH0sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4mIHNpemVG
b3JEcmF3aW5nID0geyB9KTsKIAogICAgIEltYWdlKiBtX2ltYWdlIHsgbnVsbHB0ciB9OwotICAg
IEltYWdlRGVjb2RlciogbV9kZWNvZGVyIHsgbnVsbHB0ciB9OworICAgIFJlZlB0cjxJbWFnZURl
Y29kZXI+IG1fZGVjb2RlcjsKICAgICB1bnNpZ25lZCBtX2RlY29kZWRTaXplIHsgMCB9OwogICAg
IHVuc2lnbmVkIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplIHsgMCB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjg4YThjNzI3
MzA3OGU0OTcyOGEwNzA3MDQ4OWM0MDk5MzRkMDkwNS4uNDllZjBmNDEyNzU4MDdhZWE2MmQzMmJj
N2FhNGQ1OTkzODExNzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIEltYWdlU291cmNlOjpl
bnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBpZiAoIWlzRGVj
b2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ2Fj
aGUtPnNldERlY29kZXIobV9kZWNvZGVyLmdldCgpKTsKKyAgICBtX2ZyYW1lQ2FjaGUtPnNldERl
Y29kZXIobV9kZWNvZGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNTJiZGIyYmEwMTY5MTM1
YmQ3ZTM5Y2JlODc0YzIwY2QyMzJkODg3Mi4uNDBhYmYxNzEzNTI2YmQ2NmE0MzQ3ZGZlNTU0Zjc3
OGVjOGM0MzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlY29k
ZXJUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogCiAgICAgUmVmPEltYWdl
RnJhbWVDYWNoZT4gbV9mcmFtZUNhY2hlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29k
ZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2
ZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCmluZGV4IDVmZmNkOWUyOTFkOTgwYWQ0NDQ0OTRmMWU3MzA2MmQ4OWI1YTYz
YmEuLmMwMDcxYTRkOGJmYzhmMjVlYWQ0ZmYwZDQ5MTg4NThhMjQ0NjNjY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApA
QCAtMzUsMTQgKzM1LDE0IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VEZWNvZGVyIHsKK2NsYXNz
IEltYWdlRGVjb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNjRhZGQwYmE4NGQxMTNmYjBkMzljMmY3
NDJjMThhODk0ZTE0YjI5Yy4uMzAxZmZhZDBiMmRmZWFkNTZiOGE3ZjM0ZWEzOTQ1OTMzMWRjNjM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTM2LDE0ICszNiwxNCBAQCBpbnRlcmZhY2Ug
SVdJQ0ltYWdpbmdGYWN0b3J5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdl
RGVjb2RlciB7CitjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURl
Y29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbWFn
ZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggNzRlNjYwNGE3YTQ0YzJjMjRlZTEwNzE1OGIyY2E0MTg4MTFh
NDZjZC4uYWQ2ZTQwMjk4YTIxMGZkZTg5MDVlYzI5YzIwYzQwMjkzYTU3NzMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBj
b250ZW50cykKIAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29k
ZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklG
Rj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVd
OwpAQCAtMTA1LDI0ICsxMDUsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gSW1h
Z2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykp
Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFr
ZV91bmlxdWU8R0lGSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pIH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2Rl
cihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogICAgIGlmICht
YXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZURlY29kZXI+IHsgc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZURlY29kZXI+KGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogCiAgICAgaWYgKG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMp
IHx8IG1hdGNoZXNDVVJTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPElDT0ltYWdlRGVjb2Rl
cj4oYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CiAKICAgICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29u
dGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBz
dGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0lt
YWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAog
I2lmIFVTRShXRUJQKQogICAgIGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0g
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91
bmlxdWU8V0VCUEltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKSB9OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVy
KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogI2VuZGlmCiAKICAg
ICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VEZWNv
ZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJNUEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aAppbmRleCA2MzAyMTMwYmE2ZWZmNzZjNTJkNDI0MjQwYWI4YjNiYWEyZmYwZjg2Li4xZjhiNjU1
NjY5NTg0NTg1N2IyMmNkNjA0Y2Q4ZjVkYzVmN2U2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykgYWxsb3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25zYW1wbGUKICAgICAv
LyBhdCBkZWNvZGUgdGltZS4gIEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1h
Z2VzIGxhcmdlciB0aGFuCiAgICAgLy8gfG1fbWF4TnVtUGl4ZWxzfC4gIEZJWE1FOiBOb3QgeWV0
IHN1cHBvcnRlZCBieSBhbGwgZGVjb2RlcnMuCi0gICAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKKyAg
ICBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQpAQCAtNjAsMTAgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRl
Y29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKLSAgICAgICAgLy8g
d2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChw
b3NzaWJseQorICAgICAgICAvLyBSZXR1cm5zIDAgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0
ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgICAgICAvLyBiZWNh
dXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBzdGF0aWMg
UmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFs
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0ID0gMDsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303939</attachid>
            <date>2017-03-09 11:29:37 -0800</date>
            <delta_ts>2017-03-09 13:35:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169199-20170309202934.patch</filename>
            <type>text/plain</type>
            <size>13249</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1YzgyOWQ1ZTRlNDk1
ODU0MzQ4ZTE4M2ViY2M0NDBlMGEyM2U3OS4uN2ViNDhjNTA5MWVhZjY4MTIwYTkzNTExYjU4OWYy
N2E1ODEzMTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA5ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1hZ2VEZWNvZGVyIGNh
biBiZSBkZWxldGVkIHdoaWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2lu
ZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgaW1hZ2UgZGVjb2RlciB1c2VkIGJ5IEltYWdlU291cmNlIGFuZCBJbWFnZUZyYW1lQ2Fj
aGUgaW50byBhIFJlZlB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGFuZCB1bmlxdWVfcHRyLCBhbmQg
cGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVjb2RlciB0aHJlYWQuIFRoaXMgZW5zdXJlcyB0aGF0
IHRoZSBkZWNvZGVyCisgICAgICAgIHdpbGwgc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBkZWNv
ZGluZyB0aHJlYWQgaXMgcHJvY2Vzc2luZyBmcmFtZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c2V0RGVjb2Rlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUNhY2hlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lQ2FjaGU6Om1ldGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
c2V0RGVjb2Rlcik6IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIHRvIHNvdXJjZSBmaWxlIHNvIHdl
IGNhbiBrZWVwIHRoZSBJbWFnZURlY29kZXIgZm9yd2FyZCBkZWNsYXJhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6ZGVjb2Rlcik6IERlbGV0ZWQuCisgICAgICAgIE1v
dmVkIHRvIHNvdXJjZSBmaWxlIHNvIHdlIGNhbiBrZWVwIHRoZSBJbWFnZURlY29kZXIgZm9yd2Fy
ZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTctMDMtMDkg
IFRvbWFzIFBvcGVsYSAgPHRwb3BlbGFAcmVkaGF0LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XVtNU0VdIEZpeCAnY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVD
YWNoZS5jcHAKaW5kZXggNTViOGI5ZmM1MTRlNDMxYjIyYjJjZmI2MGViYzMzMmMzMzZjOTA4OC4u
YTU4NDFhYTkyZjM3MTc3Y2NmMzhjZjk2YjUxOWMzOTQxYTViYjdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC03
MCw2ICs3MCwxNiBAQCBJbWFnZUZyYW1lQ2FjaGU6On5JbWFnZUZyYW1lQ2FjaGUoKQogICAgIEFT
U0VSVCghaGFzQXN5bmNEZWNvZGluZ1F1ZXVlKCkpOwogfQogCit2b2lkIEltYWdlRnJhbWVDYWNo
ZTo6c2V0RGVjb2Rlcihjb25zdCBSZWZQdHI8SW1hZ2VEZWNvZGVyPiYgZGVjb2RlcikKK3sKKyAg
ICBtX2RlY29kZXIgPSBkZWNvZGVyOworfQorCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZUZy
YW1lQ2FjaGU6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2RlY29kZXI7Cit9CisK
IHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291
bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpCiB7CiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUgPSAw
OwpAQCAtMjcwLDE0ICsyODAsMTUgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnN0YXJ0QXN5bmNE
ZWNvZGluZ1F1ZXVlKCkKIAogICAgIFJlZjxJbWFnZUZyYW1lQ2FjaGU+IHByb3RlY3RlZFRoaXMg
PSBSZWY8SW1hZ2VGcmFtZUNhY2hlPigqdGhpcyk7CiAgICAgUmVmPFdvcmtRdWV1ZT4gcHJvdGVj
dGVkUXVldWUgPSBkZWNvZGluZ1F1ZXVlKCk7CisgICAgUmVmUHRyPEltYWdlRGVjb2Rlcj4gcHJv
dGVjdGVkRGVjb2RlciA9IG1fZGVjb2RlcjsKIAotICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCB0
aGlzIGFuZCBtX2RlY29kaW5nUXVldWUgZnJvbSBiZWluZyBkZWxldGVkIHdoaWxlIHdlIGFyZSBp
biB0aGUgZGVjb2RpbmcgbG9vcC4KLSAgICBkZWNvZGluZ1F1ZXVlKCktPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkUXVldWUg
PSBXVEZNb3ZlKHByb3RlY3RlZFF1ZXVlKV0geworICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCB0
aGlzLCBtX2RlY29kaW5nUXVldWUgYW5kIG1fZGVjb2RlciBmcm9tIGJlaW5nIGRlbGV0ZWQgd2hp
bGUgd2UgYXJlIGluIHRoZSBkZWNvZGluZyBsb29wLgorICAgIGRlY29kaW5nUXVldWUoKS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBwcm90
ZWN0ZWRRdWV1ZSA9IFdURk1vdmUocHJvdGVjdGVkUXVldWUpLCBwcm90ZWN0ZWREZWNvZGVyID0g
V1RGTW92ZShwcm90ZWN0ZWREZWNvZGVyKV0gewogICAgICAgICBJbWFnZUZyYW1lUmVxdWVzdCBm
cmFtZVJlcXVlc3Q7CiAKICAgICAgICAgd2hpbGUgKG1fZnJhbWVSZXF1ZXN0UXVldWUuZGVxdWV1
ZShmcmFtZVJlcXVlc3QpKSB7CiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZyYW1lIE5hdGl2ZUlt
YWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAgICAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1
ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LnNp
emVGb3JEcmF3aW5nKTsKKyAgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0g
cHJvdGVjdGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0Lmlu
ZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LnNpemVGb3JE
cmF3aW5nKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRo
ZSBtYWluIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRp
ZmZlcmVudCB0aHJlYWQuCiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRRdWV1ZSA9IHByb3RlY3RlZFF1ZXVlLmNvcHlSZWYoKSwgbmF0aXZlSW1hZ2UsIGZyYW1l
UmVxdWVzdF0gKCkgbXV0YWJsZSB7CkBAIC0zODUsOSArMzk2LDkgQEAgVCBJbWFnZUZyYW1lQ2Fj
aGU6Om1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgc3RkOjpvcHRpb25hbDxUPiogY2Fj
aGVkVmFsdWUKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIAogICAgIGlmICghY2FjaGVk
VmFsdWUpCi0gICAgICAgIHJldHVybiAobV9kZWNvZGVyLT4qZnVuY3RvcikoKTsKKyAgICAgICAg
cmV0dXJuICgqbV9kZWNvZGVyLipmdW5jdG9yKSgpOwogCi0gICAgKmNhY2hlZFZhbHVlID0gKG1f
ZGVjb2Rlci0+KmZ1bmN0b3IpKCk7CisgICAgKmNhY2hlZFZhbHVlID0gKCptX2RlY29kZXIuKmZ1
bmN0b3IpKCk7CiAgICAgZGlkRGVjb2RlUHJvcGVydGllcyhtX2RlY29kZXItPmJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpKTsKICAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVDYWNoZS5oCmluZGV4IGRjZGFiZmU3ZGM2ZTc2MDc5ZjE3MDcyYjllNTgzMjMzOWE1NjRmNWEu
LmFlZGM2NWVhNTkyNDAxMTgyMjIzNTI2MjYxZWMxYjUyOTU3NGRkMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBAIC01NSw4
ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIH5JbWFnZUZyYW1lQ2FjaGUoKTsKIAotICAgIHZvaWQg
c2V0RGVjb2RlcihJbWFnZURlY29kZXIqIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gZGVjb2Rlcjsg
fQotICAgIEltYWdlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlcjsg
fQorICAgIHZvaWQgc2V0RGVjb2Rlcihjb25zdCBSZWZQdHI8SW1hZ2VEZWNvZGVyPiYpOworICAg
IFJlZlB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGRl
Y29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQogICAgIHZvaWQgZGVz
dHJveUFsbERlY29kZWREYXRhKCkgeyBkZXN0cm95RGVjb2RlZERhdGEoZnJhbWVDb3VudCgpLCBm
cmFtZUNvdW50KCkpOyB9CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJ
bWFnZUZyYW1lJiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6
Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0sIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4mIHNpemVGb3JEcmF3aW5nID0geyB9KTsKIAogICAg
IEltYWdlKiBtX2ltYWdlIHsgbnVsbHB0ciB9OwotICAgIEltYWdlRGVjb2RlciogbV9kZWNvZGVy
IHsgbnVsbHB0ciB9OworICAgIFJlZlB0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICB1
bnNpZ25lZCBtX2RlY29kZWRTaXplIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fZGVjb2RlZFByb3Bl
cnRpZXNTaXplIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjg4YThjNzI3MzA3OGU0OTcyOGEwNzA3MDQ4OWM0MDk5
MzRkMDkwNS4uNDllZjBmNDEyNzU4MDdhZWE2MmQzMmJjN2FhNGQ1OTkzODExNzcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAt
ODQsNyArODQsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ2FjaGUtPnNldERlY29kZXIobV9kZWNvZGVy
LmdldCgpKTsKKyAgICBtX2ZyYW1lQ2FjaGUtPnNldERlY29kZXIobV9kZWNvZGVyKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggNTJiZGIyYmEwMTY5MTM1YmQ3ZTM5Y2JlODc0YzIwY2QyMzJkODg3
Mi4uNDBhYmYxNzEzNTI2YmQ2NmE0MzQ3ZGZlNTU0Zjc3OGVjOGM0MzY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTIsNyArMTEy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlY29kZXJUYXJnZXRDb250ZXh0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCopOwogCiAgICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gbV9mcmFtZUNhY2hl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQ
dHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBs
aW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDVmZmNk
OWUyOTFkOTgwYWQ0NDQ0OTRmMWU3MzA2MmQ4OWI1YTYzYmEuLmMwMDcxYTRkOGJmYzhmMjVlYWQ0
ZmYwZDQ5MTg4NThhMjQ0NjNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSW1hZ2VEZWNvZGVyIHsKK2NsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVf
dCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKaW5kZXggNjRhZGQwYmE4NGQxMTNmYjBkMzljMmY3NDJjMThhODk0ZTE0YjI5Yy4uMzAxZmZh
ZDBiMmRmZWFkNTZiOGE3ZjM0ZWEzOTQ1OTMzMWRjNjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKQEAgLTM2LDE0ICszNiwxNCBAQCBpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlRGVjb2RlciB7CitjbGFzcyBJbWFnZURl
Y29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzRl
NjYwNGE3YTQ0YzJjMjRlZTEwNzE1OGIyY2E0MTg4MTFhNDZjZC4uYWQ2ZTQwMjk4YTIxMGZkZTg5
MDVlYzI5YzIwYzQwMjkzYTU3NzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBA
IGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdl
c3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBj
b250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpAQCAtMTA1LDI0ICsxMDUsMjQgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VEZWNvZGVy
PihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKIAogICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRl
bnRzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IHsgc3Rk
OjptYWtlX3VuaXF1ZTxQTkdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VE
ZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogCiAgICAg
aWYgKG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWduYXR1cmUo
Y29udGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4g
eyBzdGQ6Om1ha2VfdW5pcXVlPElDT0ltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09J
bWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAK
ICAgICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFn
ZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogI2lmIFVTRShXRUJQKQogICAgIGlmICht
YXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8V0VCUEltYWdlRGVjb2Rlcj4o
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikpOwogI2VuZGlmCiAKICAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVy
ZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVy
PiB7IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJN
UEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
IAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA2MzAyMTMwYmE2ZWZmNzZj
NTJkNDI0MjQwYWI4YjNiYWEyZmYwZjg2Li4xZjhiNjU1NjY5NTg0NTg1N2IyMmNkNjA0Y2Q4ZjVk
YzVmN2U2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgYWxsb3dzIGlt
YWdlIGRlY29kZXJzIHRvIGRvd25zYW1wbGUKICAgICAvLyBhdCBkZWNvZGUgdGltZS4gIEltYWdl
IGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCiAgICAgLy8g
fG1fbWF4TnVtUGl4ZWxzfC4gIEZJWE1FOiBOb3QgeWV0IHN1cHBvcnRlZCBieSBhbGwgZGVjb2Rl
cnMuCi0gICAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKKyAgICBjbGFzcyBJbWFnZURlY29kZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgogICAgICAgICBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAtNjAsMTAg
KzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRl
IHR5cGUuICBSZXR1cm5zIDAgaWYKLSAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0
ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQorICAgICAgICAvLyBSZXR1
cm5zIDAgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRl
ZCBkYXRhIChwb3NzaWJseQogICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBk
YXRhIHlldCkuCi0gICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0ID0gMDsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303979</attachid>
            <date>2017-03-09 13:35:55 -0800</date>
            <delta_ts>2017-03-13 03:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169199-20170309223553.patch</filename>
            <type>text/plain</type>
            <size>12913</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1YzgyOWQ1ZTRlNDk1
ODU0MzQ4ZTE4M2ViY2M0NDBlMGEyM2U3OS4uNWRkMWUxM2NjMDg4NTk4MWVmY2I2Mjc3NGIzZGRm
ZmExZDcxNTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTAzLTA5ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1hZ2VEZWNvZGVyIGNh
biBiZSBkZWxldGVkIHdoaWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2lu
ZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgaW1hZ2UgZGVjb2RlciB1c2VkIGJ5IEltYWdlU291cmNlIGFuZCBJbWFnZUZyYW1lQ2Fj
aGUgaW50byBhIFJlZlB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGFuZCB1bmlxdWVfcHRyLCBhbmQg
cGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVjb2RlciB0aHJlYWQuIFRoaXMgZW5zdXJlcyB0aGF0
IHRoZSBkZWNvZGVyCisgICAgICAgIHdpbGwgc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBkZWNv
ZGluZyB0aHJlYWQgaXMgcHJvY2Vzc2luZyBmcmFtZXMuIEFsc28sIHN0b3AgdGhlIGFzeW5jCisg
ICAgICAgIGRlY29kaW5nIHF1ZXVlIGlmIGEgbmV3IGRlY29kZXIgaXMgc2V0IHRvIEltYWdlRnJh
bWVDYWNoZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZUNhY2hlOjpzZXREZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnN0YXJ0QXN5bmNE
ZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6bWV0YWRh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpzZXREZWNvZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgTW92ZWQgdG8gc291cmNlIGZpbGUgc28gd2UgY2FuIGtlZXAgdGhlIEltYWdlRGVjb2Rl
ciBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hl
OjpkZWNvZGVyKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gc291cmNlIGZpbGUgc28gd2Ug
Y2FuIGtlZXAgdGhlIEltYWdlRGVjb2RlciBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorCiAyMDE3LTAzLTA5ICBUb21hcyBQb3BlbGEg
IDx0cG9wZWxhQHJlZGhhdC5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBGaXggJ2Nv
bXBhcmlzb24gYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4
IDU1YjhiOWZjNTE0ZTQzMWIyMmIyY2ZiNjBlYmMzMzJjMzM2YzkwODguLjUxZTFmYzFiMzI5MmFl
ZmUyZTc0Y2NlYWUyODg3OGU1MjZmNjdhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtNzAsNiArNzAsMjMgQEAg
SW1hZ2VGcmFtZUNhY2hlOjp+SW1hZ2VGcmFtZUNhY2hlKCkKICAgICBBU1NFUlQoIWhhc0FzeW5j
RGVjb2RpbmdRdWV1ZSgpKTsKIH0KIAordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnNldERlY29kZXIo
SW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIGlmIChtX2RlY29kZXIgPT0gZGVjb2RlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2hhbmdpbmcgdGhlIGRlY29kZXIgaGFzIHRvIHN0
b3AgdGhlIGRlY29kaW5nIHRocmVhZC4gVGhlIGN1cnJlbnQgZnJhbWUgd2lsbAorICAgIC8vIGNv
bnRpbnVlIGRlY29kaW5nIHNhZmVseSBiZWNhdXNlIHRoZSBkZWNvZGluZyB0aHJlYWQgaGFzIGl0
cyBvd24gcHJvdGVjdGVkCisgICAgLy8gY29weSBvZiB0aGUgb2xkIGRlY29kZXIuCisgICAgc3Rv
cEFzeW5jRGVjb2RpbmdRdWV1ZSgpOworICAgIG1fZGVjb2RlciA9IGRlY29kZXI7Cit9CisKK0lt
YWdlRGVjb2RlciogSW1hZ2VGcmFtZUNhY2hlOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOworfQorCiB2b2lkIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURl
Y29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogewogICAg
IHVuc2lnbmVkIGRlY29kZWRTaXplID0gMDsKQEAgLTI3MCwxNCArMjg3LDE1IEBAIHZvaWQgSW1h
Z2VGcmFtZUNhY2hlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAKICAgICBSZWY8SW1hZ2VG
cmFtZUNhY2hlPiBwcm90ZWN0ZWRUaGlzID0gUmVmPEltYWdlRnJhbWVDYWNoZT4oKnRoaXMpOwog
ICAgIFJlZjxXb3JrUXVldWU+IHByb3RlY3RlZFF1ZXVlID0gZGVjb2RpbmdRdWV1ZSgpOworICAg
IFJlZlB0cjxJbWFnZURlY29kZXI+IHByb3RlY3RlZERlY29kZXIgPSBtX2RlY29kZXI7CiAKLSAg
ICAvLyBXZSBuZWVkIHRvIHByb3RlY3QgdGhpcyBhbmQgbV9kZWNvZGluZ1F1ZXVlIGZyb20gYmVp
bmcgZGVsZXRlZCB3aGlsZSB3ZSBhcmUgaW4gdGhlIGRlY29kaW5nIGxvb3AuCi0gICAgZGVjb2Rp
bmdRdWV1ZSgpLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHByb3RlY3RlZFF1ZXVlID0gV1RGTW92ZShwcm90ZWN0ZWRRdWV1ZSldIHsKKyAg
ICAvLyBXZSBuZWVkIHRvIHByb3RlY3QgdGhpcywgbV9kZWNvZGluZ1F1ZXVlIGFuZCBtX2RlY29k
ZXIgZnJvbSBiZWluZyBkZWxldGVkIHdoaWxlIHdlIGFyZSBpbiB0aGUgZGVjb2RpbmcgbG9vcC4K
KyAgICBkZWNvZGluZ1F1ZXVlKCktPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkUXVldWUgPSBXVEZNb3ZlKHByb3RlY3RlZFF1
ZXVlKSwgcHJvdGVjdGVkRGVjb2RlciA9IFdURk1vdmUocHJvdGVjdGVkRGVjb2RlcildIHsKICAg
ICAgICAgSW1hZ2VGcmFtZVJlcXVlc3QgZnJhbWVSZXF1ZXN0OwogCiAgICAgICAgIHdoaWxlICht
X2ZyYW1lUmVxdWVzdFF1ZXVlLmRlcXVldWUoZnJhbWVSZXF1ZXN0KSkgewogICAgICAgICAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgotICAg
ICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBs
aW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5zaXplRm9yRHJhd2luZyk7CisgICAgICAgICAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2
ZWwsIGZyYW1lUmVxdWVzdC5zaXplRm9yRHJhd2luZyk7CiAKICAgICAgICAgICAgIC8vIFVwZGF0
ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gYXZvaWQgdXBkYXRpbmcg
dGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgogICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkUXVldWUgPSBwcm90ZWN0ZWRRdWV1ZS5jb3B5
UmVmKCksIG5hdGl2ZUltYWdlLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewpAQCAtMzg1LDkg
KzQwMyw5IEBAIFQgSW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFs
dWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlCiAgICAgICAgIHJldHVybiBkZWZhdWx0
VmFsdWU7CiAKICAgICBpZiAoIWNhY2hlZFZhbHVlKQotICAgICAgICByZXR1cm4gKG1fZGVjb2Rl
ci0+KmZ1bmN0b3IpKCk7CisgICAgICAgIHJldHVybiAoKm1fZGVjb2Rlci4qZnVuY3RvcikoKTsK
IAotICAgICpjYWNoZWRWYWx1ZSA9IChtX2RlY29kZXItPipmdW5jdG9yKSgpOworICAgICpjYWNo
ZWRWYWx1ZSA9ICgqbV9kZWNvZGVyLipmdW5jdG9yKSgpOwogICAgIGRpZERlY29kZVByb3BlcnRp
ZXMobV9kZWNvZGVyLT5ieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSk7CiAgICAg
cmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAppbmRleCBkY2RhYmZlN2RjNmU3NjA3
OWYxNzA3MmI5ZTU4MzIzMzlhNTY0ZjVhLi5iZGQ3YmFlOTIzNmNjYzA4OWVjNjlkMGI2NTliNzZj
ZGIwZGM3NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lQ2FjaGUuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAKICAgICB+SW1hZ2VG
cmFtZUNhY2hlKCk7CiAKLSAgICB2b2lkIHNldERlY29kZXIoSW1hZ2VEZWNvZGVyKiBkZWNvZGVy
KSB7IG1fZGVjb2RlciA9IGRlY29kZXI7IH0KLSAgICBJbWFnZURlY29kZXIqIGRlY29kZXIoKSBj
b25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KKyAgICB2b2lkIHNldERlY29kZXIoSW1hZ2VEZWNv
ZGVyKik7CisgICAgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKCkgY29uc3Q7CiAKICAgICB1bnNpZ25l
ZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7IH0KICAgICB2b2lk
IGRlc3Ryb3lBbGxEZWNvZGVkRGF0YSgpIHsgZGVzdHJveURlY29kZWREYXRhKGZyYW1lQ291bnQo
KSwgZnJhbWVDb3VudCgpKTsgfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgSW1hZ2VGcmFtZSYgZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIEltYWdlRnJh
bWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFNpemU+JiBzaXplRm9yRHJhd2luZyA9IHsgfSk7CiAK
ICAgICBJbWFnZSogbV9pbWFnZSB7IG51bGxwdHIgfTsKLSAgICBJbWFnZURlY29kZXIqIG1fZGVj
b2RlciB7IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAg
ICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2RlY29kZWRQ
cm9wZXJ0aWVzU2l6ZSB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKaW5kZXggNTJiZGIyYmEwMTY5MTM1YmQ3ZTM5Y2JlODc0YzIwY2Qy
MzJkODg3Mi4uNDBhYmYxNzEzNTI2YmQ2NmE0MzQ3ZGZlNTU0Zjc3OGVjOGM0MzY5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlY29kZXJUYXJnZXRDb250ZXh0KGNv
bnN0IEdyYXBoaWNzQ29udGV4dCopOwogCiAgICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gbV9mcmFt
ZUNhY2hlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKKyAg
ICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN1
YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4
IDVmZmNkOWUyOTFkOTgwYWQ0NDQ0OTRmMWU3MzA2MmQ4OWI1YTYzYmEuLmMwMDcxYTRkOGJmYzhm
MjVlYWQ0ZmYwZDQ5MTg4NThhMjQ0NjNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzUsMTQgKzM1LDE0IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VEZWNvZGVyIHsKK2NsYXNzIEltYWdlRGVjb2RlciA6IHB1
YmxpYyBSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisg
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmgKaW5kZXggNjRhZGQwYmE4NGQxMTNmYjBkMzljMmY3NDJjMThhODk0ZTE0YjI5Yy4u
MzAxZmZhZDBiMmRmZWFkNTZiOGE3ZjM0ZWEzOTQ1OTMzMWRjNjM1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmgKQEAgLTM2LDE0ICszNiwxNCBAQCBpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlRGVjb2RlciB7CitjbGFzcyBJ
bWFnZURlY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlRGVjb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6
ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggNzRlNjYwNGE3YTQ0YzJjMjRlZTEwNzE1OGIyY2E0MTg4MTFhNDZjZC4uYWQ2ZTQwMjk4YTIx
MGZkZTg5MDVlYzI5YzIwYzQwMjkzYTU3NzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC05Niw3ICs5
Niw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhP
Zkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAg
Y2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpAQCAtMTA1LDI0ICsxMDUs
MjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VE
ZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJl
KGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+
IHsgc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5H
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwog
CiAgICAgaWYgKG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWdu
YXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVj
b2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPElDT0ltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KSk7CiAKICAgICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPEpQ
RUdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikg
fTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogI2lmIFVTRShXRUJQKQogICAg
IGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8V0VCUEltYWdlRGVj
b2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogI2VuZGlmCiAKICAgICBpZiAobWF0Y2hlc0JNUFNp
Z25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VE
ZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJNUEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCA2MzAyMTMwYmE2
ZWZmNzZjNTJkNDI0MjQwYWI4YjNiYWEyZmYwZjg2Li4xZjhiNjU1NjY5NTg0NTg1N2IyMmNkNjA0
Y2Q4ZjVkYzVmN2U2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgYWxs
b3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25zYW1wbGUKICAgICAvLyBhdCBkZWNvZGUgdGltZS4g
IEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCiAg
ICAgLy8gfG1fbWF4TnVtUGl4ZWxzfC4gIEZJWE1FOiBOb3QgeWV0IHN1cHBvcnRlZCBieSBhbGwg
ZGVjb2RlcnMuCi0gICAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKKyAgICBjbGFzcyBJbWFnZURlY29k
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAt
NjAsMTAgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJv
cHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYKLSAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBz
dXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQorICAgICAgICAv
LyBSZXR1cm5zIDAgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBw
cm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVu
b3VnaCBkYXRhIHlldCkuCi0gICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0ID0gMDsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304249</attachid>
            <date>2017-03-13 03:29:22 -0700</date>
            <delta_ts>2017-03-13 05:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169199-20170313112920.patch</filename>
            <type>text/plain</type>
            <size>12892</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM0ZDk0MmM4ZjE5YzQ1
ZjA3NmYyZjZjN2QzN2NmYjhiZDFiYzNmOS4uNmQxZDAwNjE5OTljM2RiNDBjNGEyNWVmZjE2YTUy
NzNiOTc2MzZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTAzLTEzICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1hZ2VEZWNvZGVyIGNh
biBiZSBkZWxldGVkIHdoaWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2lu
ZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAg
ICAgTWFrZSB0aGUgaW1hZ2UgZGVjb2RlciB1c2VkIGJ5IEltYWdlU291cmNlIGFuZCBJbWFnZUZy
YW1lQ2FjaGUgaW50byBhIFJlZlB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGFuZCB1bmlxdWVfcHRy
LCBhbmQgcGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVjb2RlciB0aHJlYWQuIFRoaXMgZW5zdXJl
cyB0aGF0IHRoZSBkZWNvZGVyCisgICAgICAgIHdpbGwgc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRo
ZSBkZWNvZGluZyB0aHJlYWQgaXMgcHJvY2Vzc2luZyBmcmFtZXMuIEFsc28sIHN0b3AgdGhlIGFz
eW5jCisgICAgICAgIGRlY29kaW5nIHF1ZXVlIGlmIGEgbmV3IGRlY29kZXIgaXMgc2V0IHRvIElt
YWdlRnJhbWVDYWNoZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUNhY2hlOjpzZXREZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVD
YWNoZTo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnN0YXJ0
QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
bWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpzZXREZWNvZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgTW92ZWQgdG8gc291cmNlIGZpbGUgc28gd2UgY2FuIGtlZXAgdGhlIEltYWdl
RGVjb2RlciBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZUNhY2hlOjpkZWNvZGVyKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gc291cmNlIGZpbGUg
c28gd2UgY2FuIGtlZXAgdGhlIEltYWdlRGVjb2RlciBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorCiAyMDE3LTAzLTEzICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHUFUgcmVtb3RlIGxheWVyIGhv
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwCmluZGV4IDU1YjhiOWZjNTE0ZTQzMWIyMmIyY2ZiNjBlYmMzMzJjMzM2Yzkw
ODguLjllYjMwZGEwMTQ4YmE1ZDc4NDZlNzQwOTUzYTJmOGNhM2NjMzkzZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApA
QCAtNzAsNiArNzAsMjMgQEAgSW1hZ2VGcmFtZUNhY2hlOjp+SW1hZ2VGcmFtZUNhY2hlKCkKICAg
ICBBU1NFUlQoIWhhc0FzeW5jRGVjb2RpbmdRdWV1ZSgpKTsKIH0KIAordm9pZCBJbWFnZUZyYW1l
Q2FjaGU6OnNldERlY29kZXIoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIGlmIChtX2Rl
Y29kZXIgPT0gZGVjb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2hhbmdpbmcgdGhl
IGRlY29kZXIgaGFzIHRvIHN0b3AgdGhlIGRlY29kaW5nIHRocmVhZC4gVGhlIGN1cnJlbnQgZnJh
bWUgd2lsbAorICAgIC8vIGNvbnRpbnVlIGRlY29kaW5nIHNhZmVseSBiZWNhdXNlIHRoZSBkZWNv
ZGluZyB0aHJlYWQgaGFzIGl0cyBvd24KKyAgICAvLyByZWZlcmVuY2Ugb2YgdGhlIG9sZCBkZWNv
ZGVyLgorICAgIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKTsKKyAgICBtX2RlY29kZXIgPSBkZWNv
ZGVyOworfQorCitJbWFnZURlY29kZXIqIEltYWdlRnJhbWVDYWNoZTo6ZGVjb2RlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsKK30KKwogdm9pZCBJbWFnZUZyYW1lQ2Fj
aGU6OmRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVG
cmFtZSkKIHsKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSA9IDA7CkBAIC0yNzAsMTQgKzI4Nywx
NSBAQCB2b2lkIEltYWdlRnJhbWVDYWNoZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogCiAg
ICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gcHJvdGVjdGVkVGhpcyA9IFJlZjxJbWFnZUZyYW1lQ2Fj
aGU+KCp0aGlzKTsKICAgICBSZWY8V29ya1F1ZXVlPiBwcm90ZWN0ZWRRdWV1ZSA9IGRlY29kaW5n
UXVldWUoKTsKKyAgICBSZWY8SW1hZ2VEZWNvZGVyPiBwcm90ZWN0ZWREZWNvZGVyID0gUmVmPElt
YWdlRGVjb2Rlcj4oKm1fZGVjb2Rlcik7CiAKLSAgICAvLyBXZSBuZWVkIHRvIHByb3RlY3QgdGhp
cyBhbmQgbV9kZWNvZGluZ1F1ZXVlIGZyb20gYmVpbmcgZGVsZXRlZCB3aGlsZSB3ZSBhcmUgaW4g
dGhlIGRlY29kaW5nIGxvb3AuCi0gICAgZGVjb2RpbmdRdWV1ZSgpLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHByb3RlY3RlZFF1ZXVlID0g
V1RGTW92ZShwcm90ZWN0ZWRRdWV1ZSldIHsKKyAgICAvLyBXZSBuZWVkIHRvIHByb3RlY3QgdGhp
cywgbV9kZWNvZGluZ1F1ZXVlIGFuZCBtX2RlY29kZXIgZnJvbSBiZWluZyBkZWxldGVkIHdoaWxl
IHdlIGFyZSBpbiB0aGUgZGVjb2RpbmcgbG9vcC4KKyAgICBkZWNvZGluZ1F1ZXVlKCktPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVj
dGVkUXVldWUgPSBXVEZNb3ZlKHByb3RlY3RlZFF1ZXVlKSwgcHJvdGVjdGVkRGVjb2RlciA9IFdU
Rk1vdmUocHJvdGVjdGVkRGVjb2RlcildIHsKICAgICAgICAgSW1hZ2VGcmFtZVJlcXVlc3QgZnJh
bWVSZXF1ZXN0OwogCiAgICAgICAgIHdoaWxlIChtX2ZyYW1lUmVxdWVzdFF1ZXVlLmRlcXVldWUo
ZnJhbWVSZXF1ZXN0KSkgewogICAgICAgICAgICAgLy8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJbWFn
ZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgotICAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVz
dC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5zaXpl
Rm9yRHJhd2luZyk7CisgICAgICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHBy
b3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRl
eCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5zaXplRm9yRHJh
d2luZyk7CiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUg
bWFpbiB0aHJlYWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZm
ZXJlbnQgdGhyZWFkLgogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkUXVldWUgPSBwcm90ZWN0ZWRRdWV1ZS5jb3B5UmVmKCksIG5hdGl2ZUltYWdlLCBmcmFtZVJl
cXVlc3RdICgpIG11dGFibGUgewpAQCAtMzg1LDkgKzQwMyw5IEBAIFQgSW1hZ2VGcmFtZUNhY2hl
OjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hl
ZFZhbHVlCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAKICAgICBpZiAoIWNhY2hlZFZh
bHVlKQotICAgICAgICByZXR1cm4gKG1fZGVjb2Rlci0+KmZ1bmN0b3IpKCk7CisgICAgICAgIHJl
dHVybiAoKm1fZGVjb2Rlci4qZnVuY3RvcikoKTsKIAotICAgICpjYWNoZWRWYWx1ZSA9IChtX2Rl
Y29kZXItPipmdW5jdG9yKSgpOworICAgICpjYWNoZWRWYWx1ZSA9ICgqbV9kZWNvZGVyLipmdW5j
dG9yKSgpOwogICAgIGRpZERlY29kZVByb3BlcnRpZXMobV9kZWNvZGVyLT5ieXRlc0RlY29kZWRU
b0RldGVybWluZVByb3BlcnRpZXMoKSk7CiAgICAgcmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Q2FjaGUuaAppbmRleCBkY2RhYmZlN2RjNmU3NjA3OWYxNzA3MmI5ZTU4MzIzMzlhNTY0ZjVhLi5i
ZGQ3YmFlOTIzNmNjYzA4OWVjNjlkMGI2NTliNzZjZGIwZGM3NjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaApAQCAtNTUsOCAr
NTUsOCBAQCBwdWJsaWM6CiAKICAgICB+SW1hZ2VGcmFtZUNhY2hlKCk7CiAKLSAgICB2b2lkIHNl
dERlY29kZXIoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IGRlY29kZXI7IH0K
LSAgICBJbWFnZURlY29kZXIqIGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0K
KyAgICB2b2lkIHNldERlY29kZXIoSW1hZ2VEZWNvZGVyKik7CisgICAgSW1hZ2VEZWNvZGVyKiBk
ZWNvZGVyKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2RlZFNpemU7IH0KICAgICB2b2lkIGRlc3Ryb3lBbGxEZWNvZGVkRGF0YSgpIHsg
ZGVzdHJveURlY29kZWREYXRhKGZyYW1lQ291bnQoKSwgZnJhbWVDb3VudCgpKTsgfQpAQCAtMTM2
LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWVBdEluZGV4
Q2FjaGVJZk5lZWRlZChzaXplX3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFNp
emU+JiBzaXplRm9yRHJhd2luZyA9IHsgfSk7CiAKICAgICBJbWFnZSogbV9pbWFnZSB7IG51bGxw
dHIgfTsKLSAgICBJbWFnZURlY29kZXIqIG1fZGVjb2RlciB7IG51bGxwdHIgfTsKKyAgICBSZWZQ
dHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZSB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSB7IDAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNTUx
MDFmN2NjMGE5YjBmNmRlOGUyYTliZDFhYWZiMjg3ZmU4MGVhNi4uYjM0NzM1NjkyZjBiOTc2NWE2
ZWYwOGUxNGRmYTVhNDUzZTIyNWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldERlY29kZXJUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogCiAg
ICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gbV9mcmFtZUNhY2hlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDVmZmNkOWUyOTFkOTgwYWQ0NDQ0OTRmMWU3
MzA2MmQ4OWI1YTYzYmEuLmMwMDcxYTRkOGJmYzhmMjVlYWQ0ZmYwZDQ5MTg4NThhMjQ0NjNjY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZE
YXRhKiBDRkRhdGFSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VEZWNv
ZGVyIHsKK2NsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRGVjb2Rl
cj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEltYWdlRGVj
b2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZm
ZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+
IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZURlY29kZXI+KGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNjRhZGQwYmE4NGQx
MTNmYjBkMzljMmY3NDJjMThhODk0ZTE0YjI5Yy4uMzAxZmZhZDBiMmRmZWFkNTZiOGE3ZjM0ZWEz
OTQ1OTMzMWRjNjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTM2LDE0ICszNiwxNCBA
QCBpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEltYWdlRGVjb2RlciB7CitjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdl
RGVjb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzRlNjYwNGE3YTQ0YzJjMjRlZTEwNzE1
OGIyY2E0MTg4MTFhNDZjZC4uYWQ2ZTQwMjk4YTIxMGZkZTg5MDVlYzI5YzIwYzQwMjkzYTU3NzMz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25h
dHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVy
PiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8g
VG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdl
c3RTaWduYXR1cmVdOwpAQCAtMTA1LDI0ICsxMDUsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
RGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVy
ZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVy
PiB7IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pIH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJ
RkltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
IAogICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IHsgc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFn
ZURlY29kZXI+KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogCiAgICAgaWYgKG1hdGNoZXNJQ09TaWduYXR1
cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPElD
T0ltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB9
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAKICAgICBpZiAobWF0Y2hlc0pQRUdT
aWduYXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
RGVjb2Rlcj4geyBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZURlY29kZXI+KGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKIAogI2lmIFVTRShXRUJQKQogICAgIGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShj
b250ZW50cykpCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7
IHN0ZDo6bWFrZV91bmlxdWU8V0VCUEltYWdlRGVjb2Rlcj4oYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSB9OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQ
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwog
I2VuZGlmCiAKICAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiB7IHN0ZDo6bWFrZV91bmlxdWU8
Qk1QSW1hZ2VEZWNvZGVyPihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
IH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJNUEltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIAogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuaAppbmRleCA2MzAyMTMwYmE2ZWZmNzZjNTJkNDI0MjQwYWI4YjNiYWEyZmYw
Zjg2Li43NTg5ODdjYjk0ZjMyNmY2NDBiYmUzNjQ1NjU2MGJkMmU0NmFmMGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgYWxsb3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25z
YW1wbGUKICAgICAvLyBhdCBkZWNvZGUgdGltZS4gIEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNh
bXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCiAgICAgLy8gfG1fbWF4TnVtUGl4ZWxzfC4gIEZJ
WE1FOiBOb3QgeWV0IHN1cHBvcnRlZCBieSBhbGwgZGVjb2RlcnMuCi0gICAgY2xhc3MgSW1hZ2VE
ZWNvZGVyIHsKKyAgICBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAtNjAsMTAgKzYwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBSZXR1cm5zIGEgY2Fs
bGVyLW93bmVkIGRlY29kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBSZXR1cm5zIDAgaWYK
LSAgICAgICAgLy8gd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92
aWRlZCBkYXRhIChwb3NzaWJseQorICAgICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2Fu
J3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJs
eQogICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAg
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
IAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0ID0gMDsK
ICAgICAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>